Een feature flag is een schakelaar in je code die een stukje functionaliteit aan of uit zet zonder dat je iets nieuws hoeft uit te rollen. De code voor de functie staat er al, sluimerend, en wacht tot de flag bepaalt wie hem ziet en wanneer.

Denk aan een dimmer in een kamer die je net opnieuw bedraad hebt. De nieuwe lamp hangt erin, maar jij bepaalt hoeveel mensen ervan ervaren. Je kunt hem uit laten, hem voor één hoek aanzetten of hem helemaal opdraaien. Een feature flag geeft je diezelfde knop over een softwarefunctie, zodat je hem aan tien procent van de gebruikers laat zien, kijkt hoe hij zich gedraagt en van daaruit uitbreidt. De schakelaar zit meestal in een klein dashboard en niet in de code zelf, zodat een productmanager hem kan omzetten zonder een developer te vragen.

In de praktijk is een flag vaak gewoon een ‘als’-check. Staat de flag aan voor deze gebruiker, toon dan de nieuwe checkout; zo niet, toon de oude. Beide versies zitten tegelijk in de draaiende app, en de flag bepaalt welk pad elke bezoeker neemt.

Dit is de bouwsteen achter feature flagging als werkwijze, en het past natuurlijk bij continuous deployment. Code kan naar productie terwijl de functie verborgen blijft achter een uit-flag, wat het uitrollen van code loskoppelt van het aanzetten ervan. En ziet iets er fout uit, dan zet je de flag om in plaats van naar een rollback te grijpen.

Bij TopDevs gebruiken we feature flags om wijzigingen veilig vrij te geven, zodat een klant een nieuwe functie eerst aan een kleine groep kan tonen en hem binnen seconden weer uit kan zetten.