RevenueCat in React Native: Sharing One Subscription Layer Across iOS and Android
The entitlement model is identical to any other RevenueCat integration — the same products, offerings, and entitlements we cover in our Flutter guide. What’s different in React Native is everything around it: RevenueCat’s SDK is a native module, and whether that’s a five-minute install or a half-day of tooling changes entirely on whether you’re in Expo’s managed workflow or a bare React Native project.
1. Managed Expo vs. Bare Workflow
The detail that catches teams out: a RevenueCat integration needs native code, which means Expo Go — the pre-built sandbox app most Expo projects start in — can’t run it. You need a development build (Expo’s own tooling for this, or EAS Build) before you can test a single purchase flow. Budget for this explicitly if your team has been living entirely inside Expo Go up to this point.
2. The Setup Sequence
Platform.OS, that’s usually a sign the entitlement model needs revisiting, not the code.Fast Refresh does not reflect native SDK or entitlement changes. After adding or updating the RevenueCat native module, do a full rebuild rather than trusting a hot reload — this is one of the more common sources of “I fixed it but it’s still broken” during setup.
Once the SDK is wired up, the concepts — entitlements, products, offerings, sandbox testing — are the same regardless of framework; see our Flutter integration guide for the full breakdown of that model if you haven’t worked with RevenueCat before.
Wiring up subscriptions in a React Native or Expo app?
Tell us whether you’re managed or bare Expo and we’ll scope the setup around whichever workflow you’re actually in.
