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.subscriptionStatus is a single enum — .active(Set), .inactive, or .unknown — that your app reads on every platform, with an isActive shorthand for a quick yes/no.

  • Inspect the full entitlement picture. The entitlements object exposes active, inactive, and all sets, plus web for 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 subscriptionStatus for 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.isActive or 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.

More solutions

App2Web: Keep More of Your iOS RevenueAdd a Stripe checkout call to action to your iOS paywall and route eligible U.S. storefront buyers to an external browser checkout — so more of each sale stays with you, no new app release required.Playbook
Attribute Influencer Revenue with Custom Web Checkout LinksGive every creator a unique web checkout link, tag the source, and trace each paid conversion back to the influencer who earned it.Playbook
Audience Segmentation & Targeting for PaywallsBuild audiences, score users by likelihood to convert, and target the right paywall, offer, and price to each segment from the Superwall dashboard — no app release required.Playbook

Get started

Build, test, and optimize your paywalls

Join 10,000+ apps using Superwall to grow subscription revenue without shipping an app update.

Start for free

No credit card required