When an experiment is active and a variation is assigned, the Experiment Center injects anDocumentation Index
Fetch the complete documentation index at: https://docs-staging-feat-experiment-center.mintlify.app/llms.txt
Use this file to discover all available pages before exploring further.
ExperimentContext object into your ACUL component as a prop named experiment.
The injection only happens on screens where you have opted in. You opt in per screen by adding "experiment" to the context_configuration array for that screen.
Using the Management API:
{prompt} with the prompt name (for example, login) and {screen} with the screen name (for example, login).
Experiment resolution and tenant log enrichment always run, regardless of whether a screen has opted in. The opt-in only controls whether
experiment properties are passed to your ACUL component. This is a data-minimization measure: don’t opt in screens that don’t need experiment context.The experiment prop shape
When a screen has opted in and an experiment is active, your ACUL component receives an experiment prop with this shape:
experiment is undefined.
The config parameter contains the complete merged configuration for the assigned variation. The Experiment Center takes the feature flag’s baseline parameters and merges the assigned variation’s overrides on top. Every parameter defined on the feature flag always has a value in config.
For example:
If your feature flag has a parameter button_label with a baseline value of "Sign in", and the assigned variation overrides it to "Continue", then config.button_label.value is "Continue".
For the control variation (no overrides), config.button_label.value is "Sign in".
Read a parameter value
You can access parameter values viaconfig[paramName].value:
?.) throughout. The experiment prop is undefined when no experiment is active.
Use is_control
The parameteris_control is true when the user is in the control group (they received the baseline, no overrides applied). Use it when you need to track which users saw the unmodified experience, or when you want to skip optional processing for control users.
config.my_param.value) rather than is_control.
Parameter-based checks are more readable and work correctly even when you change which variation is the statistical control in a future experiment.
Example: copy variant experiment
This example shows a feature flag with two variations that changes button copy. Control uses the standard label; the treatment uses an alternative. Feature flag parameters:button_label: "Sign in")
Treatment variation:
?? "Sign in" fallback on the last line handles the case where no experiment is active (in which case experiment is undefined and config?.button_label?.value evaluates to undefined). If you prefer, you can use a separate null check:
Example: boolean feature rollout
This example uses a boolean parameter to conditionally show a new UI element.=== true check (rather than a truthy check) is intentional: it ensures the banner only shows when the parameter is explicitly true, not when experiment is undefined or config is missing.
Troubleshoot
Theexperiment property is undefined in three situations:
- No experiment is currently active for the tenant
- The screen has not opted in via
context_configuration - The Experiment Center is not enabled on the tenant
experiment as potentially undefined. The safest pattern:
experiment property is present. Code that relies on experiment being defined will throw errors when no experiment is running, which is the majority of the time.