storekit
Installation
SKILL.md
StoreKit 2 (In-App Purchases & Subscriptions)
Modern async StoreKit for a fintech iOS app: sell products, verify transactions, gate entitlements, and keep the server as the source of truth. Grounded in Apple's StoreKit, StoreKit Views, and StoreKit Test frameworks (iOS 15+ APIs; iOS 26 era).
- Use StoreKit 2 (
import StoreKit,Product/Transaction), not the deprecatedSKPaymentQueue/SKProductStoreKit 1 API, for any new code. - Digital goods and subscriptions only. Real-world goods/services and money
movement go through Apple Pay / your PSP — see
passkit. Mixing them up is an App Store rejection (seeapp-store-review). - KMP boundary: IAP is Apple-native — keep it in
iosMain/Swift. Expose acommonMaininterface EntitlementStore { fun isSubscribed(): Boolean }and bind anactualthat reads the verified StoreKit entitlement; seeexpect-actualandkmp-ios-integration. Never let shared code decide purchase validity. - Trust the server, not the client. The device signal is for UX; grant paid
features from a server that validates transactions (App Store Server API) and
reacts to App Store Server Notifications V2 — see
references/server-and-security.md.