Thinking about the use for feature toggles and specifically Release toggles. I used them in the past and I remember Martin Fowler’s article on the subject was very informative.
Release toggles are essential in monolithic applications, but can still be useful in microservices. They are also essential for trunk-based development and Continuous Deployment.
Even without Continuous Deployment, they decouple deployment from release and can help fluidify the release of features in production. Features behind feature toggles can be silently deployed in production without blocking the deployment of other features or essential bugfixes.
One of the drawback I experienced is when priorities change and the release of the feature is no longer urgent or important but the toggle and the code behind it are kept “just in case”. The longevity of release toggles should be measured in days of weeks. Since it is introduced as a temporary measure, it can be inconvenient and costly to maintain for an indefinite period of time.