There are many established approaches to allow for different use cases or user flows to be switched on and off in real time, but most revolve around some sort of feature flag or configuration setting within the platform. Although this is a viable approach, it does add something to the code base, which can, over time, become a massive headache. That something is complexity.
Not only does this add complexity to the code base, it also adds complexity to related activities such as testing and the setup/support of the overall platform, especially if you start to chain the feature flags together. For example, let's assume you have a new reporting feature (let's call it feature C) that is automatically enabled if the reporting menu feature (let's call it feature B) is manually enabled and the legacy-reporting feature (let's call that...