RevenueCat wraps App Store and Google Play billing so you can gate features with one concept: an entitlement.
Core concepts
- 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 - 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
- Paywall and restore: Show clear prices and terms, and provide a Restore Purchases action, which the stores expect. — App Store Review Guidelines
- 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.
- RevenueCat tutorial — YouTube search: RevenueCat React Native Expo paywall
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
store product -> offering -> entitlement 'pro' -> app unlocks featureSmallest Possible Example
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
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
- Payment gateways compared: payments overview
- Stripe rules: payment rules


