Skip to content

[iOS][New Arch/Bridgeless] RCTFatal crash at launch after applying an update (RN 0.83, Hermes, v10.4.2) #56

Description

@lucascamposj

Thanks for maintaining this fork! Filing a reproducible New-Architecture (bridgeless) crash.

Steps to Reproduce

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

Expected Behavior

The update installs and the app launches normally on the new bundle.

Actual Behavior

On the launch that applies the update, the app aborts immediately with RCTFatal on the JS thread — inside the legacy bridge RCTJSThreadManager, even though the app runs bridgeless. It crashes before JS/monitoring init, so crash reporters never receive it; CodePush then auto-rolls-back on a later launch (matches #28). The bundle itself is valid Hermes bytecode built with the project's toolchain.

```
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)
```

Things that did not fix it:

  • Forcing Hermes bytecode (--hermes on) and splitting bundle + push.
  • Upgrading 10.4.1 → 10.4.2 (incl. the iOS rollback fix in Fix iOS rollback handling #53).

Notable: a different CodePush client applies OTA updates successfully on the same bridgeless RN 0.83 build, so this looks specific to this SDK's bridgeless bundle-load / restart path. Likely related: #28 and #55.

The .crash is stripped of the RCTFatal message string — happy to capture the live Console message if that helps.

Reproducible Demo

Occurs on a production app; can put together a minimal bridgeless RN 0.83 repro on request.

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 (does not apply in debug — CodePush inactive there)
  • 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