Concepts / A/B experiments
A/B experiments
An experiment serves one of several flow variants behind a single key, keeps each user on their assigned variant, and measures the whole funnel — not just taps — per variant.
Anatomy of an experiment
You create an experiment from the A/B tests section, or directly from the flow editor's A/B test button — which spins one up with the current flow as the baseline variant. Each variant is a full flow you edit independently: change one headline or replace the entire funnel. Experiments have their own key and a lifecycle: start, stop, and rollout (promote the winner to 100%).
Assignment is sticky
When the SDK requests an experiment key, the server assigns a variant and returns it with the flow. The assignment is tied to a stable subject — the SDK's persisted anonymous ID, or the user ID once you've called identify — and persisted on-device, so a user sees the same variant on every launch, even offline.
Using an experiment from the SDK
// Instead of UpliftFunnelFlow('onboarding'), point at the experiment key.
// Assignment is decided server-side and stays sticky per user.
UpliftFunnelFlow.experiment(
'onboarding-test',
onCompleted: (result) {
// Which variant did this user see?
final exp = result.experiment;
debugPrint('variant: ${exp?.variantName}');
},
)Every event the SDK reports during an experiment session carries the experiment and variant IDs, which is what powers per-variant analytics.
Reading results
The experiment detail page shows a full-funnel table per variant — started, completed, activated, trial started, paid — a timeseries chart, and Bayesian decision support: the probability each variant is best and the expected uplift, with a recommendation banner when the data is conclusive. No p-value spelunking required.
For the dashboard walkthrough of creating and managing tests, see Flow editor; for revenue metrics in the funnel table, connect RevenueCat or Adapty.