How to Use a Feature Toggle
Toggle is a simple user interface component that allows users to update preferences and settings. When used properly toggles can have a profound impact on user experience. However, if used incorrectly they can contribute to unnecessary complexity and confusion. When using toggles be sure to provide clear, direct labels and use standard visual design.
Toggle can be a simple switch, like the one that turns on or off the lights in your home, or it can be an action, such as switching between screens when video chatting with two friends at once. It can also be a verb, meaning to alternate between positions using a single switch or lever (like the ones on your computer’s Caps Lock or Num Lock keys). In software, toggle switches are found in every options menu, as well as other places where users need to select between two opposing options.
Savvy teams view the Feature Toggles in their codebase as inventory that comes with a carrying cost, and seek to keep it low by being proactive about removing toggles that are no longer necessary. Some teams even put “expiration dates” on their toggles, so that the system will fail a test (or refuse to start an application!) if it encounters a toggle that has expired.
There are many different ways to implement a toggle, but the most important thing is that it be easy for people to identify which state is active. This can be done through color, iconography, or other visual cues. A common approach is to make the toggle button itself have a distinct appearance in either its on or off state, but this can be problematic because it may not work well on all platforms. A better approach is to combine this with a primary text label that makes it very clear what the toggle is controlling.
Another method of managing a Feature Toggle is to use it as a part of a Champagne Brunch or Canary Release. Unlike the more permanent toggles in the other categories of Feature Toggles, a Champagne Brunch or Canary Release is configured on a per-user basis by dynamically re-configuring a service instance for a specific cohort of users. This enables a team to try out new features with minimal risk and a minimum of friction for their users.
Toggles can be used as a way to perform multivariate or A/B testing, where each user is placed into a cohort and the Toggle Router will consistently send that user down one codepath or another. This is a powerful tool for making data-driven decisions about which features to roll out to a larger population of users, and can be particularly effective when used in conjunction with tracking tools like Google Analytics. Be careful when implementing this kind of experiment, though, because it can be difficult to avoid introducing bias into your results. For this reason, it is often best to run these types of tests on a small subset of your users to ensure that you get unbiased results.