What does StoreKitError.systemError mean?
StoreKitError.systemError means the operating system reported a failure during a StoreKit 2 call and passes the underlying error along.
Quick facts#
| Error | StoreKitError.systemError(Error) |
| Where | StoreKit 2, Swift (StoreKitError) |
| Available since | iOS 15.0, iPadOS 15.0, macOS 12.0, tvOS 15.0, watchOS 8.0, visionOS 1.0 |
| What the vendor says | A system error occurred. |
Cause#
- The system, not your app's request, failed the operation. The case carries the underlying
Error, which is the only place the detail lives. - Apple does not list what triggers it. Treat it as a failure outside your code that may be temporary.
- Because the cause is not documented, do not assume a product or configuration problem until the underlying error shows one.
Fix#
- Log
underlying.localizedDescriptionand itsNSErrordomain and code, so you can group repeated failures. - Retry once after a short pause. If it keeps failing, check that the device has an App Store account signed in and that the App Store app works.
- Test on a second device or account to separate a device problem from a setup problem.
- Keep the paywall open and tell the person the store had a problem. Do not unlock content.
Example#
Swift
import StoreKit
// The underlying error is the only detail StoreKit gives you, so log it before you show a generic message.
func refreshProducts(ids: [String]) async {
do {
let products = try await Product.products(for: ids)
print("Loaded \(products.count) products")
} catch StoreKitError.systemError(let underlying) {
let ns = underlying as NSError
print("StoreKit system error: domain \(ns.domain), code \(ns.code), \(ns.localizedDescription)")
} catch {
print("Other error: \(error)")
}
}Compile-checked: npm run check:snippets type-checks this snippet with swiftc against the Apple SDK (macOS target, checked 2026-10-03).
How the RevenueDot SDK reports it#
The RevenueDot purchases-ios fork maps StoreKitError.systemError to ErrorCode.storeProblemError (code 2) and keeps the system error as the underlying error. Retrying once is reasonable; see what storeProblemError means.
Related#
- What does storeProblemError (code 2) mean in the purchases SDK?
- What does StoreKitError.unknown mean?
- What does StoreKitError.networkError mean?
Source#
- Apple: StoreKitError.systemError(_:)
- Apple: StoreKitError
- RevenueDot purchases-ios: StoreKitError+Extensions.swift (how the SDK maps StoreKit 2 errors)
Checked: 2026-10-03