Feature flags
The idea of feature flags is to hide functionality that is still not ready to be released under a configuration change. Following the principles of small increments and quick iteration makes it impossible to create big changes, like a new user interface.
To complicate things further, these big changes will likely happen in parallel with others. There's no chance of delaying the whole release process for 6 months or more until the new user interface is working correctly.
Creating a separate branch that's long-lived is also not a great solution, as merging this branch becomes a nightmare. Long-living branches are complex to manage and always difficult to work with.
A better solution is to create a configuration parameter that activates or deactivates this feature. The feature can then be tested in a particular environment, while all the development continues at the same pace.
That means that other changes, like bug fixes or performance improvements...