Skip to main content
A flag is a named toggle or value that your application reads at runtime. Every flag has:
  • A key — the developer-facing identifier (e.g. new-checkout-flow). Immutable after creation.
  • A typeboolean, string, or number. Determines what values the flag can return.
  • A config per environment — flags are independently controlled in each of your environments.

Flag types

TypeDefault valueExample use
booleantrue / falseFeature on/off
stringAny stringA/B copy, theme name, API endpoint
numberAny numberRate 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

Setting archived: 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 new flag_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.