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
  1. 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.99
    VerifyProducts appear in ASC under Subscriptions and in Play Console under Monetize → Products.
  2. 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.
  3. 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.
  4. 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.