Applicaties 6 min

Wat is een feature flag en hoe gebruik je het?

Kort antwoord

Een feature flag, ook wel feature toggle genoemd, is een instelling in de code van een applicatie waarmee je een specifieke functie aan of uit kunt zetten zonder nieuwe code te deployen. Ontwikkelaars gebruiken feature flags om nieuwe functionaliteit geleidelijk uit te rollen, snel terug te draaien bij problemen, of een functie alleen voor een deel van de gebruikers zichtbaar te maken. Dit ontkoppelt het moment van deployen van het moment waarop gebruikers een functie daadwerkelijk zien.

Een feature flag is een schakelaar in code waarmee je functionaliteit aan- of uitzet zonder een nieuwe versie uit te rollen.

Zonder feature flags is elke release alles-of-niets: zodra je een nieuwe versie deployt, zien alle gebruikers alle wijzigingen tegelijk. Werkt iets niet zoals verwacht, dan moet je de hele deployment terugdraaien. Feature flags maken dat proces veel fijnmaziger.

Wat een feature flag technisch is

In de code komt een feature flag neer op een eenvoudige controle: if (flagIsActief) { toon nieuwe functie } else { toon oude functie }. De waarde van die flag staat niet vast in de code zelf, maar in een configuratiebestand, een database of een extern platform, zodat je hem kunt aanpassen zonder een nieuwe deployment te doen.

Dat is het kernvoordeel: het moment waarop code wordt uitgerold naar de server (deployment) en het moment waarop een gebruiker een functie daadwerkelijk ziet (release), zijn niet langer hetzelfde moment. Je kunt nieuwe code al weken van tevoren live zetten, verborgen achter een flag, en pas op het juiste moment de schakelaar omzetten.

Geleidelijk uitrollen in plaats van alles-of-niets

Een van de grootste toepassingen van feature flags is geleidelijke uitrol, ook wel een gefaseerde of canary release genoemd. In plaats van een nieuwe functie voor alle gebruikers tegelijk aan te zetten, zet je hem eerst aan voor 5 procent van het verkeer. Blijkt alles stabiel, dan verhoog je dat percentage stap voor stap naar 25, 50 en uiteindelijk 100 procent.

Dit beperkt de impact van een eventuele bug enorm: gaat er iets mis bij 5 procent van de gebruikers, dan merk je dat en zet je de flag uit, in plaats van dat je hele gebruikersbestand geraakt wordt. Dit werkt ook goed samen met een goede CI/CD-pipeline: code kan continu worden gedeployed, terwijl de daadwerkelijke zichtbaarheid via flags apart wordt geregeld.

Feature flags als noodrem

Naast geleidelijke uitrol dienen feature flags als vangnet. Ontdek je na een release dat een nieuwe functie trage laadtijden of foutmeldingen veroorzaakt, dan zet je de flag met één klik uit. De functie verdwijnt direct voor alle gebruikers, zonder dat je hoeft te wachten op een nieuwe deployment of een rollback van de code. Voor teams die vaak en snel willen uitrollen, is deze noodrem vaak de doorslaggevende reden om flags in te voeren.

A/B-testen met feature flags

Feature flags vormen ook de technische basis voor A/B-testen. Je zet de flag zo in dat de ene helft van je bezoekers versie A van een pagina of functie ziet, en de andere helft versie B. Door vervolgens te meten welke versie beter converteert of prettiger werkt, neem je een onderbouwde beslissing in plaats van een gok. Het verschil met een gewone feature flag is puur het doel: bij A/B-testen wil je meten, bij geleidelijke uitrol wil je risico beperken.

Het opruimrisico van feature flags

Het grootste nadeel van feature flags is dat ze, als je ze niet actief opruimt, blijven hangen in de code. Elke actieve flag is een extra vertakking die getest en onderhouden moet worden. Na een jaar kan een codebase tientallen verouderde flags bevatten waarvan niemand meer weet of ze nog nodig zijn. De discipline om een flag te verwijderen zodra een functie volledig en stabiel is uitgerold, is minstens zo belangrijk als het invoeren van de flag zelf.

Onze tip: voer geen feature flag in zonder meteen een verwijderdatum of -moment af te spreken. Zet in je planning een concrete taak: “flag X opruimen zodra functie Y twee weken stabiel draait.” Zo voorkom je dat je codebase langzaam volloopt met schakelaars die niemand meer durft aan te raken.

Veelgestelde vragen

Wat is het verschil tussen een feature flag en een A/B-test?

Een feature flag is de technische schakelaar waarmee je functionaliteit aan- of uitzet voor bepaalde gebruikers. Een A/B-test is een toepassing van die schakelaar: je zet de flag zo in dat de ene helft van je gebruikers versie A ziet en de andere helft versie B, en meet vervolgens welke versie beter presteert. Feature flags zijn dus breder inzetbaar dan alleen testen; ze worden ook gebruikt voor geleidelijke uitrol en noodremmen, los van enige meting.

Verhogen feature flags niet juist de complexiteit van code?

Ja, als je flags niet actief opruimt wel. Elke actieve flag betekent een extra vertakking (if/else) in de code die getest en onderhouden moet worden. Het risico is dat een codebase na verloop van tijd tientallen verouderde flags bevat die niemand meer durft te verwijderen. De oplossing is discipline: zodra een functie volledig is uitgerold en stabiel is, verwijder je de flag en de oude codepad binnen enkele weken, in plaats van de flag voor altijd te laten staan.

Kun je feature flags ook gebruiken als noodrem?

Ja, dit is een van de belangrijkste toepassingen. Merk je na een release dat een nieuwe functie problemen veroorzaakt, bijvoorbeeld trage laadtijden of foutmeldingen, dan zet je de flag met één klik uit. De functie verdwijnt dan direct voor gebruikers, zonder dat je een nieuwe deployment hoeft te doen of code hoeft terug te draaien. Dat maakt het herstellen van een probleem een kwestie van seconden in plaats van de tijd die een volledige nieuwe deploy kost.

Welke tools gebruik je om feature flags te beheren?

Voor kleine projecten volstaat vaak een eenvoudige boolean-waarde in een configuratiebestand of environment-variabele. Voor grotere toepassingen met veel flags en behoefte aan doelgroepgerichte uitrol, bijvoorbeeld alleen voor bèta-gebruikers of een percentage van het verkeer, gebruik je gespecialiseerde diensten zoals LaunchDarkly, Unleash of de feature flags van Cloudflare. Deze bieden een dashboard waarin je flags aan- en uitzet zonder dat een ontwikkelaar erbij hoeft te komen.

Hier over sparren?

Plan een vrijblijvend gesprek. We luisteren mee, schetsen een aanpak en geven een eerlijk beeld van wat haalbaar is, zonder verkoopdruk.