- offerings for paywall rendering
- customer info for access decisions
Offerings
offerings(fetchPolicy:)is the canonical catalog readcachedOfferingsreturns the last resolved in-memory snapshot without forcing network worksetFallbackOfferings(from:)andsetFallbackOfferings(jsonData:)let you bundle a first-launch offline fallback
.freshIfStalewaits for fresh data when cache is stale or missing.returnCachedThenRefreshreturns suitable cache now and refreshes in the background.cacheOnlyis for explicit cache-only flows and can fail if there is no usable local snapshot
Customer info
getCustomerInfo() always aims for authoritative server state first, but it can fall back to offline-derived entitlement state when the failure is transient.
Offline reads
activeEntitlementKeysOffline() is the fast local fallback when you only need keys.
- it uses local StoreKit state plus cached product-to-entitlement mapping
- it is useful for temporary offline gating
- it is not a replacement for authoritative sync when the network is available
Data model notes
AppActorCustomerInfo carries more than a simple boolean entitlement map:
- entitlements
- subscriptions
- non-subscriptions
- token and consumable balance context
- management URL
- verification status
isComputedOfflineso you can tell when the snapshot was derived locally
verification and isComputedOffline as first-class signals instead of only checking a single entitlement bit.