VoidhashDocs
DevelopersHelp centerGuidesAPI reference
Dashboard
Get started
Introduction
Quickstart
How Voidhash works
Glossary
Versions and releases
Concepts
Teams, projects and environments
API keys
Products and perks
Offers
Subscription lifecycle
People and identity
Events
Features
Paywalls in your app
Feature flags and A/B tests
Paywall components
Push notifications
Ad attribution in your app
Client SDKs
React Native
Swift
Kotlin
Web
Your backend
Node.js
PHP
Go
Rust
Other languages
Payment sources
Forward store notifications
Developer tools
CLI
MCP server
Query analytics with VoidQL
Swift SDK
Swift quickstart
Display a paywall
Make and restore purchases
Check access
Identify users
Evaluate feature flags
Capture analytics
Track screens
Development mode
Swift SDK reference
Errors
Diagnostic codes
Troubleshooting

Diagnostic codes

Every diagnostic the Swift SDK reports for failures it handles itself, and what each means.

Diagnostics report failures the SDK handled itself, such as a delivery it will retry. They never throw. Receive them with the onDiagnostic option, which also lists each diagnostic's kind.

CodeMeaning
AUTHENTICATION_FAILEDVoidhash rejected the publishable key. Requests pause and queued data is kept.
AUTHENTICATION_RECOVEREDThe key is accepted again; requests resume.
CIRCUIT_OPENVoidhash failed 5 times in a row. Requests pause and the cache is served until a retry succeeds.
CIRCUIT_CLOSEDRequests go through again.
SCHEMA_REFRESH_FAILEDThe project configuration couldn't be refreshed. It's retried.
STORE_CONNECTION_FAILEDThe StoreKit connection didn't open at launch. It's retried.
STORE_RECONCILIATION_FAILEDScanning StoreKit for transactions failed. It's retried.
TRANSACTION_SYNC_DEFERREDA receipt didn't reach Voidhash and stays queued. It's retried.
TRANSACTION_REJECTEDVoidhash refused a receipt, for example because the App Store isn't set up for the bundle ID. It's sent again on the next launch, after 6 hours, or on a restore.
TRANSACTION_CAPTURE_NOT_DURABLEA reported receipt couldn't be written to disk. Delivery is still attempted.
STOREKIT_TESTING_TRANSACTION_SKIPPEDA transaction from a local StoreKit configuration in Xcode wasn't sent: the App Store can't verify it.
PERSON_WRITE_REJECTEDA queued identify or attribute update was refused, or the anonymous ID belongs to another account.
ANALYTICS_SEND_FAILEDEvents weren't delivered. They're retried.
ANALYTICS_EVENT_DROPPEDEvents were dropped at the 1,000-event queue limit, or Voidhash refused them.
ANALYTICS_CONSENT_DENIEDAn event or attribute wasn't collected because consent isn't granted. Reported once until consent is granted.
NON_FINITE_NUMBER_REPLACEDA property was NaN or infinite and was sent as null.
INSTALL_ATTRIBUTION_DEFERREDApple Ads couldn't answer about the install yet. A later launch asks again.
INSTALL_ATTRIBUTION_ABANDONEDThe SDK stopped asking Apple Ads about the install.
PAYWALL_ASSET_PREFETCH_FAILEDA paywall couldn't be preloaded. It still shows from its cached configuration.
PROTECTED_DATA_UNAVAILABLEThe app launched before the first unlock; saved state loads once the device is unlocked.
CACHE_READ_FAILEDAn unreadable cache entry was discarded.
CACHE_NAMESPACE_MIGRATEDCached entries were moved to the current storage layout.
QUEUE_READ_FAILED, QUEUE_WRITE_FAILEDA queue file couldn't be read or written.
QUEUE_RECORD_DROPPED, QUEUE_RECORD_TRUNCATEDAn unreadable or partly written queued record was discarded.

transport diagnostics for a failed request carry the API code of the failure, such as NETWORK_ERROR.

Next steps

  • Errors the SDK throws.
  • Troubleshooting by symptom.
  • Error codes across platforms.

Something wrong or missing on this page? Tell us by email or on Discord.

PreviousErrorsNextTroubleshooting

On this page

Next steps