What Is a Toggle?
A toggle is a switch between two states (either ON or OFF). This simple control is ideal for changing system settings or preferences because it takes up less space than a checkbox. It is also preferred on mobile devices over a radio button because it has a pre-selected default state and doesn’t require a user to select a value themselves.
One common use of Feature Toggles is to perform Multivariate or A/B testing on the behavior of a codepath. This is done by separating users into cohorts and using the Toggle Router to consistently send each cohort down one codepath or another. By aggregating the data from each cohort and comparing it to the aggregate data from other cohorts we can make data-driven optimizations in our application.
Toggles aren’t always the best choice because they can be confusing for users. To avoid confusion they should be used only in cases where the current state of a feature can be easily understood by the user. This is especially important when the toggle is the only way to access a feature. Toggles should also be clearly labeled. Using high contrast colors to distinguish the state of a toggle is helpful, but designers should also consider societal and cultural implications of those colors.
Savvy teams understand that the existence of Feature Toggles in their codebase comes with a cost and seek to keep the number of toggles at a minimum. To this end some teams create a task to remove a toggle as soon as it’s no longer needed and some even set “expiration dates” for their toggles so that they will be automatically removed by a deploy script if they are still around at the time of the next release.