Which primitive should I use?
Decision tree — map your goal to gates, configs, killswitches, or experiments.
You have a change to ship. Which ShipEasy primitive fits? Walk the tree.
Cheat sheet
Gate→
"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.
Experiment→
"Does v2 actually convert better than v1, with p < 0.05?" Variant split + automated stats.
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.
If you're using a 50% rollout to "see if v2 is better", you have no statistical guarantee. Use an experiment — same UX, but you get a p-value and a confidence interval back.
Page-at-3am gates blur incident response. Killswitches sit in their own list, default to "on", and don't have ramp percentages to fat-finger.