pingdotgg / pingdotgg/t3code

[Bug]: Stale Worklets transforms crash Android on launch after upgrade

Open
#12,471 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

accepted bug via-triage
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

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.