Skip to content

[Worklets 0.11.0] WorkletRuntime.legacyModeInit crashes on debug-native + Metro dev bundle (jsi::Value::getObject assertion in installUnpacker) #9977

Description

@LeCiel

Description

react-native-worklets@0.11.0 crashes on startup during WorkletRuntime.init on debug-native iOS builds with a Metro-served dev JS bundle. Release builds (EAS release native + release bundle) of the same code run cleanly.

Stack (SIGABRT on the JS thread)

__pthread_kill
pthread_kill
__abort
abort
__assert_rtn
facebook::jsi::Value::getObject(facebook::jsi::Runtime&) &&
worklets::UnpackerLoader::installUnpacker(facebook::jsi::Runtime&, worklets::CodeUnpacker const&)
worklets::UnpackerLoader::installUnpackers(facebook::jsi::Runtime&) const
worklets::WorkletRuntime::legacyModeInit(std::__1::shared_ptr<worklets::UnpackerLoader> const&)
worklets::WorkletRuntime::init(std::__1::shared_ptr<worklets::JSIWorkletsModuleProxy> const&)
worklets::WorkletsModuleProxy::start()
-[WorkletsModule start]

The getObject cast in installUnpacker fires the JSI assertion (in debug builds, __assert_rtn is fatal; in release builds NDEBUG strips it and the same undefined-behavior path silently continues, which is why release doesn't visibly crash).

Build matrix

Build Native JS bundle Result
npx expo run:ios (Xcode debug scheme) debug Metro dev bundle crash
EAS production profile (test) release release bundle runs cleanly
EAS dev-personal profile release release bundle + dev OTA runs cleanly

The last two use react-native-worklets@0.11.0 too — the crash is exclusive to the debug-native + dev-bundle combination.

Environment

react-native 0.85.3
react-native-reanimated 4.5.2
react-native-worklets 0.11.0
react 19.2
Architecture New Architecture (Fabric + TurboModules)
JS engine Hermes
Platform iOS Simulator (iPhone, iOS 26) — also reproduces on device
Build type Debug app + Metro dev bundle
Host macOS 26.5.1, Xcode 16, Apple silicon
Expo SDK 56

Reproduction

  1. Fresh app with react-native-worklets@0.11.0 + react-native-reanimated@4.5.2 (the two are the same pair as our tree).
  2. rm -rf ios node_modules ~/Library/Developer/Xcode/DerivedData/*
  3. npm ci
  4. npx expo prebuild --platform ios --clean
  5. npx expo run:ios
  6. App crashes on launch before any JS user code executes; SIGABRT on com.facebook.react.runtime.JavaScript thread with the stack above.

Metro is attached and shows no JS error — the abort happens in native WorkletsModule start before the JS runtime hands the bundle to any user module.

Known-good

Rolling back to react-native-worklets@0.10.2 + react-native-reanimated@4.5.1 (last peer combination) restores debug-build startup on the same tree.

Adjacent issues

Impact for us

Production users are unaffected (release builds work), but the entire team's local Xcode-based debug cycle is broken — this is what surfaced the report. We've pinned back to 0.10.2 / 4.5.1 as a workaround.

Happy to bisect against 0.11.0 nightlies or test a patch build if useful.

Metadata

Metadata

Assignees

Labels

Missing infoThe user didn't precise the problem enoughMissing reproThis issue need minimum repro scenarioPlatform: iOSThis issue is specific to iOS

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions