Function flags greatest practices. One-click management over what customers see

Think about that you just launch a brand new characteristic and fear about nothing – you may flip it on and off in seconds, step by step roll out new parts, make A/B assessments, configure conditional entry, and way more. That magical resolution is characteristic flags. Feels like your life is about to get simpler? Sure, however do not forget that with nice energy comes nice duty. At this time is your fortunate day, you’ll learn to profit from characteristic flags greatest practices and the way to implement characteristic flags in your software program growth mission.

What are characteristic flags and why do you want them?

Options flags (or characteristic toggles) are a mechanism that permits to allow or disable options (items of code) with out deploying a brand new model of the app. You management the visibility of a single characteristic and even complete pages within the app. 

From the developer’s perspective, the characteristic flag is an extra if assertion in code. The one distinction is that the circumstances are managed exterior the app. 

That’s why I name characteristic flags “ifs as a service”.

particular feature flag (feature toggle) meme - no to add if to code, yes to add new feature flag

There are numerous providers that allow you to with characteristic flags administration however, after reviewing the out there choices, I extremely suggest LaunchDarkly. You should use LaunchDarkly in each internet and cellular growth. This device lets you set completely different values for a flag, proportion rollout, and a lot extra extra. I’m utilizing LaunchDarkly for over a 12 months now and I couldn’t be happier with it.

Function flagging greatest practices on your utility

You determined that you just want a flag in your system and need to implement this appropriately. Right here’s what it’s essential to concentrate on.  

Make investments time in good naming conventions

When working with characteristic flags it’s essential to take a position time in good naming. Individuals say that naming variables are one of many hardest issues in programming. With regular variables, you may all the time examine the file and different variables for context. However with characteristic flag naming is the one factor you need to work with. Relying on the title you need to know the aim of this flag. For instance: 

The extra particulars you present within the title, the higher. 

Don’t use disable/disguise in flag title

I don’t suggest utilizing detrimental varieties in if’s circumstances. It’s arduous to learn and requires extra effort to make use of. Like with this instance:

With one flag it’s nonetheless simple to decode the which means. However what if there’s a couple of flag in situation? 

It’s also very irritating while you need to set a correct flag worth. Think about: “That is disabled once I give true worth, so to allow this on manufacturing I’ve to provide false worth”. False worth to allow flag is unintuitive.

single toggle critical path code change for certain code paths

Create crew naming conventions for flags

That is an extension of the earlier paragraph. Get a whole crew on board and write down conventions and requirements on your flags. Right here’s what you need to take into account:

  • including crew title to flag (it’s simpler to seek out folks accountable for flags),
  • including a prefix to the flag title (e.g temp, rollout, experiment, config file, and so on.) will simplify flag administration and take away outdated flags,
  • camelCase or snake_case,
  • different naming conventions that you just already use in your initiatives.

Describe flag position 

A great title is a minimal requirement for the flag to be usable. However I extremely suggest including some description to the flag. That is info for you and different teammates about why this flag was created. It appears pointless while you create this, however consider me – after weeks/months/years you gained’t keep in mind why you created this flag. Description might be added immediately within the software program you utilize for flags, however you may also create an extra doc.

Create a doc for monitoring functions

It’s simple so as to add a brand new flag but it surely’s arduous to trace all of them. From my expertise, builders overlook about flags simply after ending their duties. Typically they’re reminded about the identical characteristic flags when a bug happens. And belief me once I say that eradicating the flag when nobody remembers why it was created within the first place is the worst process possible. Particularly when the flag creator doesn’t work within the firm anymore or the response product crew was reworked into one other. 

remember about feature flags in code base & code deployment documentation

What info you need to monitor:

  • flag title,
  • accountable crew,
  • ticket the place characteristic toggles have been launched (or the context why the flag was launched),
  • anticipated end-of-life date,
  • another notes.

Make audits

