Supported on: iOS SDK
1.0.61+ · Android SDK 1.0.33+ · Flutter SDK 1.0.3+Get Variant
getVariant is asynchronous and returns the variant string or null if the experiment is not found, not running, or the user is not in the target audience.
Check Membership
When you only need a boolean for a specific variant,isInVariant is a convenient shortcut:
Module Access
Module Methods
| Method | Signature | Description |
|---|---|---|
getVariant | Future<String?> getVariant(String experimentId) | Get the assigned variant |
isInVariant | Future<bool> isInVariant(String experimentId, String variantId) | Check if the user is in a specific variant |
getExposures | Future<List<Map<String, dynamic>>> getExposures() | Read recorded experiment exposures for the current user |
Exposure Tracking
The SDK automatically tracks anexperiment_exposure event the first time getVariant() is called for a given experiment in a session. 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/experiment pair and only change when the experiment definition is updated on the server. If you need to refresh UI when the experiment configuration could have changed, re-readgetVariant 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 only when the experiment definition changes on the server, not on every session start.
Experiment Lifecycle
| Status | getVariant() returns |
|---|---|
| Draft | null — not visible to SDKs |
| Running | Assigned variant string |
| Completed | Winning variant for all users |
| Archived | null — removed from config |
Full Example
Experiments are created in the Console under Experiments. The SDK uses MurmurHash3 for deterministic assignment — the same user always gets the same variant across sessions, platforms, and offline.

