RevenueCat / RevenueCat/react-native-purchases
App crashes on launch with iOS 26 beta + React Native new architecture (TurboModule ObjC exception)
Nobody has claimed this yet.
- Dominant language
- TypeScript
- Stars
- 1.2k
- Forks
- 117
- Avg merge
- 14h 40m
- Merged PRs (30d)
- 40
Description
- I have updated Purchases SDK to the latest version
- I have read the Contribution Guidelines
- I have searched the Community
- I have read docs.revenuecat.com
- I have searched for existing Github issues
Describe the bug
App crashes on every launch when react-native-purchases is installed on iOS 26 beta with React Native new architecture enabled.
-
Environment
- Platform: iOS
- SDK version: react-native-purchases latest
- OS version: iOS 26.3.1 beta (23D771330a)
- Xcode version: 26.4
- React Native version: 0.83 (Expo SDK 55)
- SDK installation: CocoaPods
- How widespread: 100% crash rate on iOS 26 beta devices
-
The native module throws an ObjC exception during TurboModule registration at app startup — before any JavaScript runs.
ObjCTurboModule::performVoidMethodInvocation→convertNSExceptionToJSErrorcorrupts Hermes memory → SIGABRT / SIGSEGV. JS-side try-catch and dynamic imports have no effect since the crash happens at native module registration time, not during JS execution. -
Steps to reproduce:
- Expo SDK 55 / RN 0.83 project with new architecture enabled (cannot disable — required by react-native-reanimated 4.x)
- Install react-native-purchases
- Run on device or simulator with iOS 26 beta
- App crashes immediately on launch every time
Expected: App launches normally
Actual: Immediate crash before first frame renders -
Crash signature:
ObjCTurboModule::performVoidMethodInvocation→objc_exception_rethrow→std::__terminate→SIGABRT
Additional context
New architecture cannot be disabled as react-native-reanimated 4.x calls assert_new_architecture_enabled() at build time. Full crash logs available on request.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Reproduce the Expo SDK 55/RN 0.83 setup with new architecture enabled on iOS 26 beta, then start at native module registration and the reported ObjCTurboModule::performVoidMethodInvocation path. Use the crash signature and full crash logs to identify the failing registration behavior; done means the app launches normally before JavaScript runs.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- ios, react-native, typescript
- Domain
- mobile
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 48/100