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:]inRCTComponentData 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
- Clean builds: Removed
Pods,Podfile.lock, derived data, and rebuilt - Metro cache: Cleared with
yarn start --reset-cache - Package removal: Removed
react-native-mmkv,react-native-splash-screen, andreact-native-charts-wrapper(suspected legacy module conflicts) - 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=0inios/.xcode.env.local - Verified Android already has
newArchEnabled=falseingradle.properties - Clean rebuild resolved the crash
Questions
- Is disabling the New Architecture the recommended long-term solution for RN 0.77.3?
- Which packages are known to be incompatible with the New Architecture in RN 0.77.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.1react-native: 0.74.5 to 0.77.3@shopify/flash-list: ^1.7.2 to ^1.7.4react-native-gesture-handler: ^2.14.1 to ~2.22.0react-native-mmkv: ^2.10.0 to 2.12.2react-native-reanimated: ^3.15.0 to 3.17.5react-native-safe-area-context: 3.3.2 to ~5.1.0react-native-screens: ^3.34.0 to 4.9.1react-native-svg: ^15.3.0 to ^15.10.1react-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.13jest: ^29.2.1 to ^29.6.3react-test-renderer: 18.2.0 to 18.3.1
Removed Dependency
@react-native-community/datetimepicker