Entitlements are the stable access keys your app should check after configure, purchase, restore, or sync. Product IDs and package IDs can change; entitlement keys are what your app uses to decide access. Use a small set of keys, such as:
Most subscription apps start with one key: premium.

Basic access check

This is the right check for ordinary UI routing: show premium tab, hide onboarding upsell, or decide whether to show a paywall.

High-trust access check

If the feature is expensive, server-backed, or abuse-prone, also check verification state.
For backend resources, use Server-side Access Checks instead of trusting only the device.

Entitlement status matrix

SDK helpers already encode this active-access rule. If you are reading raw backend user data, check isActive or explicitly allow only active and valid grace.

When to refresh customer info

Refresh customer info after:
  • app configure or sign-in
  • purchase success
  • restore success
  • quiet sync
  • receipt queue drain
  • returning online after offline access
  • support-driven account recovery

Offline fallback

Use offline entitlement keys for continuity, not as fresh billing truth.
Refresh with getCustomerInfo() once the network returns.

Rules of thumb

  • use entitlement keys like premium or pro for access
  • do not unlock premium from the selected package alone
  • refresh customer info after purchase and recovery flows
  • handle cached or offline-computed customer state intentionally
  • check verification for high-trust access
  • protect backend resources with your backend, not with mobile-only checks
Read Trusted Entitlements for response verification rules and Making Purchases for purchase-result handling.