Feature Flag
A runtime switch that decouples shipping code from enabling behavior.
A feature flag is a runtime condition that turns behavior on or off without deploying. Flags are what make Trunk-Based Development and Continuous Deployment practical: unfinished work can be merged and deployed while remaining inert.
Their uses divide into release flags (temporary, removed once a feature is fully out), operational flags (permanent kill switches), permission flags (entitlements), and experiment flags (A/B allocation). Conflating them is how flag systems become unmanageable, since only the first kind should ever be deleted and only the last needs analytics.
Two implementation notes matter more than the mechanism.
Gate at the narrowest point that is actually load-bearing. If every affordance for a feature hangs off one component, one condition covers all of them. But hiding the interface is not sufficient — the write path must be gated too, or the capability is merely undiscoverable.
Verify the off state positively. An absent element is indistinguishable from a page that failed to load. Confirming that the surrounding interface is present on the same load is what makes "the flag is off" a real observation rather than an inference.
Flags accumulate. A flag whose feature has fully shipped is dead conditional logic in every path it touches, and removing it is real work that has to be scheduled.
See also8
Draft and Published
Keeping an in-progress version of content separate from the live one, with all the state that implies.
Data & Content6 connections
Headless CMS
A content system exposing structured data through an API, with presentation left entirely to consumers.
Data & Content12 connections
Technical Debt
The future cost of a present shortcut, metaphorically accruing interest.
Method31 connections
Multi-Tenancy
One deployment serving many isolated customers, with tenancy threaded through data, routing, and access.
Data & Content12 connections
Relational Database
Data organized as tables with declared relationships, queried declaratively and guarded by constraints.
Data & Content21 connections
Continuous Integration
Automatically building and testing every change, so integration problems surface immediately.
Version Control & Delivery38 connections
Documentation Rot
Documentation that has drifted from the system it describes, and is now worse than none.
Method28 connections
Progressive Delivery
Releasing a change to a growing share of users while watching its effect, so problems are caught when they affect few people and the rollout halts automatically.
Version Control & Delivery7 connections
Linked from17
- AB TestingMethod
Comparing two versions of something by randomly showing each to different users and measuring which performs better, a randomized controlled trial for products.
- Acceptance TestingTesting & Verification
Checking that software does what its users and stakeholders actually need, the criteria agreed before building, and the gap between passing every test and building the right thing.
- Blue-Green DeploymentVersion Control & Delivery
Running two identical production environments and switching traffic between them instead of upgrading one in place.
- Canary ReleaseVersion Control & Delivery
Shipping a change to a small slice of traffic first, and only widening it once that slice looks healthy.
- Continuous DeploymentVersion Control & Delivery
Automatically releasing every change that passes validation.
- Draft and PublishedData & Content
Keeping an in-progress version of content separate from the live one, with all the state that implies.
- Feature BranchVersion Control & Delivery
A branch created to develop one change in isolation before merging it back, a workflow that keeps the main line stable but grows riskier the longer the branch lives, since its divergence from everyone else's work compounds.
- Headless CMSData & Content
A content system exposing structured data through an API, with presentation left entirely to consumers.
- Key-Value StoreData & Content
The simplest kind of database, which stores opaque values under unique keys and supports little more than get, put and delete, trading query power for speed and easy scaling.
- Live Service GamePlay & Games
A game operated as a running service rather than shipped as a finished artifact, with the consequences that shift implies.
- Multi-TenancyData & Content
One deployment serving many isolated customers, with tenancy threaded through data, routing, and access.
- Progressive DeliveryVersion Control & Delivery
Releasing a change to a growing share of users while watching its effect, so problems are caught when they affect few people and the rollout halts automatically.
- Relational DatabaseData & Content
Data organized as tables with declared relationships, queried declaratively and guarded by constraints.
- Release TrainVersion Control & Delivery
Shipping on a fixed schedule whether or not a given feature is ready, so features that miss one release simply wait for the next instead of holding everyone back.
- Staging EnvironmentTesting & Verification
A copy of production where changes are deployed and checked before they reach real users, and why the differences between staging and production keep letting bugs through.
- Technical DebtMethod
The future cost of a present shortcut, metaphorically accruing interest.
- Trunk-Based DevelopmentVersion Control & Delivery
Everyone integrating into one shared branch continuously, with short-lived feature branches.