Repository navigation
v0.1.0-beta.2 — Skia 3.7.1, safer vsync release
Pre-release
Pre-release
Requires react-native-skia@3.7.1 and react-native-webgpu@0.17.0. Thanks to @AmatoGiulio for contributing.
Install
npm install --save-exact react-native-skia@3.7.1 react-native-webgpu@0.17.0 react-native-reanimated@4.5.3 react-native-worklets@0.11.3
npm install --save-exact react-native-skia-webgpu-video@0.1.0-beta.2
npx --no-install skia-video-patch-canvasAdd the last command to your app's postinstall, then rebuild the native app; see the README. The archive attached here is the same package, installable by URL.
Changes since v0.1.0-beta.1
Send the vsync release through handleMessage, and note two option limits (#17, by @AmatoGiulio)
- Vsync release goes through
handleMessage. It was a posted runnable, which the playback thread runs directly: noreleasingcheck, and an exception crashed the app instead of becoming anerrorevent. It is now aPLAYBACK_VSYNC_RELEASEmessage.vsyncReleasePostedstill coalesces it to one pending message. - Docs.
redrawOnTimesays thatdrawWhenPaused: trueoverrides it.splitImportAndDrawsays that it applies on iOS too.
Move to react-native-skia 3.7.1 (#19)
- react-native-skia 3.7.1. It contains a single upstream fix, iOS only (#4273):
SkiaViewnow presents at the display's full rate on ProMotion devices. WebGPU stays at 0.17.0, with Dawn and Graphite 157.0.0. - Skia patch applied unchanged. The 7 patched files are byte-identical to 3.7.0's, so only the patch's version and file name change (
patches/react-native-skia+3.7.1.patch). Our upstream PRs #4274–#4276 are still open, so the patch can't shrink yet. - Install pins updated in the README,
BUILD_VALIDATION.md,UPSTREAM_NOTES.mdand the example'sPodfile.lock.
Release in one command: npm run ship (#18)
npm run shipdoes a whole release from a cleanmain:- It bumps the version in a
release/vXPR:package.json, the lockfile and the example'sPodfile.lock. - It waits for the Host checks, squash-merges the PR, then runs
release.mjs: tag, GitHub release, npm.
- By default it picks the next prerelease (
0.1.0-beta.1→0.1.0-beta.2). --dry-runprints the version and the notes, and changes nothing.- After a failure, running it again resumes where it stopped.
- It bumps the version in a
- Generated release notes (
scripts/release-notes.mjs,npm run release:notes), in the format of the earlier releases:- install block built from the pinned peers;
- every PR since the previous tag, with the list from its Summary or Changes section and its author;
- the not-yet-qualified list, kept in
.github/release-status.md; - the archive's SHA-256.
release.mjsused to fall back on GitHub's generated notes, which list only titles.
- Title
vX — <summary>(--summary), and a post for X printed after publishing. - Already published: running it again on a fully released version now says so, instead of asking for a bump.
Release 0.1.0-beta.2 (#20)
Version bump for 0.1.0-beta.2. npm run ship merges it once CI passes, then tags and publishes it.
Not yet qualified
- Memory over long sessions (last checked on 3.0.6).
- HDR, audible output and A/V synchronization.
- Two known 4K issues: a lazy composition seek times out in 1 of 3 runs on the Pixel 8a, and three simultaneous 4K clips stop on the video memory budget during iPhone playback.
Full changelog: v0.1.0-beta.1...v0.1.0-beta.2
SHA-256 of the archive: 694ef48ac45ee60b13620ae3f029a30007cf70ebba27fd0a63054abc01a9c034