0

I'm encountering a critical issue after upgrading my React Native app to version 0.77.3. The iOS app builds successfully in Xcode but crashes immediately upon launch. The crash appears to be related to the New Architecture (Fabric renderer) being incompatible with legacy native modules.

Environment

  • React Native: 0.77.3
  • iOS Simulator: iOS 18.x (on macOS 15.x)
  • Xcode: 16.x
  • Metro Bundler: Running locally

Problem Description

After upgrading from a previous React Native version to 0.77.3, the app:

  • ✅ Builds successfully in Xcode
  • ❌ Crashes on launch with EXC_CRASH (SIGABRT)
  • Shows error: -[UIResponder doesNotRecognizeSelector:] in RCTComponentData createPropBlock

The crash occurs during component prop setting in the legacy view manager interop layer.

Crash Log Excerpt

Exception Type:    EXC_CRASH (SIGABRT)
Exception Codes:   0x0000000000000000, 0x0000000000000000
Termination Reason: Namespace SIGNAL, Code 6, Abort trap: 6

Last Exception Backtrace:
0   CoreFoundation                  0x1804c9684 __exceptionPreprocess + 160
1   libobjc.A.dylib                 0x1800937cc objc_exception_throw + 72
2   CoreFoundation                  0x1804deea4 +[NSObject(NSObject) instanceMethodSignatureForSelector:] + 0
3   UIKitCore                       0x185c8acb4 -[UIResponder doesNotRecognizeSelector:] + 232
4   CoreFoundation                  0x1804cd8e8 ___forwarding___ + 1216
5   CoreFoundation                  0x1804cfe2c _CF_forwarding_prep_0 + 92
6   Scouty.debug.dylib              0x1116e9a50 __49-[RCTComponentData createPropBlock:isShadowView:]_block_invoke.44 + 388 (RCTComponentData.mm:327)
...

Full crash log available here (truncated for brevity).

What I've Tried

  1. Clean builds: Removed Pods, Podfile.lock, derived data, and rebuilt
  2. Metro cache: Cleared with yarn start --reset-cache
  3. Package removal: Removed react-native-mmkv, react-native-splash-screen, and react-native-charts-wrapper (suspected legacy module conflicts)
  4. New Architecture: Initially enabled by default in RN 0.77.3

Root Cause & Solution

The issue stems from React Native 0.77.3 enabling the New Architecture (Fabric) by default, which is incompatible with several legacy native modules in the project.

Solution Applied:

  • Disabled New Architecture by setting RCT_NEW_ARCH_ENABLED=0 in ios/.xcode.env.local
  • Verified Android already has newArchEnabled=false in gradle.properties
  • Clean rebuild resolved the crash

Questions

  1. Is disabling the New Architecture the recommended long-term solution for RN 0.77.3?
  2. Which packages are known to be incompatible with the New Architecture in RN 0.77.3?
  3. What's the migration path for enabling New Architecture safely?

Dependencies (Relevant)

  • react-native-mmkv: 2.12.2 (removed during troubleshooting)
  • react-native-reanimated: 3.17.5
  • @shopify/react-native-skia: 1.12.4
  • @react-native-firebase/*: 21.14.0

Any insights or alternative solutions would be greatly appreciated!

Pacakage Changes During RN Update:

Updated Packages (Old Version to New Version)
  • react: 18.2.0 to 18.3.1
  • react-native: 0.74.5 to 0.77.3
  • @shopify/flash-list: ^1.7.2 to ^1.7.4
  • react-native-gesture-handler: ^2.14.1 to ~2.22.0
  • react-native-mmkv: ^2.10.0 to 2.12.2
  • react-native-reanimated: ^3.15.0 to 3.17.5
  • react-native-safe-area-context: 3.3.2 to ~5.1.0
  • react-native-screens: ^3.34.0 to 4.9.1
  • react-native-svg: ^15.3.0 to ^15.10.1
  • react-native-webview: ^13.10.5 to ^13.12.4
DevDependencies Added or Updated (RN 0.77 Migration)
Added:
  • @react-native-community/cli: 16.0.3
  • @react-native-community/cli-platform-android: 16.0.3
  • @react-native-community/cli-platform-ios: 16.0.3
  • @react-native/babel-preset: 0.77.3
  • @react-native/eslint-config: 0.77.3
  • @react-native/metro-config: 0.77.3
  • @react-native/typescript-config: 0.77.3
Updated:
  • @babel/core: ^7.20.0 to ^7.25.2
  • @babel/preset-env: ^7.20.0 to ^7.25.3
  • @babel/runtime: ^7.20.0 to ^7.25.0
  • @types/jest: ^29.4.0 to ^29.5.13
  • jest: ^29.2.1 to ^29.6.3
  • react-test-renderer: 18.2.0 to 18.3.1
Removed Dependency
  • @react-native-community/datetimepicker
1
  • Do all of the plugins you depend on support the new architecture? Because, as you stated, when you turn off the new architecture, there is no issue. Commented 18 hours ago

0

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.