Feature flags
Turning something on for a few people before everyone.
A feature flag is a switch around something new. The work ships, but stays dark until you say otherwise — so releasing and revealing stop being the same moment. If it goes badly you turn the switch off, and nobody waits for a rebuild.
The flags board: four columns — Dark, Rolling out, Live and Needs attention — each holding cards for one flag. A card in Rolling out shows "40% rolled out"; a card in Needs attention is marked "No row in the store — it resolves on for everyone".
The four columns
Every flag your project declares sits in exactly one column, and the column is the whole status.
| Column | What it means |
|---|---|
| Dark | Off for everyone. You can still let a named person in. |
| Rolling out | On for a share of people. Whoever is in stays in — it does not flicker between visits. |
| Live | On for everyone allowed to see it. |
| Needs attention | Resolving in a way nobody chose. |
That last column is the one worth looking at. A flag lands there for one of two reasons: it exists in your app but was never set up here, in which case it is on for everyone by default — rarely what anyone meant — or it has been deleted from the app and is still sitting in the list waiting to be tidied away.
Two buttons fix both. Create missing rows gives every declared flag a proper setting. Prune undeclared clears out the ones the app no longer knows about.
Letting one person in early
Under any flag you can pin a specific person or organisation on or off, regardless of which column the flag sits in. This is how you demo something still in the dark to one customer, and how you take one account back out of a rollout that is upsetting them, without changing anything for anyone else.
Each pin records who added it and when.
Turning a flag Live asks you to confirm. There is no rollout limit on Live — it admits everybody at once, and confirming is the only thing standing between a quiet test and a public launch.
Where flags come from
The list is not something you add to here. Flags are declared in your app, and this board reads them. If another service owns your flags, the board says so and becomes read-only — change them where they are defined.
Where to go next
- Environment variables — settings that differ between your workspace and your live app.
- Scopes — who is allowed to do what, which is a different question from what is switched on.