Managing Togles in a Continuous Delivery Environment
A toggle is a switch that has two positions, either on or off. The word can also refer to the act of switching back and forth between two different settings or programs. For example, when using a computer you can toggle the brightness of the screen or turn on and off the wireless connection. The term can also be used to describe a simple user interface component such as a checkbox or radio button. The primary advantage of toggles is that they provide immediate results, which can be very helpful in the case of forms with multiple options. However, it’s important to remember that toggles may not be appropriate for every situation. For example, they should not be used in long forms that require a submit button or any other type of action in order to take effect.
Generally speaking, the preferred method for updating preferences and settings in an app is through a toggle switch. This approach offers a clean and clear visual design while still offering the instant gratification that users have come to expect from modern applications.
In the context of feature flags toggles can be used to enable and disable features that would otherwise require a code change to implement. In most cases, toggle configuration will live side-by-side in source control so that the team can easily verify which flags have been flipped on or off before a release goes into production. In this way, the team can minimize the risk of introducing regressions by ensuring that all toggles that are going to be turned on in a given release are also tested with all toggles in the same state (and vice versa).
When working with toggles it’s also important to consider the impact on accessibility. For example, it’s common practice for designers to use colors to distinguish states (for instance, green for “on” and red for “off”). However, 8% of male users have color blindness, making these conventions unhelpful for them. It’s important to evaluate societal and cultural issues around the use of specific colors in your toggles and choose alternatives that will be more cognitively safe for all users.
Another challenge that can arise is managing the state of a toggle in a continuous delivery environment. If the toggles are hardcoded it can be a challenge to test them because the team must either manually flip them or re-deploy in order to test a new toggle configuration. This can significantly slow down the feedback loop and negatively impact the overall velocity of a CI/CD pipeline.
Fortunately, there are a few solutions to this problem which range from relatively simple approaches such as commenting out the toggle to more sophisticated approaches that utilize a runtime configuration system. The key is to find an approach that works for your specific deployment process and can be reliably replicated. If you are unable to do this, then it’s best to avoid toggles in favor of other, more dynamic, form elements such as checkboxes and radio buttons.