Engineering the Architecture Behind Uber’s New Rider App
Article Summary
Uber completely rewrote their rider app from scratch. Here's why they threw away years of code and started over.
When Uber's original MVC architecture couldn't scale to millions of daily rides across hundreds of cities, their engineering team made a bold decision: rebuild everything. This deep dive explains the new 'Riblets' architecture pattern they created for both iOS and Android.
Key Takeaways
- Separated core code (sign up, request, complete rides) from optional features with strict review
- Created Riblets: business logic drives routing, not views like traditional patterns
- Built platform-agnostic architecture so iOS and Android teams share patterns and learnings
- Each Riblet has 6 components: Router, Interactor, Builder, Component, Presenter, and View
- Enabled global rollback: all optional code has master flags to protect core flows
Critical Insight
Uber achieved 99.99% availability goals by creating a modular architecture where business logic and view logic are completely separated, testable independently, and can be disabled without breaking core ride functionality.