Playbook
Cross-Platform Entitlements Sync for Mobile Apps
Give users one subscription status across iOS, Android, and web. Superwall syncs entitlements so a purchase on any platform unlocks access everywhere.
Access that follows the user, on every platform. One entitlement model and one subscription status, so a purchase on iOS, Android, or web unlocks access everywhere. Your users pay on iOS, Android, or the web — and they expect everything they bought to be unlocked everywhere, with no per-store glue code and no locked-out paying customers.
Why it matters
"Is this user a subscriber?" sounds simple until you ship on more than one platform. A purchase on the web has to unlock the iOS app. A restore on Android has to follow the user to a new device. Store renewals, web redemptions, and on-device transactions all have to agree — and most teams end up stitching that together with platform-specific code that quietly drifts out of sync.
Every gap in that logic is a real cost: a cross-platform buyer hits the paywall again, asks for a refund, or churns. Meanwhile your growth team wants to keep testing paywalls and offers without worrying that entitlement plumbing will leak the users they just converted. Superwall treats entitlements as one shared model across platforms, so access is consistent no matter where the purchase happened.
What you can do with Superwall
Read one subscription status everywhere.
Superwall.shared.subscriptionStatusis a single enum —.active(Set),.inactive, or.unknown— that your app reads on every platform, with anisActiveshorthand for a quick yes/no.Inspect the full entitlement picture. The
entitlementsobject exposesactive,inactive, andallsets, pluswebfor entitlements a user redeemed through web checkout.Resolve entitlements by product. Use
byProductId(:)and (in 4.10.0+)byProductIds(:)to map store products to the access they unlock.Honor web purchases inside the app. Web checkout purchases redeem into the same entitlement model your app already reads, so web2app buyers get instant in-app access.
React the moment access changes. Observe
subscriptionStatusDidChange(from:to:)on the Superwall delegate so the UI updates as soon as a purchase, restore, or web redemption lands.Keep one identity across surfaces. Identify users so entitlements and paywall assignments follow the person, not the device.
How it works
- Define entitlements once. Your products map to entitlements, and Superwall tracks the user's active entitlements for you — no extra subscription-state logic required in the common case.
- Purchases update status automatically. If you let Superwall handle purchasing, on-device purchases and restores update
subscriptionStatusfor you. - Web purchases sync into the same model. After a user buys on the web, they're redirected back into your app to redeem, and those web entitlements show up under
entitlements.web. - Running your own purchase controller? You stay in control. Merge device and web entitlements and set the status yourself; the SDK refreshes web entitlements every 24 hours, and re-syncing on
didRedeemLink(result:)keeps access current. A web redemption while a paywall is open is tracked as a restore. - Same model across stacks. Entitlements and subscription status are available on iOS, Android, Flutter, Expo, Unity, and React Native.
Proof from customers
Superwall's customer research surfaces two demand signals this directly serves: web paywalls / web2app (raised in ~30% of customer calls) and SDK/platform support that keeps the subscription stack credible. The docs back the mechanism: web entitlements are a first-class part of the entitlements API, and web checkout is built specifically for cross-platform subscriptions.
Customers consistently say they want app and web monetization to move together — to sell where conversion is best and still understand and honor value across surfaces — without splitting their growth stack or babysitting per-platform sync code.
Use cases
Web2app funnels: sell a subscription on a Stripe-backed web checkout, then unlock it instantly in the iOS or Android app.
Multi-device users: a purchase or restore follows the identified user to every device they log in on.
Custom purchase stacks: teams with their own purchase controller or RevenueCat merge web and device entitlements into one status.
Feature gating: check
subscriptionStatus.isActiveor a specific entitlement before unlocking premium features, consistently on every platform.
Get started
Install the SDK and configure it for your platform.
Track subscription state and read entitlements in your app.
Add web checkout to honor web purchases in-app.
Create your account and start building at superwall.com.