Walkthrough
In-App Purchases
RevenueCat, the only sane way to do IAP cross-platform.
Doing IAP directly with StoreKit and Play Billing is a part-time job. RevenueCat normalizes both behind a single SDK — you ship one purchase flow that works on iOS and Android, with receipt validation, restore, subscription status, and webhooks for free.
Steps · 0 / 4 done
Create products in both stores
Same product IDs on both platforms; configure pricing tiers in ASC and Play Console.
# Product IDs # tipjar.pro.monthly — auto-renewing subscription, $4.99 # tipjar.pro.yearly — auto-renewing subscription, $39.99VerifyProducts appear in ASC under Subscriptions and in Play Console under Monetize → Products.Hook RevenueCat
Install, configure once at app start with your public SDK key.
npx expo install react-native-purchases // app/_layout.tsx import Purchases from 'react-native-purchases'; useEffect(() => { Purchases.configure({ apiKey: process.env.EXPO_PUBLIC_REVENUECAT_KEY! }); }, []);VerifyRevenueCat dashboard shows the install firing on first app launch.Show paywall + purchase
Fetch offerings, render them, call purchasePackage on tap.
const offerings = await Purchases.getOfferings(); const pkg = offerings.current?.monthly!; const { customerInfo } = await Purchases.purchasePackage(pkg); if (customerInfo.entitlements.active['pro']) navigateToPro();VerifySandbox purchase completes; entitlement flips to active.Restore on another device
One line. Mandatory for App Store review.
await Purchases.restorePurchases();VerifyOn a fresh install logged into the same account, entitlements come back.
Check your understanding
Q1. Why is Restore Purchases not optional?
· Tick off the 4 step(s) above.
· Score 100% on the quiz.