Sadly, making a doc just isn’t sufficient. It is a superb observe to make common doc audits. I like to recommend at the least one examine per 12 months or each six months. Throughout this audit, you need to examine if:

  • each flag is effectively described,
  • each flag is on this doc,
  • you continue to want your non permanent flags (temp, rollout, experiment),
  • pointless flags have been eliminated. 

Advantages of a characteristic flag applied into your app 

Function flags have a number of very encouraging benefits.

For my part, one of the best revenue is that characteristic flags separate code from visibility to the consumer.

Merging new options/enhancements to code doesn’t imply that each consumer will see this in-app. This fashion you acquire full management over the characteristic lifecycle (together with characteristic visibility) and scale back the variety of crucial bugs on manufacturing

Let’s see extra characteristic flagging income in additional element.

Launch now, activate later

You don’t want further branches for brand new options and may merge adjustments in code (new options/enhancements) on to the primary department. This removes a number of issues on the developer facet:

  • you don’t must sync the characteristic department with the primary,
  • a brand new characteristic is all the time in sync with different adjustments,
  • no code conflicts,
  • simpler to make adjustments to the entire utility (e.g library updates),
  • all adjustments are small and code evaluate is fast.

There’s a pleasant upside from a enterprise perspective too. Builders can merge recently-added options once they suppose they’re prepared. Then a supervisor decides if the characteristic launch course of will occur now or if it wants to attend a bit longer for a greater alternative. For instance this instance: builders completed a brand new characteristic for an internet store but it surely’s per week earlier than Black Friday – a day of large consumer site visitors. Is it higher to introduce this characteristic earlier than or after Black Friday? Will it confuse the customers or make buying simpler for them?

Safety button

Function flags work as a safety swap – if there’s something fallacious with new performance, you may disable it with one click on. 

You most likely skilled testing new options. It’s a sophisticated course of and wishes a number of expertise from the tester. Nonetheless, it doesn’t matter what you do, every now and then you’ll omit a bug inflicting issues within the manufacturing surroundings. In a traditional workflow, recognizing an error on manufacturing means debugging. Then you definately’ll spend a while fixing and deploying a brand new model. If it’s a crucial error for user-facing options, folks gained’t be capable of use your app for a number of hours, inflicting loss to the enterprise. 

Should you use characteristic flags as an alternative, you may first disable a given characteristic, giving groups on a regular basis they should work on fixing this difficulty, and if mandatory, modify system habits. Function flag administration could be very simple, and have switches take minutes, not hours. 

feature flag best practices. debugging by disabling permanent feature flags

Each new ingredient in your app ought to endure thorough characteristic testing. Try how our QA crew offers with it: 

Conditional entry

Excellent for worldwide apps which have a consumer base from across the globe. On account of numerous circumstances (e.g. authorized points), customers in a single nation see completely different choices/options than in others. Because of the characteristic flag system you’ll management the visibility of given components of the app for particular circumstances like nation, language, foreign money, preferences, and so on.

Distant configuration

That is barely much like conditional entry however has a unique function. Function flag might be greater than a boolean worth. It can be different varieties, like strings and numbers used to create a distant configuration for the characteristic. Now you may change configuration on the fly and redirect the customers to completely different options. 

Canary deployments

Canary deployment is among the secure methods to deploy a brand new model of the app to customers. You roll out a brand new model to a small variety of customers and monitor if all the things is working effectively. Steadily improve the variety of customers till your complete consumer base is moved to the brand new model. With a characteristic flag, you are able to do this with a single characteristic. You may configure what number of customers will see a sure characteristic. Use this as an prolonged High quality Assurance take a look at to examine the latest characteristic earlier than you launch it to all customers.

A/B assessments

The identical mechanism can be utilized for A/B assessments – two variations of the identical characteristic/web page/message to see which works higher for the consumer. You should use characteristic flag proportion rollout to maneuver some customers to model A and the remainder to model B. Keep in mind to log which model customers see and what they do there. It’s essential to create a abstract after the experiment. After the tip date, you need to take away all experiment toggles. After creating the characteristic flags for A/B assessments, I like to recommend including an extra ticket to take away the flags and transfer them to one of many future sprints.

