The simplest possible flag
A pure on/off toggle for all traffic:default: true via the CLI) and every user gets the new value on the next bundle refresh. No experiment, no policy — just a remote-controlled boolean.
Targeted flags
For “enable for internal users” or “enable for a specific company” patterns, create a static policy with conditions:true. Everyone else gets the default (false). The same pattern works for company-scoped flags, plan-scoped flags, country-scoped flags — any condition you can express against context.
Percentage rollouts
For “release this to 5% of traffic” patterns, attach a rollout to a static policy:true; everyone else gets false. The rollout machinery handles ramping the range over time, optionally with health checks.
Killswitches
A killswitch is just a boolean parameter you flip tofalse (or true, depending on the polarity) in an emergency. There’s no special API:
false in the dashboard and the bundle propagates within the SDK’s refresh interval (default 60s). For shorter propagation, reduce refreshIntervalMs on the client.
For a faster guarantee, combine this with a progressive rollout that monitors a health metric (e.g. error rate) — Traffical will auto-pause or auto-rollback before a human notices.
Flags as the entry point to experiments
A common pattern: start a feature behind a percentage rollout, watch the metrics, then graduate the flag into a full A/B test by adding a treatment allocation with a different value. That’s not a migration — it’s a one-line change to the same policy. The parameter’s type doesn’t change. The SDK code doesn’t change. You just turn one allocation into two.What feature flags can’t do alone
If you find yourself adding more booleans to control variant behaviour (show_new_layout, use_new_copy, apply_new_discount — all in the same experiment), you’re hitting the wall of the boolean model. Switch to typed parameters:
Next steps
Rollouts
Progressive ramp with health checks.
A/B testing
From a flag to a real experiment.
Parameters
Beyond booleans — typed values.