RevenueCat setup
Connect your store products to RevenueCat and configure the entitlement that unlocks Pro.
Your coding agent can help with the project, products and offerings through RevenueCat’s AI toolkit.
Prerequisites
- Complete the app setup.
- Create products for your target platforms using Store configuration.
- Link your Supabase project for the server-side entitlement check.
Setup
Create a RevenueCat project
Create an account at RevenueCat and add a project. Add the iOS and Android apps to the same project if purchases should grant access on both platforms.
Connect the store apps
iOS
Add an App Store app with the bundle identifier from
config.js → general.iosBundleIdentifier.
Supply the In-App Purchase Key requested by RevenueCat. Its App Store Connect API key can also enable product imports. Follow the store connection guide for the credentials.
Import the products
Import your subscriptions or one-time products into RevenueCat’s product catalog. Check that the identifiers match the store products.
For Google Play subscriptions, select the intended base plan. RevenueCat
identifies these products as <subscription-id>:<base-plan-id>.
Create the Pro entitlement
Create an entitlement
named pro and attach every product that should unlock Pro.
If you choose another identifier, set
config.js → purchases.proEntitlementId to that exact value.
Create an offering and paywall
Create an offering , add packages for your products and make it the current offering.
Configure a RevenueCat paywall for that offering. The app’s default paywall uses the current offering.
Add the public SDK keys
Copy the platform-specific public keys from your RevenueCat project’s API keys settings:
EXPO_PUBLIC_REVENUE_CAT_API_KEY_APPLE="<your-apple-sdk-key>"
EXPO_PUBLIC_REVENUE_CAT_API_KEY_GOOGLE="<your-google-sdk-key>"Set the key for each platform you build. Add those same values to the EAS environment used by cloud builds.
Configure the server check
Create a RevenueCat secret API key that can read the subscriber endpoint . Add it to your linked Supabase project’s function secrets:
supabase secrets set REVENUECAT_SECRET_KEY="<your-revenuecat-secret-key>"
supabase secrets set PRO_ENTITLEMENT_ID="pro"Use the same entitlement identifier as the dashboard and config.js.
See Edge function secrets for secret management.
Keep REVENUECAT_SECRET_KEY on the server. Without it, paid AI requests
treat every user as free even when the app shows Pro.
Verify
Restart the development server, or rebuild if testing a standalone app. Sign in and open the paywall from Profile.
Use an Apple sandbox or Google Play test account to check the following:
- The paywall displays the expected products and localized prices.
- A purchase grants the Pro entitlement to the RevenueCat customer whose app user ID matches the signed-in Supabase user.
- Profile shows Pro access and image generation succeeds.
- Restoring purchases recovers access for the same customer.
Run the bundled configuration check from the app directory:
node .claude/skills/setup/scripts/verify-pro.mjsIt compares the app’s entitlement identifier with the linked project’s server configuration. Read any skipped-check messages; this command alone does not verify a purchase.
Next
Use Purchases to open the paywall from another screen, or troubleshoot an empty offering or missing entitlement.