At the beginning of last year, my team started with a dizzying array of features to launch and we had a short amount of time for each. Our goal was to expand the Uber One feature set across multiple apps and fast. We started by architecting a new design pattern called the ActionCard Pattern.
The basic idea is to decouple all logic into reusable actions and layouts into reusable cards. We then allowed the API response to determine the order that the cards would appear along with styling properties for each card. The API responses also attached actions to the cards. With this we were able to avoid wiring up new UI and attaching logic for each screen. Instead we would only add single cards or actions to the framework when launching a new feature or flow.
I wrote a detailed engineering blog about the architecture we used here in hopes it may be useful to other mobile teams.
Read my article on the Uber Engineering Blog: How the Uber Membership Team Developed the ActionCard Design Pattern to Do More with Less