This is Lyft’s approach for adding a major new feature to their app. -> eng.lyft.com/from-four-wheels-to-two-403bcf1cbf59
I heard about this on the iOS Dev Discussions podcast.

Summary
- Stay simple and lean
- Reimagine over reinventing – ““Is it faster to rebuild this or reuse this, and what will we regret later?””
- Launch what matters
Feature flags, feature modules, launching early and iterating small, facing questions they didn’t have answers to until they did some real world experimenting and iterating.
Love this…
Every new feature is a chance to start with a clean slate, and it’s often tempting to immediately build for scale. We all want our products to launch to massive fanfare and usage, but more often than not, the path to success for new features is slow and steady. With steady growth in mind, we designed our first architecture to support exactly what’s needed for our first product iteration, and nothing more
Also…
The computer scientist in me was angry, but when the datasets are small enough, reasonable tradeoffs can be made in the short term without sacrificing the user experience. When choosing the “rewrite” approach, it’s important to be confident that the code will stay simple and easily explainable. In this case, the algorithm wasn’t perfect, but it worked reliably and quickly.