Skip to main content
The SDK reports failures as values, not exceptions. show() never throws on iOS or Android, so a missing try/catch can’t break an integration. There is no typed error class in Dart: a native failure arrives as an errorType string plus a human-readable errorMessage.

errorType values

errorType is the stable identifier from the native SDKs’ shared error vocabulary.

Where errors arrive

Presentation failures

A failure that stopped the sheet from appearing lands on the EncorePresentationResult as EncoreNotPresented with reason == EncoreNotPresentedReason.error:
Do not gate your fallback on the error branch. EncoreNotPresented also covers noOffers, experimentControl, and useCaseUnavailable, none of which are failures, and all of which still need your original flow to continue.

Claim failures

A claim that errored after the sheet appeared surfaces on the advertiser funnel instead, as EncoreAdvertiserFailed with its own errorType and errorMessage. The user never saw it.

Purchase failures

Throwing from your purchase controller records EncorePublisherOutcome.failed, and the flow continues. Return EncorePurchaseResult.cancelled for a user cancellation and EncorePurchaseResult.pending for a deferred purchase rather than throwing either.

Platform exceptions

The methods other than show() are thin calls over a platform channel, and can raise a PlatformException for integration faults: Calling the plugin on web or desktop throws MissingPluginException, because the plugin implements iOS and Android only.