Subscriptions & In-App Purchases with RevenueCat

Set up entitlements, offerings and a paywall with RevenueCat in an Expo development build.

RevenueCat wraps App Store and Google Play billing so you can gate features with one concept: an entitlement.

Core concepts

  1. Products, offerings, entitlements: Create products in each store, group them into offerings, and map them to an entitlement such as pro. Your app only checks the entitlement. — RevenueCat docs
  2. Development build required: The purchases SDK includes native code, so it does not run in Expo Go; use a development build or the SDK's preview mode. — Development builds
  3. Paywall and restore: Show clear prices and terms, and provide a Restore Purchases action, which the stores expect. — App Store Review Guidelines
  4. Test with sandbox accounts: Use store sandbox testers to purchase without charging real money and test renewals and cancellations. — RevenueCat docs

Concept videos

YouTube channels and searches for these topics. On a large screen they open in the reading panel next to the roadmap.

Explanation

Gate by entitlement, not by product

If you rename a product, features keep working because the check is against the entitlement.

Server truth

For high-value content, verify entitlements on the server via webhooks rather than trusting the client alone.

What Is It?

RevenueCat is a service that manages in-app subscriptions across iOS and Android.

Why Should I Care?

It removes most receipt-validation and renewal logic that is easy to get wrong.

Real World Analogy

An entitlement is a membership card: the gym does not care which payment plan you used, only that the card is valid.

Visual Mental Model

text
store product -> offering -> entitlement 'pro' -> app unlocks feature

Smallest Possible Example

ts
import Purchases from 'react-native-purchases';

export async function isPro() {
  const info = await Purchases.getCustomerInfo();
  return info.entitlements.active['pro'] !== undefined;
}

Common Mistakes

❌ Hard-coding product IDs across the app.

Use the entitlement and offerings.

❌ No restore button.

Users who reinstall cannot get access back and apps can be rejected.

Build This Mini Project

Create a 'pro' entitlement with a monthly product in test mode and lock one screen behind it.

Prompts for Cursor, Claude Code & Codex

Paste these into Cursor, Claude Code, Codex, or any coding agent. Replace the bracketed parts with your app details, and keep the agent in plan mode first so you review the approach before it edits files.

Entitlement gate

text
Create a useEntitlement('pro') hook using RevenueCat that exposes isPro and loading, a Paywall screen with packages and Restore, and gate [feature]. Mention that a development build is required and do not hard-code product IDs.

Rules, databases & blogs to use

Resources

Threads in the same domain as this chapter — go deeper on iHateReading without leaving the roadmap.

How to build an AI chat app with Vercel AI SDK and Firebase cover

How to build an AI chat app with Vercel AI SDK and Firebase

Chat UI, streaming and backend wiring for an AI feature.

10 payment gateways cover

10 payment gateways

Payment options compared for web and apps.

Smallest AI Agent cover

Smallest AI Agent

Minimal file-reading agent to learn LLM tool loops without framework magic.

15 micro-SaaS ideas actually making money in 2026 cover

15 micro-SaaS ideas actually making money in 2026

Product ideas small teams can ship.