New Rider App Architecture
Article Summary
Uber threw away years of code and rebuilt their rider app from scratch. Here's why that radical decision paid off.
When Uber's original MVC architecture couldn't scale to millions of daily rides across hundreds of cities, they made a bold call: complete rewrite. The result is Riblets, a new cross-platform architecture pattern that puts business logic before view logic.
Key Takeaways
- Target: 99.99% availability (just 1 hour downtime per year)
- Riblets route via business logic, not views like MVC or VIPER
- Unified iOS and Android architecture with shared class names and patterns
- Core code gets stringent review; optional features auto-disable if buggy
- Six components per Riblet: Router, Interactor, Builder, Component, Presenter, View
Uber's Riblets architecture separates core flows from experimental features, enabling reliable scaling while hundreds of engineers ship features in parallel across platforms.
About This Article
Uber's RequestViewController grew from 300 lines to over 3,000 lines. It was handling business logic, data manipulation, verification, networking, and routing all at once. This made the codebase fragile and hard to test.
Vivian Tran and Yixin Zhu's team built Riblets to separate concerns across six components. Router, Interactor, Builder, Component, Presenter, and View each handle one thing. This follows the single-responsibility principle.
Engineers can now test each Riblet module independently. They can roll out changes with confidence and roll back core flows to a known working state if needed. Optional features automatically disable if they have bugs.