Uber Sep 18, 2020

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

Critical Insight

Uber's Riblets architecture separates core flows from experimental features, enabling reliable scaling while hundreds of engineers ship features in parallel across platforms.

The article reveals how Uber's 300-line RequestViewController ballooned to 3,000+ lines and why that was the breaking point.

About This Article

Problem

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.

Solution

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.

Impact

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.