A toggle is a switch that can be set either to ON or OFF. It is a common component in options and preferences lists, such as the ones found in almost all software. In hardware, it is used when a user wants to turn on or off functions such as the Caps Lock and Num Lock keys on keyboards.
In a more broader sense, the word toggle is also used to describe a process or activity that can be changed by switching between two different states. For example, a user might toggle back and forth between non-REM and REM sleep throughout the night.
At Victorious we use toggles to allow us to quickly experiment with changes to our website’s content. This means that if we want to try out a new call-to-action or change the text on a button we can easily do so without changing our live production codebase. The toggles are then rolled out in batches to all users of the site. This allows us to get a much more accurate and timely picture of the impact that any change might have on our users.
One of the key benefits that a toggle provides is its ability to provide a clear, concise description of what the effect of switching between states will be. Ideally, the toggle switch should describe both the state the toggle is in right now and what the effect of switching to its ON state will be. In addition, a toggle should be designed to be easy for users to understand.
The word toggle is derived from the verb toggle, meaning to move or shift something, usually by putting pressure on it. It is also the name of a piece of equipment that can be used to change the height of an aircraft’s wings.
Savvy teams recognize that the feature flags they create come with a carrying cost, and seek to keep that inventory as low as possible. This might mean adding a task to remove a toggle from the team’s backlog each time that a release version rolls out with a new toggle in place, or even creating “expiration dates” on specific toggles which will automatically fail a test (or sometimes even refuse to start an application!) if the toggle is still around after its expiration date.
Another benefit of toggle configuration living side-by-side in the source code is that it can be easy to track which versions of a system have a particular toggle implemented. This can be very important when utilizing Experiment Toggles to perform multivariate testing and compare the performance of different codepaths with each other. This type of override becomes very tricky when you are relying solely on a toggle in a Release Toggle.