getPresentationResult()
Check the outcome of a placement without presenting a paywall.
Purpose
Retrieves the presentation result for a placement without presenting the paywall. Call this when you need to know whether a placement would show a paywall, send the user to a holdout, or fail due to missing configuration before you decide how to render UI.
Signature
Hook usage:
const { getPresentationResult } = useSuperwall()
await getPresentationResult(
placement: string,
params?: Record<string, any>
): Promise<PresentationResult>Compat API usage:
import Superwall from "expo-superwall/compat"
await Superwall.getPresentationResult({
placement: string,
params?: Map<string, any>
}): Promise<PresentationResult>Both variants return a promise that resolves to a PresentationResult object from expo-superwall/compat.
Parameters
Prop
Type
Returns / State
The promise resolves to one of the PresentationResult subclasses exported from expo-superwall/compat:
Prop
Type
If configuration fails or the native module throws, the promise rejects—catch and handle these errors as you would any async call.
Usage
import {
PresentationResultPaywall,
PresentationResultHoldout,
PresentationResultNoAudienceMatch,
PresentationResultPlacementNotFound,
} from "expo-superwall/compat"
import { useSuperwall } from "expo-superwall"
export function FeatureGate() {
const { getPresentationResult } = useSuperwall()
const checkAccess = async () => {
const result = await getPresentationResult("premium_feature", { source: "settings" })
if (result instanceof PresentationResultPaywall) {
setExperiment(result.experiment)
setState("locked")
} else if (result instanceof PresentationResultHoldout) {
setState("holdout")
} else if (result instanceof PresentationResultNoAudienceMatch) {
unlockFeature()
} else if (result instanceof PresentationResultPlacementNotFound) {
console.warn("Placement missing from dashboard")
} else {
fallbackFlow()
}
}
return <Button title="Check access" onPress={checkAccess} />
}import Superwall, {
PresentationResultPaywall,
PresentationResultPaywallNotAvailable,
} from "expo-superwall/compat"
async function inspectPlacement() {
const result = await Superwall.getPresentationResult({
placement: "premium_feature",
params: new Map([["source", "home"]]),
})
if (result instanceof PresentationResultPaywallNotAvailable) {
// Show offline UI
return
}
if (result instanceof PresentationResultPaywall) {
console.log("Experiment group:", result.experiment.groupId)
}
}Related
useSuperwall– Provides the hook variant shown above.SuperwallProvider– Configure the SDK before calling this method.- Feature gating quickstart – Shows the full flow of gating UI with placements.
How is this guide?
Edit on GitHub