How Toggle Configuration Should Be Managed

Toggle means to switch back and forth between settings or programs. You might toggle between the stream and map views in an exhibit or toggle between video and text chats while video chatting with friends. The word can also refer to a physical button or switch, like the cap lock or num lock keys on a keyboard that toggle between two functions. In software, the term is used to describe any option item that can be turned on or off. A quick example would be to toggle the wifi setting on or off in a phone app.

Toggles are often used as the foundation of product management systems. They are an excellent way to enable and disable features at scale in a deterministic manner, without having to deploy the entire application and wait for changes to take effect. In order to be effective, however, toggles need to be managed well. Toggle configuration should be moved out of static files and into a centralized store, often an existing application DB, and in turn, this should be accompanied by the build-out of some form of admin UI that system operators, testers and product managers can use to modify the toggle configuration in the system.

In addition to the above, toggles should be tagged with clear labels so that they can easily be understood and changed by users. Ideally, the label should tell both what the toggle controls and what its current state is. The toggle should also be clearly distinguished from other controls, like checkboxes and radio buttons. Lastly, the toggle should not be in an area where the user has to click a Save or Confirm button for the change to take effect; in these cases a checkbox or radio button may be a better alternative.

Finally, many teams find it helpful to test all of the toggles that will be released in a release (both those toggles which have already been flipped On and the new toggles that will be flipped On) and it can be very beneficial to test all of the new and existing behavior that will be enabled by these toggles. This will allow for more thorough regression testing and can help to prevent the surprise of a regression caused by an unexpected toggle configuration change in the future.