- A key — the developer-facing identifier (e.g.
new-checkout-flow). Immutable after creation. - A type —
boolean,string, ornumber. Determines what values the flag can return. - A config per environment — flags are independently controlled in each of your environments.
Flag types
| Type | Default value | Example use |
|---|---|---|
boolean | true / false | Feature on/off |
string | Any string | A/B copy, theme name, API endpoint |
number | Any number | Rate limit, sample rate, price |
clientSafe
By default, flags are only accessible to server API keys. Setting clientSafe: true allows the flag to be included in the public bundle fetched by browser SDKs (client API keys).
Only mark a flag clientSafe if its value carries no sensitive business logic — client-side code is readable by end users.
Archiving
Settingarchived: true marks the flag as inactive. Archived flags are hidden in the dashboard by default but remain in the database and are still returned by the API unless filtered out.
Versions
Flag state is append-only. Every change to a flag’s config in an environment creates a newflag_version row — previous versions are never mutated. This is what powers the audit trail and change proposals.
See Flag Config for the full config schema.