Skip to content

[iOS][New Arch/Bridgeless] RCTFatal crash at launch after applying a CodePush update (RN 0.83, Hermes) #1

Description

@lucascamposj

Filing here because this is the Bitrise-maintained fork and we hit this while evaluating Bitrise CodePush. Same issue reported on the sibling @code-push-next repo: codemagic-ci-cd/react-native-code-push#56

Steps to Reproduce

  1. React Native 0.83.4, New Architecture + bridgeless, Hermes, release/TestFlight build. @code-push-next/react-native-code-push (tested 10.4.1 and 10.4.2).
  2. iOS integration per the Bitrise CodePush docs: ReactNativeDelegate.bundleURL() returns CodePush.bundleURL() in the non-DEBUG path (app boots via RCTReactNativeFactory).
  3. Publish a JS-only update to the deployment, relaunch so the client downloads + installs it.

Expected Behavior

Update installs and the app launches on the new bundle.

Actual Behavior

On the launch that applies the update, the app aborts with RCTFatal on the JS thread inside the legacy bridge RCTJSThreadManager, despite the app running bridgeless. It dies before JS/monitoring init; CodePush then auto-rolls-back on the next launch.

```
Exception Type: EXC_CRASH (SIGABRT)
Last Exception Backtrace:
2 React RCTFatal + 568 (RCTAssert.m:147)
3 React __26-[RCTJSThreadManager init]_block_invoke_2 + 56 (RCTJSThreadManager.mm:34)
4 React facebook::react::RCTMessageThread::tryFunc(...)
10 React +[RCTJSThreadManager runRunLoop]
(hermesvm loaded; New Architecture / bridgeless)
```

Did not help: forcing Hermes bytecode (--hermes on), splitting bundle+push, cleaning the output dir, and 10.4.1 → 10.4.2. A different CodePush client applies OTA updates fine on the same bridgeless RN 0.83 build, so this looks specific to this SDK's bridgeless bundle-load/restart path on iOS. Note the New-Arch fixes here so far look Android-focused; is there an equivalent iOS bridgeless bundle-reload path? Likely related: codemagic #28 and #55.

Environment

  • react-native-code-push version: 10.4.2 (also 10.4.1)
  • react-native version: 0.83.4 — New Architecture / bridgeless, Hermes
  • iOS version: 18.7 (physical device, arm64e)
  • Debug or release build? Release
  • Simulator or physical device? Physical device

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions