RevenueCat / RevenueCat/react-native-purchases

App crashes on launch with iOS 26 beta + React Native new architecture (TurboModule ObjC exception)

Open
#1,712 4 comments 1 reaction 0 assignees View on GitHub

Nobody has claimed this yet.

bug
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.

  1. Environment

    1. Platform: iOS
    2. SDK version: react-native-purchases latest
    3. OS version: iOS 26.3.1 beta (23D771330a)
    4. Xcode version: 26.4
    5. React Native version: 0.83 (Expo SDK 55)
    6. SDK installation: CocoaPods
    7. How widespread: 100% crash rate on iOS 26 beta devices
  2. The native module throws an ObjC exception during TurboModule registration at app startup — before any JavaScript runs. ObjCTurboModule::performVoidMethodInvocationconvertNSExceptionToJSError corrupts 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.

  3. 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

  4. Crash signature: ObjCTurboModule::performVoidMethodInvocationobjc_exception_rethrowstd::__terminateSIGABRT

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

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.