Skip to content

0.86.3: prebuilt React.framework calls pre-rename jsi::Runtime signature, but bundled Hermes only exports jsi::IRuntime — crash at launch (Symbol not found) #58561

Closed as not planned

Description

@bryandent

Description

App crashes immediately at launch on iOS/Simulator after upgrading to react-native@0.86.3 (via expo@57.0.23, Expo SDK 57), using the standard CocoaPods + react-native.config prebuilt-binary integration (React-Core-prebuilt / use_frameworks!-less default setup). No app code was touched — this reproduces on a stock Expo SDK 57 bare-workflow project after pod install + a normal Release build.

Crash

Termination Reason: DYLD, [0x4] Symbol missing
Symbol not found: __ZN8facebook3jsi5Array18createWithElementsERNS0_7RuntimeESt16initializer_listINS0_5ValueEE
Referenced from: .../ExampleApp.app/Frameworks/React.framework/React
Expected in:     .../ExampleApp.app/Frameworks/hermesvm.framework/hermesvm

Demangled: facebook::jsi::Array::createWithElements(facebook::jsi::Runtime&, std::initializer_list<facebook::jsi::Value>)

Root cause (confirmed by direct binary inspection, not inferred)

The vendored React.xcframework (from React-Core-prebuilt.podspec, pinned to the react-native package's own version, 0.86.3) references the pre-rename JSI signature taking facebook::jsi::Runtime&.

Every Hermes build CocoaPods can resolve for this exact react-native version — both variants — exports only the renamed signature taking facebook::jsi::IRuntime&:

$ xcrun nm hermesvm.framework/hermesvm | grep createWithElements
0000000000275ef0 T __ZN8facebook3jsi5Array18createWithElementsERNS0_8IRuntimeESt16initializer_listINS0_5ValueEE

Verified against both available hermes-engine builds for this react-native version:

  • V1 (default, RCT_HERMES_V1_ENABLED unset): hermes-engine (250829098.0.17), resolved via hermes-engine.podspec's HERMES_V1_VERSION_NAME (from sdks/hermes-engine/version.properties)
  • Classic (RCT_HERMES_V1_ENABLED=0): hermes-engine (0.17.0), resolved via HERMES_VERSION_NAME

Both export only IRuntime-based symbols — same crash either way. This rules out a Hermes-variant-selection issue; it's a structural mismatch between the two independently-versioned prebuilt binaries (React-Core-prebuilt's React.xcframework and hermes-engine's hermesvm.framework) that react-native@0.86.3 ships together.

Also ruled out: stale Xcode DerivedData (wiped ~/Library/Developer/Xcode/DerivedData/<App>-* between attempts — no change, same crash, same binary UUIDs for React.framework across attempts).

Repro

  1. Fresh Expo SDK 57 bare-workflow app (or any app pinning react-native@0.86.3 via the standard CocoaPods prebuilt-binary integration).
  2. pod install
  3. Build Release config for iphonesimulator, install + launch on a simulator.
  4. App terminates immediately with the symbol-missing crash above.

Environment

  • react-native: 0.86.3
  • expo: 57.0.23 (SDK 57)
  • Xcode: 27.0, iOS 27.0 SDK / simulator runtime
  • hermes-engine: 250829098.0.17 (V1, default) — also reproduced with 0.17.0 (classic, RCT_HERMES_V1_ENABLED=0)
  • Platform: macOS, arm64 (Apple Silicon), iOS Simulator

Expected behavior

React-Core-prebuilt's vendored React.xcframework should be built against, and link cleanly with, whichever Hermes build hermes-engine.podspec resolves for the same react-native release — no missing-symbol crash at launch.

Activity

  1. react-native-bot commented on Sep 16, 2026

    @react-native-bot
    Collaborator

    Warning

    Missing reproducer: We could not detect a reproducible example in your issue report. Reproducers are mandatory and we can accept only one of those as a valid reproducer:


    You can read more about about it on our website: How to report a bug.

  2. bryandent commented on Sep 16, 2026

    @bryandent
    Author

    Correction: this is not a general react-native@0.86.3 defect as originally framed — retracting that claim.

    Built a minimal blank Expo SDK 57 app (create-expo-app + expo prebuild, zero custom code) pinning the identical react-native@0.86.3 / expo@57.0.23 / hermes-engine@250829098.0.17 versions, and it does not crash — launches and renders normally.

    Direct comparison shows the two projects resolve genuinely different React-Core and React-Core-prebuilt binaries (different checksums in Podfile.lock) despite both declaring the same react-native version — so something in our project's specific dependency graph is causing a different prebuilt artifact to be selected/built, not an issue with 0.86.3 generally. Still isolating which dependency causes the divergence (~40 additional pods vs. the blank app — Reanimated/Worklets and a couple of native-module-heavy libraries are the current suspects) before I can say anything more specific.

    Apologies for the noise — will close this out or file something narrower once (if) I find a genuine repro that isn't project-specific.

  3. bryandent commented on Sep 16, 2026

    @bryandent
    Author

    Closing — confirmed this is specific to our project's dependency graph, not a react-native defect. See comment above for the disproof.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Needs: AttentionIssues where the author has responded to feedback.Needs: ReproThis issue could be improved with a clear list of steps to reproduce the issue.

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions