Co-architected the server-driven UI platform for a national airline's 2.3M-MAU mobile app, so screen composition moved from app-store releases to backend-driven definitions and new screens ship without an app-store cycle. The Android modernization underneath, a Dagger to Hilt migration across 20+ modules with Jetpack Compose, cut feature delivery from about a month to about a week.
Context and stakes
I was the Android technical lead on a national airline's mobile platform, with influence across iOS and backend. The app served 2.3M monthly active users, and the foundational engineering sat behind a large app-driven revenue line, so reliability and delivery speed were business-critical, not cosmetic.
The codebase was seven years old. Every meaningful UI change rode an app-store release, which meant the product could not adjust screens, run experiments, or personalize without a multi-week cycle, and the aging dependency setup was slowing every team down.
Problem
Two constraints compounded. First, UI was release-gated: shipping or changing a screen required an app-store submission, so iteration was slow and personalization was effectively impossible. Second, the modernization debt, an old dependency-injection setup and pre-Compose UI, made the codebase slow to change and slow to onboard into, right as feature demand was rising.
Intervention
- Co-architected the server-driven UI platform. Screen composition moved to backend-driven definitions rendered by a native component library: trip cards, notification states, rows, sections, and badges, with server-driven actions sent over POST. New and changed screens now ship from the backend without an app release.
- Made server-driven UI accessible. Built a utility that resolves content descriptions for every server-driven widget, so screens assembled at runtime stay usable with screen readers, backed by a 100+ component accessible (WCAG) library.
- Led the Android modernization. A staged Dagger to Hilt migration across 20+ modules with zero downtime, using a gradual strategy so existing features kept working, paired with large-scale Jetpack Compose adoption and snapshot testing.
- Re-engineered delivery. CI/CD on GitHub Actions with faster builds, more frequent deploys, and release hardening, plus core development of a government-partnered digital declaration form, with a check-in redesign and trip management, all held to high uptime through peak travel.
- Held the technical line. Codebase admin and lead reviewer across squads, and de-escalation of a multi-sprint iOS delivery crisis through an executive root-cause analysis.
Recognition. A product leader on the airline's mobile team publicly credited the delivery team for the rebuild:
"Behind the scenes, we overhauled the technical backend, making the app more reliable and laying the foundation for rapid enhancements. A massive thank you to our dedicated team that made this transformation possible."
Lasting impact. Server-driven UI moves screen composition to the backend, so the app ships new screens and features without an app-store cycle. That foundation is what makes a fast enhancement cycle possible, and the team has since moved past building foundations into shipping continuous improvements on the live app. See a recent example of that ongoing iteration