Originally, a toggle was a pin passed through an eye of a rope to fasten it. The word has since evolved to describe a switch with two positions — on and off — such as the key that turns on and off the caps lock function of your keyboard. Today, it’s a common design element used in computer software and hardware settings and preferences menus. It’s also used to control features on a website such as the visibility of article sections or items.
Toggles are often a good choice for controlling what can be seen by users of an application. They can help manage complexity and provide clarity by establishing an initial state and then updating what the toggle controls based on whether it is currently flipped on or off. This can be a very powerful way to present users with different options, and can be a more accessible alternative to radio buttons or checkboxes.
When it comes to accessibility, however, toggles can be problematic if not designed properly. As a visual element, they are generally difficult to read for people with low vision and some types of color blindness. They are also not ideal for users using assistive technologies because they don’t update based on their current state, so people with impaired vision may not know that the toggle has changed states. And even if they do know that the toggle has changed, it can be confusing for them to understand what the new state means — particularly when designers use colors like green and red which have very specific meanings to these groups of users.
One common use of toggles is in experiments (often called multivariate or A/B testing). Toggle switches are a way to change the codepaths that a given user takes based on their cohort status — so a test can be run with a different path for each cohort without needing to modify each cohort’s configuration. Toggle switches are a popular way to enable this type of testing and to make data-driven optimizations to things like Call To Action wording or the tab headers in the metadata section.
In a world of ever-increasing product complexity, it’s important to have clear and consistent controls for managing the feature flow and providing users with options. This is why it’s a best practice to use a label rather than an icon for every toggle and to update the appearance of the label based on its current state.
Savvy teams view the Feature Toggle inventory as an inventory that has a carrying cost and seek to keep it as low as possible. They may do this by adding a task to the backlog when they add a toggle, or by putting “expiration dates” on them so that they are automatically removed when they no longer serve their purpose. They may also add a note to the product description for each toggle explaining why it is being provided.