Chapter 1. Introduction
Feature flags (aka toggles, flips, gates, or switches) are a software delivery concept that separates feature release from code deployment. In plain terms, it’s a way to deploy a piece of code in production while restricting access—through configuration—to only a subset of users. They offer a powerful way to turn code ideas into immediate outcomes without breaking anything in the meantime.
To illustrate, let’s assume that an online retailer is building a new product carousel experience for customers to easily view featured products. Here is a quick example of how it could use a flag to control access to this feature:
if (flags.isOn("product-carousel")) {
renderProductImageCarousel();
} else {
renderClassicProductImageExperience();
}
Here flags is an instance of a class that evaluates whether a user has access to a particular feature. The class can make this decision based on something as simple as a file, a database-backed configuration, or a distributed system with a UI.
The Past, Present, and Future of Feature Flagging
The fundamental concept behind feature flags—choosing between two different code paths based on some configuration—has probably been around almost as long as software itself.
In the 1980s, techniques like #ifdef preprocessor macros were commonly used as a way to configure code paths at build time. They were primarily used for supporting compilation to different CPU architectures, but were also commonly used as a way to enable experimental ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access