Supported on: iOS SDK
1.0.70+ · Android SDK 1.0.42+ · React Native SDK 1.0.7+ (New Architecture only)Get Variant
getVariant is asynchronous and returns the variant ID set in the Console or null if the experiment is not in the config the SDK holds, is not running (paused, completed or archived), does not target the current platform, or the user is outside its targeting rules or traffic allocation (SDK 1.0.19+, evaluated by the native SDK; see Who Is in an Experiment). experimentId is the experiment’s ID, not its name — copy it from the experiment’s page or the ID column of the experiments list in the Console; 'paywall-test' above is a placeholder.
Check Membership
When you only need a boolean for a specific variant,isInVariant is a convenient shortcut:
Module Access
Module Methods
Exposure Tracking
The SDK automatically tracks anexperiment_exposure event the first time it assigns a variant for a given experiment (on getVariant(), isInVariant() or a servable surface), and again only after an app restart or reset(). A user outside the experiment’s targeting or traffic allocation gets null and records no exposure. Exposure events power the metrics that the experimentation engine uses to compute results — you do not need to fire them yourself.
To inspect what the SDK has already recorded for the current user, call getExposures():
Reacting to Assignment Changes
The SDK does not push assignment-change callbacks. Variant assignments are stable for a given user ID and experiment: variants and weights cannot change while an experiment runs. An assignment changes when the user ID changes (identify() or reset()), and getVariant returns null once the experiment is paused, completed or archived and the SDK has fetched config. If you need to refresh UI when the experiment configuration could have changed, re-read getVariant at natural moments in your app:
- On app launch and on return from background
- When you present the screen that depends on the variant
- After a known config-refreshing action (e.g. login, environment switch)
Assignment changes are rare. They occur when the user ID changes or the experiment stops, not on every session start.
Experiment Lifecycle
A status change reaches the device with its next config fetch; until then the SDK keeps the definition it has. See Experiment Lifecycle.
Full Example
Experiments are created in the Console under Experiments. The SDK uses MurmurHash3 for deterministic assignment — the same user ID always gets the same variant across sessions, platforms, and offline.

