Feature Flags
A feature flag is a palette of typed values and the rules that decide who gets which one. Wrap a change in a flag and you control its release without shipping again — for everyone, a segment, or a single person.
Typed variations
Every flag has a type, and its variations are values of that type — validated when you save, so a boolean flag can't accidentally serve a string. One variation is marked the default for anyone no rule matches.
{
"key": "checkout-cta",
"type": "string",
"variations": {
"control": "Buy now",
"treatment": "Add to cart"
},
"defaultVariationKey": "control"
}Targeting rules
A flag carries an ordered list of targeting rules, evaluated top to bottom. The first rule whose conditions all match decides the variation — and a rule can split its matched traffic across variations by weight.
Match anyone in a given audience segment.
Match specific signed-in identities.
Match on any attribute a profile carries.
Match on platform, version, or locale.
Match on how another flag resolved.
Deterministic bucketing
When a rule splits traffic, who lands where isn't random. A stable hash of the user and a per-flag salt maps everyone to a bucket, so a person sees the same variation on every visit — until you regenerate the salt to reshuffle.
user · saltstable hash → the same bucket, every visit
Lifecycle
A flag moves through a simple lifecycle — drafted in private, enabled into service, disabled to fall back to its default, and archived when it has done its job.
Keep exploring
Flags, A/B tests, rollouts, and results — one system.
Measure one variation against another, with sticky assignment.
Ramp the winner automatically, with guardrails that halt on regression.
Real statistics from your analytics, with a ship / don't-ship call.