How to Design a Toggle UI
A toggle is a switch that has two positions, on or off. It’s used in hardware, such as the key that turns your caps lock on or off, and also software, like the on/off controls found on most options menus. The word is also used as a verb meaning to shift between two activities, the way you might toggle between screens as you video chat with multiple friends at once.
When creating a user interface for toggles it is important to consider the following guidelines:
Provide direct labels — don’t be neutral or ambiguous. Use visual cues (like movement and color) to indicate change of state. Use high contrast colors to signal state change. Keep in mind societal and cultural differences when choosing which colors to use.
If a toggle is used for something that has a long lifecycle, such as a Permissioning Toggle for a premium feature, it may be necessary to create an admin UI which allows users to view and modify the Toggle configuration. In this case it is also important to allow for a toggle to be reverted back to its off state without having to restart a service and re-deploy the code. This can be helpful for avoiding disruption to users, as well as for keeping the cycle time of validation in your CI/CD pipelines down.
When managing toggle configuration, many teams prefer to use some form of centralized store. This could be an existing application DB, a dedicated toggle config file or some other type of data repository. In addition to making it easy for a developer or QA engineer to manage the toggle configuration, centralized storage also makes it easier to ensure consistency across a fleet of servers.
It is also good practice to test all toggle configurations that will be released into production, including those toggles which are flipped Off and those which are flipped On. This will help to avoid regressions and unexpected behavior in future releases. Savvy teams view their inventory of Feature Toggles as an asset which comes with a carrying cost, so they try to minimize it by being proactive about removing toggles that are no longer in use.