The word toggle is used to describe a binary or “on-off” control usually found in devices or software settings. Often toggles are implemented as buttons or switches that bind a setting to a value. This allows for rapid iteration of a product with different settings without changing the codebase or having to roll out a whole new version.
In more modern times, a toggle can also be used to refer to a piece of fabric that passes through the eye of a rope to fasten it. It’s also a verb, meaning to turn something on or off. For example, someone might say, “I’m going to go and grab some food and a book to read before my lecture tomorrow — I need to toggle between studying French and Spanish.”
A common use case for Toggles is in conducting multivariate or A/B testing. This is done by leveraging the Toggle Router to consistently send a given user down one codepath or another, depending upon the cohort that they belong to. By comparing the behavior of the different cohorts, we can make data-driven optimizations.
Toggle Configuration is often managed via static files which have the advantage of living side-by-side in source control and are easily modified. However, as you grow in scale, this becomes cumbersome to manage and in most cases it’s preferable to have some form of centralized DB or even an existing application UI that enables developers, testers and product managers to view and modify the toggle configuration. Savvy teams are mindful that Feature Toggles come with a carrying cost and will try to keep their inventory low by being proactive about removing toggles once they are no longer needed.