StoreKit — Foundations Skill
Purpose
Route StoreKit 2 in-app purchase implementation tasks to the minimum required StoreKit Knowledge Contracts. v1 scope is the modern StoreKit 2 async/await API surface only — no legacy StoreKit 1, no server-side receipt validation or App Store Server API, no StoreKit Configuration file test setup in Xcode.
Routing
Load only the contracts relevant to the task. All paths relative to knowledge/storekit/.
- Loading products with
Product.products(for:), initiating a purchase withproduct.purchase(), or handlingProduct.PurchaseResult(.success/.userCancelled/.pending) -> product-loading-and-purchase.md - Checking a
VerificationResultfor.verified/.unverified, readingTransaction.currentEntitlements, or callingtransaction.finish()-> transaction-verification-and-entitlements.md - The
Transaction.updateslistener task or callingAppStore.sync()to restore purchases -> transaction-updates-and-restoring-purchases.md - Reading
Product.SubscriptionInfo.Status/RenewalInfo/renewalState, or same-subscription-group upgrade/downgrade behavior -> subscription-status-and-renewal-info.md
Never load more than the contracts relevant to the specific question.
Stop Conditions
Stop and report if the requested topic has no matching Knowledge Contract in knowledge/storekit/ — do not guess or fall back to general knowledge.
- Legacy StoreKit 1 (
SKPaymentQueue,SKProduct,SKPaymentTransaction) — Deferred - Server-side receipt validation and the App Store Server API — Deferred
- StoreKit Configuration file test setup — Deferred
- The App Review compliance angle — the requirement to use IAP to unlock
content, prohibited alternative unlock mechanisms, loot-box odds
disclosure, the restore-mechanism requirement, and the non-expiration
rule for purchased currencies — owned by
app-store-review-guidelines