This gives you in-app subscriptions on both stores through RevenueCat: src/lib/payments.ts implements the shim on react-native-purchases, a PaymentsProvider (order 70) keeps the RevenueCat app user id on the signed-in user and listens for customer-info changes, and /paywall ships as a modal with your feature bullets, the current offering's packages and prices, Buy, the store's renewal terms, "Compare all plans", Restore, and Terms/Privacy links from readynative.config.ts urls. If you set up with --with-examples there's an example at /examples/paywall and jest mocks for both native packages. @/lib/payments keeps the same API whichever option you pick - pick RevenueCat when you want StoreKit and Play Billing handled for you, plus remote paywalls you can edit without shipping an update.
At a glance
- Runs in Expo Go
- No - needs a development build
- Files added
- 9
- npm packages
- 2
- Keys to paste
EXPO_PUBLIC_REVENUECAT_IOS_KEY,EXPO_PUBLIC_REVENUECAT_ANDROID_KEY- Included in
- Pro
Set it up
bun run setup --payments revenuecatSetup copies the module in, installs SDK-matched versions and removes the options you did not pick. Then bun run doctor lists every key still missing, with a link to where you get it. The step-by-step guide is in the RevenueCat docs.
Other payments options
- Adapty - in-app subscriptions + Paywall Builder · dev build required (no Expo Go)
- Stripe Checkout - web checkout via API routes (no native SDK) · Expo Go OK
Get it
RevenueCat ships in Pro: one payment, lifetime updates. See pricing or browse every module.