The State of Frontend 2022 report is out now!
Learn it on-line or obtain a free copy📊👩‍💻

The report’s outcomes are based mostly on 3703 surveys crammed by frontend specialists on all ranges of proficiency, representing 125 international locations! 19 frontend consultants supplied their commentary to every topical part. It’s an actual deal with for anybody with a frontend background. See what applied sciences are nonetheless sizzling, what lose their influence, and what rising stars we count on within the foreseeable future.

Disadvantages of characteristic flags 

All that glitters just isn’t gold! Function flags are usually not ducktape or WD40 that resolve all issues. Function toggling has its personal set of points that you need to take into account to keep away from characteristic flag hell. 


From a enterprise perspective, characteristic flags are very addictive. Now the managers don’t have to attend for builders to modify options on and off, they will do it themselves. I’ve already stumbled upon managers who would love to regulate entry to mainly all the things utilizing characteristic flags. Extra management doesn’t essentially imply an excellent factor in the event that they lack technical data. Therefore, the position of builders is to make use of a characteristic flag solely when it’s wanted. In any other case, you’ll introduce a lot technical debt.

more feature flags is not always a good idea. Check if you have too many feature flags with developers.

Introducing technical debt

Do you do not forget that the characteristic flag must be applied in code utilizing if statements? If statements all the time introduce debt as it’s essential to management it and supply default habits. 

One other drawback is outdated, not used flags that have been applied previously however are usually not mandatory anymore. Should you don’t want these characteristic flags, simply delete them. Be very cautious to not create extra difficult ifs statements that use the identical flags as a result of eradicating them afterward will probably be more durable. 

manage feature flags makes sense. best practices for feature flagging system

Surprising dependencies

It’s simple to regulate code when you will have one flag. However after a while it will likely be two characteristic flags and accumulate to dozen or tons of of various flags. It’s essential to know the connections between them with the intention to take a look at them correctly. 

Think about that you need to allow 5 flags to the correct values to get entry to a characteristic. Rising the variety of flags will result in extra consumer paths within the app. It’s a must to take note of all of them, or you’ll create a lifeless finish for the consumer.

Arduous to debug

Surprising dependencies make debugging way more difficult as you need to know all flags state to breed bugs. A small change within the flag will trigger completely different outcomes. It’s essential to not solely have good utility monitoring applied to detect the place the consumer is having issues but additionally hold monitor of what distinctive set of flags that exact consumer has enabled to repeat the bug and repair it accordingly.

release flags aka release toggle collect data for deploying code paths for user behavior

I can’t think about my work with out characteristic toggles anymore

I’ve been utilizing characteristic flags for over a 12 months now and I can’t think about creating superior initiatives with out them. I misplaced depend of what number of instances characteristic flags saved us from crucial manufacturing errors with unimaginable testing velocity. 

Should you comply with my suggestions, including new options to customers will probably be simpler and fewer anxious, so I extremely suggest you examine characteristic flags earlier than your subsequent manufacturing launch. 

The ultimate ideas: 

  • characteristic flags are good while you need to have management over whether or not to show new  performance or to not the tip consumer,
  • don’t add a characteristic flag mechanically to each characteristic – add these solely when required,
  • make investments time in good naming conference and keep on with it, 
  • NEVER use detrimental values to allow a flag, 
  • monitor your characteristic flags, 
  • examine every now and then if you happen to nonetheless want your non permanent flags or you may take away them,
  • be taught to say “No” when the product supervisor desires an pointless characteristic flag, 
  • keep in mind about logging details about flags when utilizing this characteristic.
Aleksander Patschek

Aleksander Patschek

Frontend Developer

JavaScript developer with three years of expertise. Huge fan of strongly typed languages that’s why he makes use of Typescript each time he can. Olek likes to be taught new frameworks, languages and options. In his free time, he reads fantasy books (Terry Pratchett’s “Discworld” FTW!), does sports activities and performs laptop video games. Hearthstone, anybody?


Leave a Reply

Your email address will not be published.