EncoreError is a sealed, nested enum. show() never throws: presentation failures arrive as values, in .notPresented(.error(EncoreError)) on the PresentationResult (and claim failures as AdvertiserOutcome.failed(EncoreError)). Throwing APIs like revokeEntitlements() still throw an EncoreError. User dismissals and “no offers” are business outcomes, not errors; see DismissReason and NotPresentedReason.
Never block user actions on an SDK error. Always provide a fallback path so the user can complete their intended action: every non-success result, error or not, should fall through to your original flow.
public enum EncoreError: Error, LocalizedError, Sendable { case transport(TransportError) // "The road is broken" — connectivity case `protocol`(ProtocolError) // "The language failed" — HTTP/API case integration(IntegrationError) // "SDK misused" — config/programmer error case domain(String) // Client business-rule violation (message only) public enum TransportError: Error, LocalizedError, Sendable { case network(Error) // No connectivity, timeout, connection failed case persistence(Error) // Local storage read/write failure } public enum ProtocolError: Error, LocalizedError, Sendable { case http(status: Int, message: String?) // Non-2xx, body unreadable case api(status: Int, code: String?, message: String) // Structured server error case decoding(Error) // 2xx body didn't match schema } public enum IntegrationError: Error, LocalizedError, Sendable { case notConfigured // configure() not called before use case invalidApiKey // Empty / malformed API key case invalidURL // Failed to construct a request URL }}
Every EncoreError conforms to LocalizedError, so errorDescription gives a developer-readable summary. transport and protocol(.decoding) errors also expose the wrapped system error via the underlying property:
if let underlying = encoreError.underlying { // The original URLSession / decoding error, when one exists.}
func cancelTapped() { Task { let result = await Encore.placement("cancel_flow").show() if result.claim != nil || result.publisher == .purchased { // Read the concrete entitlement from isActive / isActivePublisher. } else { if let error = result.error { switch error { case .integration(.notConfigured): assertionFailure("Call Encore.shared.configure(apiKey:) at launch") case .transport(.network(let underlying)): Logger.log("Network error: \(underlying.localizedDescription)") case .protocol(.api(_, let code, let message)): Logger.log("API error (\(code ?? "unknown")): \(message)") default: Logger.log(error.errorDescription ?? "Encore error") } } // Always let the user proceed. proceedWithCancellation() } }}
Throwing APIs like revokeEntitlements() still use do/catch:
do { try await Encore.shared.revokeEntitlements()} catch let error as EncoreError { Logger.log(error.errorDescription ?? "Encore error")}
DismissReason and NotPresentedReason: business outcomes (dismiss, no offers, experiment control, unsupported OS). These are not errors.
PresentationResult: the value returned by await show(), which carries any error via result.error.
The most common “failure” is not an error at all: it is the user declining an offer, recorded on the result’s dismissal axis. Every non-success result should fall through to your original flow.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Encore","colors":{"primary":"#3B82F6","light":"#60A5FA","dark":"#2563EB"},"favicon":"https://mintcdn.com/encore-5242061e/Q9j45w34T3HE6gEF/favicon.ico?fit=max\u0026auto=format\u0026n=Q9j45w34T3HE6gEF\u0026q=85\u0026s=f4a721bc5092e5517ad5bb0e80acd195","appearance":{"default":"dark"},"navbar":{"links":[{"href":"mailto:admin@encorekit.com","label":"Support"}]},"contextual":{"options":["copy","view","chatgpt","claude","perplexity","mcp","cursor","vscode"],"display":"header"},"styling":{"latex":false},"navigation":{"global":{"anchors":[{"anchor":"My Dashboard","icon":"gauge","href":"https://dashboard.encorekit.com"},{"anchor":"Support","icon":"envelope","href":"mailto:admin@encorekit.com"}]},"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"encore-5242061e","hasAudioNarration":false,"actualSubdomain":"encore-5242061e","customDomains":["docs.encorekit.com"],"gitSource":{"type":"github","owner":"encorekit","repo":"docs","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6aea799d778673907192530c","collectionId":"590252ff-180f-4775-800a-b9780f74d2a8","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6aea799d778673907192530c"},"entitlements":{},"buildId":"6aee1f063f800ca0064d7f4a","clientVersion":"0.0.4076","searchFilterCounts":[{"language":"default","tag":"Publishers","count":195},{"language":"default","tag":"SDKs","count":175},{"language":"default","tag":"SDK Reference","count":100},{"language":"default","tag":"Bridges","count":73},{"language":"default","tag":"iOS","count":43},{"language":"default","tag":"Web","count":34},{"language":"default","tag":"Unity","count":29},{"language":"default","tag":"Quickstart","count":27},{"language":"default","tag":"Integration Guides","count":26},{"language":"default","tag":"Android","count":25}]},"assistantConfig":{},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"rbac-expansion","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-serve","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"live-agents","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"comment-mode","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"publishers/ios/sdk-reference/errors","slug":"/publishers/ios/sdk-reference/errors","pageMetadata":{"title":"Errors","description":"EncoreError values carried on presentation results and thrown by throwing APIs","href":"/publishers/ios/sdk-reference/errors"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"EncoreError values carried on presentation results and thrown by throwing APIs\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,code:`code`,li:`li`,p:`p`,pre:`pre`,span:`span`,strong:`strong`,tbody:`tbody`,td:`td`,th:`th`,thead:`thead`,tr:`tr`,ul:`ul`,..._provideComponents(),...props.components},{CodeBlock,Heading,Table,Tip,Warning}=_components;if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Table)_missingMdxReference(`Table`,true);if(!Tip)_missingMdxReference(`Tip`,true);if(!Warning)_missingMdxReference(`Warning`,true);return _jsxs(_Fragment,{children:[_jsx(Heading,{level:`2`,id:`encoreerror`,children:`EncoreError`}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.code,{children:`EncoreError`}),` is a `,_jsx(_components.strong,{children:`sealed, nested enum`}),`. `,_jsx(_components.code,{children:`show()`}),` never throws: presentation failures arrive `,_jsx(_components.strong,{children:`as values`}),`, in `,_jsx(_components.code,{children:`.notPresented(.error(EncoreError))`}),` on the `,_jsx(_components.a,{href:`/publishers/ios/sdk-reference/presentation-result`,children:_jsx(_components.code,{children:`PresentationResult`})}),` (and claim failures as `,_jsx(_components.code,{children:`AdvertiserOutcome.failed(EncoreError)`}),`). Throwing APIs like `,_jsx(_components.code,{children:`revokeEntitlements()`}),` still throw an `,_jsx(_components.code,{children:`EncoreError`}),`. User dismissals and “no offers” are business outcomes, not errors; see `,_jsx(_components.a,{href:`/publishers/ios/sdk-reference/dismiss-reason`,children:`DismissReason`}),` and `,_jsx(_components.a,{href:`/publishers/ios/sdk-reference/presentation-result#notpresentedreason`,children:_jsx(_components.code,{children:`NotPresentedReason`})}),`.`]}),`\n`,_jsx(Warning,{children:_jsx(_components.p,{children:`Never block user actions on an SDK error. Always provide a fallback path so the user can complete their intended action: every non-success result, error or not, should fall through to your original flow.`})}),`\n`,_jsx(Heading,{level:`3`,id:`definition`,children:`Definition`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`23`,language:`swift`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`swift`,children:_jsxs(_components.code,{language:`swift`,numberOfLines:`23`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`public`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` enum`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#4EC9B0`},children:` EncoreError`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4EC9B0`},children:`Error`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4EC9B0`},children:`LocalizedError`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4EC9B0`},children:`Sendable `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`{`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` case`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:` transport`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(TransportError) `}),_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`// \"The road is broken\" — connectivity`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` case`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:\" `protocol`\"}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(ProtocolError) `}),_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`// \"The language failed\" — HTTP/API`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` case`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:` integration`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(IntegrationError) `}),_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`// \"SDK misused\" — config/programmer error`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` case`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:` domain`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4EC9B0`},children:`String`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`) `}),_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`// Client business-rule violation (message only)`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` public`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` enum`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#4EC9B0`},children:` TransportError`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4EC9B0`},children:`Error`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4EC9B0`},children:`LocalizedError`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4EC9B0`},children:`Sendable `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`{`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` case`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:` network`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4EC9B0`},children:`Error`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`) `}),_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`// No connectivity, timeout, connection failed`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` case`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:` persistence`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4EC9B0`},children:`Error`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`) `}),_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`// Local storage read/write failure`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`})}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` public`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` enum`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#4EC9B0`},children:` ProtocolError`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4EC9B0`},children:`Error`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4EC9B0`},children:`LocalizedError`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4EC9B0`},children:`Sendable `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`{`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` case`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:` http`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`status`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4EC9B0`},children:`Int`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`message`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4EC9B0`},children:`String`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`?`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`) `}),_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`// Non-2xx, body unreadable`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` case`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:` api`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`status`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4EC9B0`},children:`Int`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`code`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4EC9B0`},children:`String`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`?`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`message`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4EC9B0`},children:`String`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`) `}),_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`// Structured server error`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` case`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:` decoding`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4EC9B0`},children:`Error`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`) `}),_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`// 2xx body didn't match schema`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`})}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` public`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` enum`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#4EC9B0`},children:` IntegrationError`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4EC9B0`},children:`Error`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4EC9B0`},children:`LocalizedError`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4EC9B0`},children:`Sendable `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`{`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` case`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:` notConfigured`}),_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:` // configure() not called before use`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` case`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:` invalidApiKey`}),_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:` // Empty / malformed API key`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` case`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:` invalidURL`}),_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:` // Failed to construct a request URL`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`]})})}),`\n`,_jsx(Heading,{level:`3`,id:`top-level-cases`,children:`Top-level cases`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Case`}),_jsx(_components.th,{children:`Associated value`}),_jsx(_components.th,{children:`Meaning`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`.transport(TransportError)`})}),_jsx(_components.td,{children:`nested`}),_jsx(_components.td,{children:`Connectivity layer failed (network or local persistence).`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`.protocol(ProtocolError)`})}),_jsx(_components.td,{children:`nested`}),_jsx(_components.td,{children:`The request reached the server but the exchange failed (bad status, server error, or undecodable body).`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`.integration(IntegrationError)`})}),_jsx(_components.td,{children:`nested`}),_jsx(_components.td,{children:`The SDK was misused or misconfigured.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`.domain(String)`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`String`})}),_jsx(_components.td,{children:`A client-side business-rule violation, carrying a human-readable message.`})]})]})]}),`\n`,_jsx(Heading,{level:`3`,id:`nested-cases`,children:`Nested cases`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Case`}),_jsx(_components.th,{children:`Associated values`}),_jsx(_components.th,{children:`Description`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`.transport(.network(Error))`})}),_jsxs(_components.td,{children:[`underlying `,_jsx(_components.code,{children:`Error`})]}),_jsx(_components.td,{children:`No internet, timeout, or connection failure.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`.transport(.persistence(Error))`})}),_jsxs(_components.td,{children:[`underlying `,_jsx(_components.code,{children:`Error`})]}),_jsx(_components.td,{children:`Local storage (cache/outbox) read or write failed.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`.protocol(.http(status:message:))`})}),_jsxs(_components.td,{children:[_jsx(_components.code,{children:`Int`}),`, `,_jsx(_components.code,{children:`String?`})]}),_jsx(_components.td,{children:`Non-2xx response with an unreadable/unexpected body.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`.protocol(.api(status:code:message:))`})}),_jsxs(_components.td,{children:[_jsx(_components.code,{children:`Int`}),`, `,_jsx(_components.code,{children:`String?`}),`, `,_jsx(_components.code,{children:`String`})]}),_jsx(_components.td,{children:`Server returned a structured error (its own domain error).`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`.protocol(.decoding(Error))`})}),_jsxs(_components.td,{children:[`underlying `,_jsx(_components.code,{children:`Error`})]}),_jsx(_components.td,{children:`A 2xx response body didn’t match the expected schema.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`.integration(.notConfigured)`})}),_jsx(_components.td,{children:`none`}),_jsxs(_components.td,{children:[_jsx(_components.code,{children:`configure(apiKey:)`}),` was not called before use.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`.integration(.invalidApiKey)`})}),_jsx(_components.td,{children:`none`}),_jsx(_components.td,{children:`The API key was empty or malformed.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`.integration(.invalidURL)`})}),_jsx(_components.td,{children:`none`}),_jsx(_components.td,{children:`The SDK could not build a valid request URL.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`.domain(String)`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`String`})}),_jsx(_components.td,{children:`Client business-rule violation; the string describes it.`})]})]})]}),`\n`,_jsx(Heading,{level:`3`,id:`helpers`,children:`Helpers`}),`\n`,_jsxs(_components.p,{children:[`Every `,_jsx(_components.code,{children:`EncoreError`}),` conforms to `,_jsx(_components.code,{children:`LocalizedError`}),`, so `,_jsx(_components.code,{children:`errorDescription`}),` gives a developer-readable summary. `,_jsx(_components.code,{children:`transport`}),` and `,_jsx(_components.code,{children:`protocol(.decoding)`}),` errors also expose the wrapped system error via the `,_jsx(_components.code,{children:`underlying`}),` property:`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`3`,language:`swift`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`swift`,children:_jsxs(_components.code,{language:`swift`,numberOfLines:`3`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`if`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` let`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` underlying `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` encoreError.underlying {`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:` // The original URLSession / decoding error, when one exists.`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`]})})}),`\n`,_jsx(Heading,{level:`2`,id:`handling-errors`,children:`Handling errors`}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.code,{children:`show()`}),` delivers errors as values on the result:`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`23`,language:`swift`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`swift`,children:_jsxs(_components.code,{language:`swift`,numberOfLines:`23`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`func`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:` cancelTapped`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`() {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:` Task`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` let`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` result `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` await`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` Encore.`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:`placement`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"cancel_flow\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`).`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:`show`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`()`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` if`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` result.claim `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`!=`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` nil`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` ||`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` result.publisher `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`==`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` .purchased {`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:` // Read the concrete entitlement from isActive / isActivePublisher.`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` } `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`else`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` if`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` let`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` error `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` result.`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#9CDCFE`},children:`error`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` switch`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` error {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` case`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` .`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:`integration`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`notConfigured`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:` assertionFailure`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"Call Encore.shared.configure(apiKey:) at launch\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` case`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` .`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:`transport`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(.`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:`network`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`let`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` underlying))`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` Logger.`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:`log`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"Network error: `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`\\\\(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#D4D4D4`},children:`underlying.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`localizedDescription`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`)`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` case`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` .`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:`protocol`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(.`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:`api`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#9CDCFE`},children:`_`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`let`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` code, `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`let`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` message))`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` Logger.`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:`log`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"API error (`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`\\\\(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#D4D4D4`},children:`code `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`??`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"unknown\"`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`)`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`): `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`\\\\(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#D4D4D4`},children:`message`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`)`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` default`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` Logger.`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:`log`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(error.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`errorDescription`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` ??`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"Encore error\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:` // Always let the user proceed.`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:` proceedWithCancellation`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`()`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`]})})}),`\n`,_jsxs(_components.p,{children:[`Throwing APIs like `,_jsx(_components.code,{children:`revokeEntitlements()`}),` still use `,_jsx(_components.code,{children:`do`}),`/`,_jsx(_components.code,{children:`catch`}),`:`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`5`,language:`swift`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`swift`,children:_jsxs(_components.code,{language:`swift`,numberOfLines:`5`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`do`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` try`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` await`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` Encore.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`shared`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:`revokeEntitlements`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`()`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`} `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`catch`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` let`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` error `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`as`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:` EncoreError`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` Logger.`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:`log`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(error.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`errorDescription`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` ??`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"Encore error\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`]})})}),`\n`,_jsx(Heading,{level:`2`,id:`related-types`,children:`Related Types`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.a,{href:`/publishers/ios/sdk-reference/dismiss-reason`,children:`DismissReason`}),` and `,_jsx(_components.a,{href:`/publishers/ios/sdk-reference/presentation-result#notpresentedreason`,children:_jsx(_components.code,{children:`NotPresentedReason`})}),`: business outcomes (dismiss, no offers, experiment control, unsupported OS). These are `,_jsx(_components.strong,{children:`not`}),` errors.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.a,{href:`/publishers/ios/sdk-reference/presentation-result`,children:`PresentationResult`}),`: the value returned by `,_jsx(_components.code,{children:`await show()`}),`, which carries any error via `,_jsx(_components.code,{children:`result.error`}),`.`]}),`\n`]}),`\n`,_jsx(Tip,{children:_jsxs(_components.p,{children:[`The most common “failure” is not an error at all: it is the user declining an offer, recorded on the result’s `,_jsx(_components.code,{children:`dismissal`}),` axis. Every non-success result should fall through to your original flow.`]})})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Errors","description":"EncoreError values carried on presentation results and thrown by throwing APIs","href":"/publishers/ios/sdk-reference/errors"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"EncoreError","slug":"encoreerror","depth":2,"children":[{"title":"Definition","slug":"definition","depth":3,"children":[]},{"title":"Top-level cases","slug":"top-level-cases","depth":3,"children":[]},{"title":"Nested cases","slug":"nested-cases","depth":3,"children":[]},{"title":"Helpers","slug":"helpers","depth":3,"children":[]}]},{"title":"Handling errors","slug":"handling-errors","depth":2,"children":[]},{"title":"Related Types","slug":"related-types","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":[],"subdomain":"encore-5242061e","siteName":"Encore","title":"Errors - Encore","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-08-12T23:36:28.477Z","originalFileLocation":"publishers/ios/sdk-reference/errors.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"dark\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"EncoreError values carried on presentation results and thrown by throwing APIs\">\u003cmeta data-mint-head name=\"application-name\" content=\"Encore\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/encore-5242061e/xhPViPNw21djssdp/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/encore-5242061e/xhPViPNw21djssdp/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/encore-5242061e/xhPViPNw21djssdp/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/encore-5242061e/xhPViPNw21djssdp/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/encore-5242061e/xhPViPNw21djssdp/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/encore-5242061e/xhPViPNw21djssdp/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/encore-5242061e/xhPViPNw21djssdp/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/encore-5242061e/xhPViPNw21djssdp/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/encore-5242061e/xhPViPNw21djssdp/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Errors - Encore\">\u003cmeta data-mint-head property=\"og:description\" content=\"EncoreError values carried on presentation results and thrown by throwing APIs\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Encore\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.encorekit.com/publishers/ios/sdk-reference/errors\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://encore-5242061e.mintlify.site/_mintlify/api/og/v2?division=SDK+Reference\u0026amp;title=Errors\u0026amp;description=EncoreError+values+carried+on+presentation+results+and+thrown+by+throwing+APIs\u0026amp;theme=222d1621abf39a0a97558941\u0026amp;signature=f24bb4609e3a41286d55add78de68dd4b32a580f31403e6135734acef0201f3a\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Errors - Encore\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"EncoreError values carried on presentation results and thrown by throwing APIs\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://encore-5242061e.mintlify.site/_mintlify/api/og/v2?division=SDK+Reference\u0026amp;title=Errors\u0026amp;description=EncoreError+values+carried+on+presentation+results+and+thrown+by+throwing+APIs\u0026amp;theme=222d1621abf39a0a97558941\u0026amp;signature=f24bb4609e3a41286d55add78de68dd4b32a580f31403e6135734acef0201f3a\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/encore-5242061e/xhPViPNw21djssdp/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Encore\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#3B82F6\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.encorekit.com/publishers/ios/sdk-reference/errors\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/publishers/ios/sdk-reference/errors.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.encorekit.com/#organization\",\"name\":\"Encore\",\"url\":\"https://docs.encorekit.com\"},{\"@type\":\"WebSite\",\"@id\":\"https://docs.encorekit.com#website\",\"name\":\"Encore\",\"url\":\"https://docs.encorekit.com\",\"publisher\":{\"@id\":\"https://docs.encorekit.com/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.encorekit.com/publishers/ios/sdk-reference/errors#webpage\",\"url\":\"https://docs.encorekit.com/publishers/ios/sdk-reference/errors\",\"name\":\"Errors\",\"description\":\"EncoreError values carried on presentation results and thrown by throwing APIs\",\"dateModified\":\"2026-08-12T23:36:28.477Z\",\"isPartOf\":{\"@id\":\"https://docs.encorekit.com#website\"},\"breadcrumb\":{\"@id\":\"https://docs.encorekit.com/publishers/ios/sdk-reference/errors#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.encorekit.com/publishers/ios/sdk-reference/errors#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"iOS\",\"item\":\"https://docs.encorekit.com/publishers/ios/quickstart/install\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"SDK Reference\",\"item\":\"https://docs.encorekit.com/publishers/ios/sdk-reference/overview\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Errors\",\"item\":\"https://docs.encorekit.com/publishers/ios/sdk-reference/errors\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.encorekit.com/publishers/ios/sdk-reference/errors#article\",\"headline\":\"Errors\",\"name\":\"Errors\",\"description\":\"EncoreError values carried on presentation results and thrown by throwing APIs\",\"url\":\"https://docs.encorekit.com/publishers/ios/sdk-reference/errors\",\"mainEntityOfPage\":{\"@id\":\"https://docs.encorekit.com/publishers/ios/sdk-reference/errors#webpage\"},\"dateModified\":\"2026-08-12T23:36:28.477Z\",\"publisher\":{\"@id\":\"https://docs.encorekit.com/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.encorekit.com#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Encore\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Encore","nav":{"global":{"anchors":[{"anchor":"My Dashboard","icon":"gauge","href":"https://dashboard.encorekit.com"},{"anchor":"Support","icon":"envelope","href":"mailto:admin@encorekit.com"}]},"products":[{"product":"Publishers","icon":"code","tabs":[{"tab":"Documentation","icon":"book-open","pages":[{"title":"Documentation","href":""}]},{"tab":"SDKs","icon":"cubes","groups":[{"group":"iOS","pages":[{"group":"Quickstart","pages":[{"title":"Install the SDK","href":"/publishers/ios/quickstart/install"},{"title":"Configure the SDK","href":"/publishers/ios/quickstart/configure"},{"title":"User Management","href":"/publishers/ios/quickstart/user-management"},{"title":"Presenting Offers","href":"/publishers/ios/quickstart/present-offers"},{"title":"Configure Analytics","href":"/publishers/ios/quickstart/configure-analytics"}]},{"group":"Platform Integration","pages":[{"title":"App Store Subscription Product","href":"/publishers/ios/platform-setup/subscription-product"},{"title":"App Store Server Notifications","href":"/publishers/ios/platform-setup/server-notifications"},{"title":"Create a Promotional Offer","href":"/publishers/ios/platform-setup/create-promotional-offer"}]},{"group":"Integration Guides","pages":[{"title":"Integration Patterns","href":"/publishers/ios/guides/integration-patterns"},{"group":"Reduce Churn","pages":[{"title":"Add Subscription Product","href":"/publishers/ios/guides/add-subscription-product"}]},{"group":"3rd Party Subscription Managers","pages":[{"group":"Superwall","pages":[{"title":"Present Offers with Superwall","sidebarTitle":"Present Offers","href":"/publishers/ios/guides/managers/superwall/present-offers"},{"title":"Add Subscription Product with Superwall","sidebarTitle":"Add Subscription Product","href":"/publishers/ios/guides/managers/superwall/add-subscription-product"},{"title":"Configure Analytics with Superwall","sidebarTitle":"Configure Analytics","href":"/publishers/ios/guides/managers/superwall/configure-analytics"}]},{"group":"RevenueCat","pages":[{"title":"Present Offers with RevenueCat","sidebarTitle":"Present Offers","href":"/publishers/ios/guides/managers/revenuecat/present-offers"},{"title":"Add Subscription Product with RevenueCat","sidebarTitle":"Add Subscription Product","href":"/publishers/ios/guides/managers/revenuecat/add-subscription-product"},{"title":"Configure Analytics with RevenueCat","sidebarTitle":"Configure Analytics","href":"/publishers/ios/guides/managers/revenuecat/configure-analytics"}]},{"group":"Adapty","pages":[{"title":"Add Subscription Product with Adapty","sidebarTitle":"Add Subscription Product","href":"/publishers/ios/guides/managers/adapty/add-subscription-product"},{"title":"Configure Analytics with Adapty","sidebarTitle":"Configure Analytics","href":"/publishers/ios/guides/managers/adapty/configure-analytics"}]},{"group":"Qonversion","pages":[{"title":"Add Subscription Product with Qonversion","sidebarTitle":"Add Subscription Product","href":"/publishers/ios/guides/managers/qonversion/add-subscription-product"},{"title":"Configure Analytics with Qonversion","sidebarTitle":"Configure Analytics","href":"/publishers/ios/guides/managers/qonversion/configure-analytics"}]},{"title":"Using Multiple Managers","sidebarTitle":"Multiple Managers","href":"/publishers/ios/guides/managers/multiple-managers"}]}]},{"group":"Updating the SDK","pages":[{"title":"Routine updates","href":"/publishers/ios/guides/updating-sdk"},{"title":"Updating to 2.x","href":"/publishers/ios/guides/updating-to-2-x"}]},{"group":"SDK Reference","pages":[{"title":"Overview","href":"/publishers/ios/sdk-reference/overview"},{"title":"configure()","href":"/publishers/ios/sdk-reference/configure"},{"title":"identify()","href":"/publishers/ios/sdk-reference/identify"},{"title":"setUserAttributes()","href":"/publishers/ios/sdk-reference/set-user-attributes"},{"title":"setLanguage()","href":"/publishers/ios/sdk-reference/set-language"},{"title":"clearLanguage()","href":"/publishers/ios/sdk-reference/clear-language"},{"title":"reset()","href":"/publishers/ios/sdk-reference/reset"},{"title":"isActive()","href":"/publishers/ios/sdk-reference/is-active"},{"title":"isActivePublisher()","href":"/publishers/ios/sdk-reference/is-active-publisher"},{"title":"placement()","href":"/publishers/ios/sdk-reference/placement"},{"title":"EncorePurchaseController","href":"/publishers/ios/sdk-reference/purchase-controller"},{"title":"outcomes","href":"/publishers/ios/sdk-reference/outcomes"},{"title":"isClaimEnabled","href":"/publishers/ios/sdk-reference/is-claim-enabled"},{"title":"revokeEntitlements()","href":"/publishers/ios/sdk-reference/revoke-entitlements"},{"title":"UserAttributes","href":"/publishers/ios/sdk-reference/user-attributes"},{"title":"PresentationResult","href":"/publishers/ios/sdk-reference/presentation-result"},{"title":"Entitlements","href":"/publishers/ios/sdk-reference/entitlements"},{"title":"EntitlementScope","href":"/publishers/ios/sdk-reference/entitlement-scope"},{"title":"DismissReason","description":"How a presented offer sheet went away","href":"/publishers/ios/sdk-reference/dismiss-reason"},{"title":"Errors","href":"/publishers/ios/sdk-reference/errors"}]}]},{"group":"Android","pages":[{"group":"Quickstart","pages":[{"title":"Install the SDK","description":"Add the Encore Android SDK to your project via Gradle.","href":"/publishers/android/quickstart/install"},{"title":"Configure the SDK","href":"/publishers/android/quickstart/configure"},{"title":"User Management","href":"/publishers/android/quickstart/user-management"},{"title":"Presenting Offers","href":"/publishers/android/quickstart/present-offers"},{"title":"Configure Analytics","href":"/publishers/android/quickstart/configure-analytics"}]},{"group":"Platform Integration","pages":[{"title":"Google Play Subscription Product","href":"/publishers/android/platform-setup/subscription-product"},{"title":"Real-Time Developer Notifications","href":"/publishers/android/platform-setup/server-notifications"}]},{"group":"Integration Guides","pages":[{"title":"Integration Patterns","href":"/publishers/android/guides/integration-patterns"},{"group":"Reduce Churn","pages":[{"title":"Add Subscription Product","href":"/publishers/android/guides/add-subscription-product"}]}]},{"group":"Updating the SDK","pages":[{"title":"Routine updates","href":"/publishers/android/guides/updating-sdk"},{"title":"Updating to 2.x","href":"/publishers/android/guides/updating-to-2-x"}]},{"group":"SDK Reference","pages":[{"title":"Overview","href":"/publishers/android/sdk-reference/overview"},{"title":"configure()","href":"/publishers/android/sdk-reference/configure"},{"title":"identify()","href":"/publishers/android/sdk-reference/identify"},{"title":"setUserAttributes()","href":"/publishers/android/sdk-reference/set-user-attributes"},{"title":"setLanguage()","href":"/publishers/android/sdk-reference/set-language"},{"title":"clearLanguage()","href":"/publishers/android/sdk-reference/clear-language"},{"title":"reset()","href":"/publishers/android/sdk-reference/reset"},{"title":"EncorePurchaseController","href":"/publishers/android/sdk-reference/purchase-controller"},{"title":"placement()","href":"/publishers/android/sdk-reference/placement"},{"title":"PresentationResult","href":"/publishers/android/sdk-reference/presentation-result"},{"title":"DismissReason","href":"/publishers/android/sdk-reference/dismiss-reason"},{"title":"Encore.outcomes","href":"/publishers/android/sdk-reference/outcomes"},{"title":"UserAttributes","href":"/publishers/android/sdk-reference/user-attributes"},{"title":"EncoreError","href":"/publishers/android/sdk-reference/errors"}]}]},{"group":"Web","pages":[{"group":"Quickstart","pages":[{"title":"Install the SDK","href":"/publishers/web/quickstart/install"},{"title":"Configure the SDK","href":"/publishers/web/quickstart/configure"},{"title":"User Management","href":"/publishers/web/quickstart/user-management"},{"title":"Present Offers","href":"/publishers/web/quickstart/present-offers"},{"title":"Configure Analytics","href":"/publishers/web/quickstart/configure-analytics"}]},{"group":"Integration Guides","pages":[{"title":"Web Integration Patterns","href":"/publishers/web/guides/integration-patterns"},{"title":"Hosted Offer Page (No SDK)","sidebarTitle":"Hosted Offer Page","href":"/publishers/web/guides/hosted-offer-page"},{"group":"Frameworks","pages":[{"title":"React","href":"/publishers/web/frameworks/react"},{"title":"Vue","href":"/publishers/web/frameworks/vue"},{"title":"Svelte","href":"/publishers/web/frameworks/svelte"},{"title":"Angular","href":"/publishers/web/frameworks/angular"},{"title":"Vanilla JavaScript","href":"/publishers/web/frameworks/vanilla-js"}]},{"group":"Reward Users","pages":[{"title":"Post-Purchase Placements","href":"/publishers/web/guides/post-purchase-placements"}]},{"group":"Reduce Churn","pages":[{"title":"Reduce Churn at the Paywall","sidebarTitle":"At the Paywall","href":"/publishers/web/guides/intercept-paywall-abandonment"}]},{"group":"3rd Party Subscription Managers","pages":[{"title":"Using RevenueCat","sidebarTitle":"RevenueCat","href":"/publishers/web/guides/managers/revenuecat"}]},{"title":"Advanced UI","href":"/publishers/web/guides/advanced-ui"}]},{"group":"Updating the SDK","pages":[{"title":"Routine updates","href":"/publishers/web/guides/updating-sdk"},{"title":"Updating to 2.x","href":"/publishers/web/guides/updating-to-2-x"}]},{"group":"Concepts","pages":[{"title":"The Claim Flow","href":"/publishers/web/concepts/claim-flow"},{"title":"Sheet Variants","href":"/publishers/web/concepts/sheet-variants"}]},{"group":"SDK Reference","pages":[{"title":"Overview","href":"/publishers/web/sdk-reference/overview"},{"title":"configure()","href":"/publishers/web/sdk-reference/configure"},{"title":"identify()","href":"/publishers/web/sdk-reference/identify"},{"title":"setUserAttributes()","href":"/publishers/web/sdk-reference/set-user-attributes"},{"title":"setLanguage()","href":"/publishers/web/sdk-reference/set-language"},{"title":"clearLanguage()","href":"/publishers/web/sdk-reference/clear-language"},{"title":"reset()","href":"/publishers/web/sdk-reference/reset"},{"title":"show()","href":"/publishers/web/sdk-reference/show"},{"title":"redeem()","href":"/publishers/web/sdk-reference/redeem"},{"title":"placement()","href":"/publishers/web/sdk-reference/placement"},{"title":"isClaimEnabled","href":"/publishers/web/sdk-reference/is-claim-enabled"},{"title":"onStrictUnlockVerified()","href":"/publishers/web/sdk-reference/on-strict-unlock-verified"},{"title":"Error Handling","href":"/publishers/web/sdk-reference/errors"},{"title":"Webhook Ingestion","href":"/publishers/web/sdk-reference/webhook-ingestion"}]}]},{"group":"Bridges","pages":[{"group":"React Native","pages":[{"group":"Quickstart","pages":[{"title":"Install the SDK","href":"/publishers/react-native/quickstart/install"},{"title":"Configure the SDK","href":"/publishers/react-native/quickstart/configure"},{"title":"User Management","href":"/publishers/react-native/quickstart/user-management"},{"title":"Presenting Offers","href":"/publishers/react-native/quickstart/present-offers"}]},{"group":"Guides","pages":[{"title":"React Native Integration Patterns","href":"/publishers/react-native/guides/integration-patterns"},{"group":"Reduce Churn","pages":[{"title":"Add Subscription Product","href":"/publishers/react-native/guides/add-subscription-product"}]}]},{"group":"Updating the SDK","pages":[{"title":"Routine updates","href":"/publishers/react-native/guides/updating-sdk"},{"title":"Updating to 2.x","href":"/publishers/react-native/guides/updating-to-2-x"}]},{"group":"SDK Reference","pages":[{"title":"configure()","href":"/publishers/react-native/sdk-reference/configure"},{"title":"identify()","href":"/publishers/react-native/sdk-reference/identify"},{"title":"setUserAttributes()","href":"/publishers/react-native/sdk-reference/set-user-attributes"},{"title":"setLanguage()","href":"/publishers/react-native/sdk-reference/set-language"},{"title":"clearLanguage()","href":"/publishers/react-native/sdk-reference/clear-language"},{"title":"reset()","href":"/publishers/react-native/sdk-reference/reset"},{"title":"placement()","href":"/publishers/react-native/sdk-reference/placement"},{"title":"PurchaseController","href":"/publishers/react-native/sdk-reference/purchase-controller"},{"title":"onOutcome()","href":"/publishers/react-native/sdk-reference/outcomes"},{"title":"setClaimEnabled()","href":"/publishers/react-native/sdk-reference/set-claim-enabled"},{"title":"UserAttributes","href":"/publishers/react-native/sdk-reference/user-attributes"},{"title":"PresentationResult","href":"/publishers/react-native/sdk-reference/presentation-result"},{"title":"Errors","href":"/publishers/react-native/sdk-reference/errors"}]}]},{"group":"Flutter","pages":[{"group":"Quickstart","pages":[{"title":"Install the SDK","href":"/publishers/flutter/quickstart/install"},{"title":"Configure the SDK","href":"/publishers/flutter/quickstart/configure"},{"title":"User Management","href":"/publishers/flutter/quickstart/user-management"},{"title":"Presenting Offers","href":"/publishers/flutter/quickstart/present-offers"}]},{"group":"Guides","pages":[{"title":"Flutter Integration Patterns","href":"/publishers/flutter/guides/integration-patterns"},{"group":"Reduce Churn","pages":[{"title":"Add Subscription Product","href":"/publishers/flutter/guides/add-subscription-product"}]}]},{"group":"Updating the SDK","pages":[{"title":"Routine updates","href":"/publishers/flutter/guides/updating-sdk"},{"title":"Updating to 2.x","href":"/publishers/flutter/guides/updating-to-2-x"}]},{"group":"SDK Reference","pages":[{"title":"Overview","href":"/publishers/flutter/sdk-reference/overview"},{"title":"configure()","href":"/publishers/flutter/sdk-reference/configure"},{"title":"identify()","href":"/publishers/flutter/sdk-reference/identify"},{"title":"setUserAttributes()","href":"/publishers/flutter/sdk-reference/set-user-attributes"},{"title":"setLanguage()","href":"/publishers/flutter/sdk-reference/set-language"},{"title":"clearLanguage()","href":"/publishers/flutter/sdk-reference/clear-language"},{"title":"reset()","href":"/publishers/flutter/sdk-reference/reset"},{"title":"placement()","href":"/publishers/flutter/sdk-reference/placement"},{"title":"EncorePurchaseController","href":"/publishers/flutter/sdk-reference/purchase-controller"},{"title":"outcomes","href":"/publishers/flutter/sdk-reference/outcomes"},{"title":"setClaimEnabled()","href":"/publishers/flutter/sdk-reference/set-claim-enabled"},{"title":"EncoreUserAttributes","href":"/publishers/flutter/sdk-reference/user-attributes"},{"title":"EncorePresentationResult","href":"/publishers/flutter/sdk-reference/presentation-result"},{"title":"EncoreDismissReason","href":"/publishers/flutter/sdk-reference/dismiss-reason"},{"title":"Errors","href":"/publishers/flutter/sdk-reference/errors"}]}]},{"group":"Unity","pages":[{"group":"Quickstart","pages":[{"title":"Install the SDK","href":"/publishers/unity/quickstart/install"},{"title":"Configure the SDK","href":"/publishers/unity/quickstart/configure"},{"title":"User Management","href":"/publishers/unity/quickstart/user-management"},{"title":"Presenting Offers","href":"/publishers/unity/quickstart/present-offers"}]},{"group":"Guides","pages":[{"title":"Build Compatibility","href":"/publishers/unity/guides/build-compatibility"}]},{"group":"SDK Reference","pages":[{"title":"Overview","href":"/publishers/unity/sdk-reference/overview"},{"title":"Configure()","href":"/publishers/unity/sdk-reference/configure"},{"title":"IEncorePurchaseController","href":"/publishers/unity/sdk-reference/purchase-controller"},{"title":"Identify()","href":"/publishers/unity/sdk-reference/identify"},{"title":"SetUserAttributes()","href":"/publishers/unity/sdk-reference/set-user-attributes"},{"title":"SetLanguage()","href":"/publishers/unity/sdk-reference/set-language"},{"title":"ClearLanguage()","href":"/publishers/unity/sdk-reference/clear-language"},{"title":"Reset()","href":"/publishers/unity/sdk-reference/reset"},{"title":"Placement()","href":"/publishers/unity/sdk-reference/placement"},{"title":"PresentationResult","href":"/publishers/unity/sdk-reference/presentation-result"},{"title":"Outcomes","href":"/publishers/unity/sdk-reference/outcomes"},{"title":"IsClaimEnabled","href":"/publishers/unity/sdk-reference/is-claim-enabled"},{"title":"IsActive()","href":"/publishers/unity/sdk-reference/is-active"},{"title":"IsActivePublisher()","href":"/publishers/unity/sdk-reference/is-active-publisher"},{"title":"Entitlement","href":"/publishers/unity/sdk-reference/entitlements"},{"title":"LinkPurchase()","href":"/publishers/unity/sdk-reference/link-purchase"},{"title":"CurrentEntitlement()","href":"/publishers/unity/sdk-reference/current-entitlement"},{"title":"RevokeEntitlements()","href":"/publishers/unity/sdk-reference/revoke-entitlements"},{"title":"ClearOfferCache()","href":"/publishers/unity/sdk-reference/clear-offer-cache"},{"title":"UserAttributes","href":"/publishers/unity/sdk-reference/user-attributes"},{"title":"AppearanceConfig","href":"/publishers/unity/sdk-reference/appearance-config"},{"title":"GiftsButton","href":"/publishers/unity/sdk-reference/gifts-button"},{"title":"ClaimReminder","href":"/publishers/unity/sdk-reference/claim-reminder"},{"title":"EncoreTrigger","href":"/publishers/unity/sdk-reference/encore-trigger"}]}]}]}]},{"tab":"Server API","icon":"server","pages":[{"title":"Server API","href":"/publishers/offers-api/guides/receive-completion-events"}]}]},{"product":"Advertisers","icon":"bullhorn","pages":[{"title":"Advertisers","href":"/advertisers/integration"}]}]},"basePath":"","title":"Errors - Encore","buildId":"dpl_8LJbrAiZvr1K98WQNZXCyY5AvT34","deploymentId":"dpl_8LJbrAiZvr1K98WQNZXCyY5AvT34","dynamics":[],"chunks":[]}