[Bug]: Stale Worklets transforms crash Android on launch after upgrade
Nobody has claimed this yet.
- Dominant language
- TypeScript
- Stars
- 23k
- Forks
- 5.9k
- Avg merge
- 11h 14m
- Merged PRs (30d)
- 357
Description
Area
apps/mobile / Android release builds
Reproduction
After the Worklets 0.10.1 to 0.11.4 upgrade in #11957, build a standalone Android development-variant release APK while reusing the existing Metro cache, then cold-launch it. Reproduced at 9ea9c3d5d2 on an Android 16 ARM64 emulator; also reported on a physical phone.
Expected: the app opens. Actual: it closes before any screen appears, blocking use.
FATAL EXCEPTION: expo-updates-error-recovery
com.facebook.jni.CppException: Cannot read property 'bind' of undefined
TypeError: Cannot read property 'bind' of undefined
at valueUnpacker (:1:827)
Expo's version lookup stops at Worklets' lib/module/package.json, which contains no version. transformer.workletsVersion becomes null, so upgrading Worklets does not change this cache input. The failing bundle contains older, unparenthesized NitroModules worklet functions that the newer unpacker evaluates to undefined.
Workaround and evidence
Rebuilding the same source with an isolated TMPDIR fixes startup without clearing app data. The reporter confirmed the replacement works on the phone. A regression test also shows identical Expo transform-cache keys across the two Worklets versions until the config reads the version from the root package manifest.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with Expo's version lookup and the Worklets lib/module/package.json file, then inspect how transformer.workletsVersion is read from the root package manifest. Run the regression test mentioned in the report and verify that the two Worklets versions produce different transform-cache keys and that a reused Metro cache no longer causes the Android launch crash.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- android
- Domain
- build-system, mobile
- Issue type
- Bug
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Active
- Clarity
- Mostly clear
- Newbie friendliness
- 65/100