Skip to content

Monetization, Purchases, and Attribution

A React Native guide for coding agents. Also covers in app purchases, revenuecat, subscriptions, payments, facebook sdk, attribution.

Choose the payment rail from what is being sold. Digital goods and app features generally use store in-app purchases; physical goods and real-world services may use an external payment processor subject to platform rules. Re-check current store policy for the target region before implementation.

Make Entitlements the Source of Truth

Do not unlock premium state merely because the client received a success callback. Verify transactions through the store or a purchase service, store durable entitlements on a trusted backend where appropriate, and restore purchases across reinstalls and devices.

RevenueCat can unify store products, offerings, receipt validation, entitlements, and subscription status across platforms. Keep product identifiers and entitlement names centralized and environment-specific.

Design the Purchase State Machine

Cover unavailable, loading, purchasing, pending, purchased, cancelled, failed, expired, billing-retry, grace-period, and restored states. Prevent duplicate purchase attempts, keep cancellation non-alarming, and expose restore and subscription-management paths.

The paywall must state price, billing period, trial terms, renewal behavior, and what becomes available. Do not gate already-purchased access behind network-dependent decorative UI.

Instrument Responsibly

For Meta/Facebook or another attribution SDK, minimize collected data, obtain required consent, document platform privacy declarations, and separate attribution from authentication. Validate event names and revenue reporting in a sandbox before production.

Sources

Store policies and SDK APIs change. Verify implementation and eligibility against Apple's In-App Purchase and review guidelines, Google Play's billing documentation, and the selected purchase provider's current documentation.

Use this guidance in your coding agent

Install the Better Design MCP once. Your agent then loads this page with one call.

get-react-native-guide({ topic: "mobile-monetization" })
claude mcp add --scope user better-design --transport http https://better-design.com/api/mcp --header "Authorization: Bearer <YOUR_API_KEY>"
Browse related design systems