What are feature flags?
A feature flag is a switch in your code that decides, at runtime, whether a piece of behaviour is on or off — without shipping new code to change it.
The core idea
Instead of hard-coding a decision, you ask a flag. if (featuregate.isEnabled("new-checkout")) runs the new path; otherwise it falls back to the old one. The answer can change without a deploy.
That single indirection unlocks a lot: you can merge unfinished work behind an off flag, turn a feature on for a subset of users, and switch something off the moment it misbehaves.
Deploy is not release
The most important shift feature flags bring is separating deploy from release. Deploying ships the code; releasing turns it on. When those are separate, a deploy stops being a high-stakes event.
Where FeatureGate fits
FeatureGate evaluates flags in-process from a snapshot your server already holds, so a flag check is a memory lookup rather than a network request. You get the flexibility of flags without putting a remote service in your request path.