Feature Flags
A feature flag is a named boolean that your application checks at runtime to decide which code path to execute.
Creating a flag
- Navigate to Flags in the sidebar
- Create a new flag
- Fill in the flag name — the key is auto-generated from the name (you can edit it)
- Select the environment this flag will start in
- Confirm creation
The flag starts disabled in all environments.
Flag key
The key is the identifier your code uses (e.g. new-checkout). It:
- Is auto-generated from the name but editable before creation
- Cannot be changed after creation
- Is case-sensitive
- Must be unique within a project
Choose your key carefully — it's used in your code. Once you reference it in production code, changing it requires a code change.
Enabling / disabling
Each flag has an on/off toggle per environment. Disabling a flag overrides all rules — it returns false for everyone regardless of targeting.
This is the kill-switch behaviour. See Kill-Switch a Feature →
Flag status
| Status | Meaning |
|---|---|
| Active | The flag has at least one environment where it's been toggled or has rules. |
| Inactive | Newly created flag, never toggled. |
Deleting a flag
Go to the flag detail page → Delete flag (danger zone at the bottom).
Deleting a flag removes it from all environments and all rules that reference it. This action cannot be undone.
If your code references a deleted flag, the evaluation API returns HTTP 200 with value: false and error.type: "FLAG_NOT_FOUND" — it does not return a 404 error. Your code should always treat value: false as the safe default. It is safe to leave a flag reference in your code even if the flag no longer exists; the evaluation will return false gracefully.