Which primitive should I use?
Decision tree — map your goal to feature flags, configs, or killswitches.
You have a change to ship. Which Shipeasy primitive fits? Walk the tree.
Cheat sheet
Feature flag→
"Show v2 of checkout to 5% of EU users." Boolean output. Targeting rules + rollout %.
Config→
"Set the homepage hero copy to '...' in production, '...' in staging." Typed value. Per-env drafts.
Killswitch→
"Stop sending emails. Right now." One bit, big red button. Auditable in the activity log.
Common mistakes
If your code reads if (gate) value = 'A' else value = 'B', you've smuggled a value through a
boolean. Use a config — schema-validated, typed, supports more than two values.
A 50% rollout tells you who saw what, not whether it worked. If the question is "did this move the number", define a metric over your own events and watch it across the ramp — the flag decides exposure, the metric decides whether you keep going.
Page-at-3am feature flags blur incident response. Killswitches sit in their own list, default to "on", and don't have ramp percentages to fat-finger.