28.5 · Paywall design, price display and testing with StoreKit configuration, sandbox and TestFlight
A paywall is both a UX problem and a legal one, and billing code that was never tested against renewals, refunds and failures is code you find out about from reviews.
Mental model. Show exactly what the store will charge, using the store's own text and numbers, and test every state with a tool that can move time and force failures.
Paywalls
What a paywall must show, the system views, price maths and experiments.
- How do you design a paywall that is clear, localised and legal, and how do you run experiments on it?
Start with what the user must understand before paying: the price and billing period from the store (displayPrice plus subscription.subscriptionPeriod), the…
Testing
StoreKit configuration files, sandbox, TestFlight and what each can prove.
- How do you test purchases: StoreKit configuration files, sandbox accounts and TestFlight, and what can each not prove?
Three layers, from fast and local to real. (1) A StoreKit configuration file (.storekit, JSON edited in Xcode) defines products, groups, prices and offers…
More in Purchases & subscriptions
- 28.1 · Products, prices, the purchase call, verification and the update stream
- 28.2 · Subscription groups, renewal states, grace period, billing retry and offers
- 28.3 · What the user owns: entitlements, restore, family sharing, refunds and revocation
- 28.4 · JWS, certificate chains, notifications, the Server API and why receipts gave way to transactions
- 28.6 · App Review rules, external purchases and designing a billing platform
- 28.7 · Building the integration: the store object, the catalogue, the SwiftUI views, status, account tokens and tests