Back to Blog
TechnicalJan 15, 2026

Understanding StoreKit 2: A Complete Guide for Developers

Marcus JohnsonAuthor
12 min readRead Time

For years, StoreKit was the framework that iOS developers loved to hate. It was powerful, but its Objective-C roots showed. Implementing it required managing observer lifecycles, parsing receipt data (often involving OpenSSL), and dealing with potential edge cases like "interrupted purchases."

With StoreKit 2, Apple has completely completely reimagined the developer experience. It is built from the ground up for Swift, leveraging concurrency (async/await) and modern language features.

Key Improvements

1. Native Async/Await Support

Gone are the callback closures and delegate arrays. In StoreKit 2, making a purchase is as simple as calling an async function and awaiting the result.

let result = try await product.purchase()

2. Transaction Verification

Perhaps the biggest improvement is receipt validation. In the old days, you had to send a receipt blob to Apple's verify server. In StoreKit 2, every transaction is cryptographically signed using JSON Web Signatures (JWS).

You can verify a transaction's legitimacy locally on the device, without making a network request to your backend or Apple.

3. Current Entitlements API

Checking what a user "owns" used to involve replaying their entire transaction history and figuring out which subscription was active. StoreKit 2 gives you a clean API for this:

for await transaction in Transaction.currentEntitlements {
    // These are the user's active subscriptions/purchases
}

4. Subscription Info & Status

Want to know if a subscription is in the "grace period" or if auto-renew is off? StoreKit 2 provides detailed SubscriptionInfo objects that make building settings screens trivial.

Should You Migrate?

StoreKit 2 is available on iOS 15+. If your app supports older versions of iOS, you will need to maintain both implementations. This is where complexity creeps back in.

For new apps, starting with StoreKit 2 is a no-brainer. For existing apps, we recommend a phased migration or using a wrapper SDK (like Crosspay) that abstracts the differences away.

How Crosspay Uses StoreKit 2

Under the hood, Crosspay uses StoreKit 2 exclusively for devices running iOS 15 and later. We map the elegant Swift errors to our cross-platform exception handling, giving you the safety of the new API even if you are writing React Native or Flutter code.

Enjoyed this article?

Subscribe to our newsletter to receive the latest updates, tutorials, and insights directly in your inbox.