demo · v140

Flag Attribution

Roll a feature flag out to 5% and crashes jump 20% — was it the flag or the cohort? Tag each crash report with the exact flag set that was live when the renderer hit the wall, and your dashboard can answer the question without you logging in.

Toggle individual flags. Every change rewrites the flags key on the crash payload.

no flags active

awaiting crash
// A feature-flag client typically batches its evaluations.
function applyFlags(set) {
  for (const [name, value] of Object.entries(set)) {
    crashReport.set(`ff_${name}`, String(value));
  }
  crashReport.set("flag_revision", set.__revision);
}

// Crash dashboard groups by ff_* prefix — instant "which flag killed us"

cardinality note

Don't dump every flag into its own key — pick the ones likely to be regression suspects. Most teams set a single composite key (flags_bitset or flag_revision) plus the half-dozen "high-risk" flags individually, and resolve the rest server-side from the revision. The KV API has a per-document size budget; tags that don't help bucketing are pure overhead.

see also