What Is Toggle?

Togle is a time tracking app that makes it easy to track your work. It’s simple to use and works across devices–on the web, desktop, mobile or even on your watch! It’s a tool that makes your work easier and helps you get paid for every billable minute.

Toggle Definition:

Toggle is a word that means “switch or alternate.” It also refers to a switch that has two positions, on and off, like the keys of your keyboard. In computer technology, a toggle refers to an on-off command that switches between programs.

Feature Toggles in Your Codebase Are Inventory

Having a lot of feature flags in your codebase can be a drag on a development team, especially when it comes to testing. Teams savvy enough to take the time to keep their feature flags manageable will often create a system of checks and balances that make it difficult for a new feature flag to become unneeded.

Savvy teams also have a process for removing feature flags that are no longer needed, or put expiration dates on them. In addition, they will have a mechanism for ensuring that toggles that are still live in a release after their expiration date won’t cause any surprises in a future test or production release.

Static Configuration

One of the most common ways to manage toggle configuration is by hardcoding it into static files, or by using an approach that re-configures a specific feature flag on a per-release basis. The downside to these approaches is that they can be incredibly fiddly and difficult to manage at scale.

A more scalable alternative is to move toggle configuration out of static files and into a centralized store. Usually this will be a data store within the application itself or an existing DB which supports a set of APIs to allow users to view, edit and re-configure their feature flags.

The ability to dynamically re-configure a feature flag at runtime is a great tool for automated testing but it can be quite a pain if you have a large number of service instances which need to be re-configured on a regular basis. It can require restarting the process being tested or re-deploying artifacts into a testing environment, which in turn reduces the cycle time of your tests and makes it harder for CI/CD to ensure that your features are properly validated.

Many organizations are moving to a more dynamic approach for managing toggle configuration. These approaches range from simple to extremely sophisticated but they all have a few important things in common.

They all rely on some form of overriding capability, usually via an endpoint that allows for dynamic in-memory re-configuration at runtime. This capability is particularly useful for Experiment Toggles and other scenarios where it can be very fiddly to exercise both paths of a toggle.

While the above approaches have their pros and cons they all have one thing in common: they allow for toggles to live side-by-side in source control, which makes it easy for a team to verify that the state of a toggle is exactly how it was configured in a previous release. This ability to view a toggle configuration in the same place as it was configured on a previous release is also very helpful for teams who need to perform maintenance on a live toggle configuration or re-deploy it to a new production environment.