Toggle is a digital magazine for tech leaders. It covers how they build and manage their technology teams, and the strategic partnerships that make it all work.
In software development a toggle is a switch that allows you to switch between two settings. For example, you can toggle the Wi-Fi option on your smartphone from disabled to enabled. A toggle is also a physical button found on computers and mobile devices that switches between two settings or modes, such as the Caps Lock and Num Lock keys on a keyboard.
In user interface design, toggles are the preferred control for changing system states – for example, turning Airplane Mode on or off. They are less ambiguous than radio buttons, take up less screen estate and have a pre-selected default state (ON or OFF). However, they are not ideal for choice selection — in this case, a checkbox is a better alternative because it doesn’t have a default value and requires users to select a value.
When using toggles, the most important consideration is that it must be obvious to users what the current state of the toggle is. WCAG guidelines suggest that toggles should not rely on color alone to convey this information, and they should include a label that clearly describes what the current state of the toggle is. Additionally, it’s recommended that you use high-contrast colors for the toggle button to signal a change in state.
Toggles can be a useful tool for running multivariate or A/B experiments. By deploying different versions of an application with different feature flags, you can test the effect each has on user behavior. This is known as cohort-based testing and it’s a vital component of data-driven development.
A toggle is also an excellent method for allowing your engineering team to override a codebase decision without having to manually re-deploy the whole artifact. This allows you to run your experiment at a higher scale with real production traffic and provides an important feedback loop to your product teams.
Generally speaking, release toggle decisions shouldn’t stick around for very long (although some product-centric toggles may need to be in place for longer periods of time). As such, it’s usually a good idea to have a toggle configuration management system that enables you to dynamically re-configure a toggle at any time. For instance, by exposing an endpoint that allows for dynamic in-memory re-configuration of a toggle. This is the approach taken by many of the more popular feature flag systems, including GitHub Labs and Signalfire. By allowing for this type of override you can eliminate the need to re-deploy and risk breaking your CI/CD pipeline, as well as reducing the time it takes to validate your changes. This can be particularly crucial for releases that are in the process of transitioning from release to beta.