EtsyJohn KalmiProblem & solution
Adopting Jetpack Compose for Etsy’s Android App
Summary
Etsy adopted Jetpack Compose as its preferred way to build Android app UIs, after a staged program that culminated in rewriting the Shop screen. Because UI toolkits are central to development, engineers created a curriculum, rebuilt internal design-system components, and used Compose’s interoperability with XML Views to migrate gradually. They then tested a full internal screen with navigation, system UI, coroutines for API data fetching, and Kotlin Flows supporting unidirectional data flow alongside Macramé. After Compose bottom sheets reached real buyers and sellers, the Shop rewrite took about three months and entered an A/B experiment against the old implementation. The new screen improved initial rendering time by 5%, made interactions more fluid, and improved several user actions, while engineers reported fewer lines of code, easier testing, greater business-logic coverage, and higher satisfaction.
Context
Etsy considered a structured adoption process necessary because UI toolkits are central to development. The existing Shop screen was confusing to follow and difficult to use for experiments, limiting efforts to help sellers improve their storefronts.
Approach / What changed
Engineers created a Compose curriculum, rebuilt design-system components, and used interoperability with XML Views for gradual migration. They progressed from internal screens to Compose bottom sheets and then rewrote the Shop screen using Kotlin Flows, unidirectional data flow, and Macramé, evaluating the result with an A/B experiment.
Takeaways
Compose interoperability with XML Views enabled Etsy to introduce the toolkit gradually, including Compose bottom sheets hosted inside Views-based screens.
The Shop screen rewrite improved initial rendering time by 5% and increased conversion rate, add-to-cart actions, checkout starts, shop favoriting, and listing views.
Macramé’s unidirectional data flow and Compose’s stateless components decoupled state from the UI, isolated business logic for testing, and helped increase test coverage.
Source and freshness
- Source
- etsy.com
- Published
- Added to Yomu
Summaries are generated from the original by a language model. Check the original before relying on it.
Keep reading
Related reading
The Good Stuff
Paid picks we use ourselves. Links carry a referral code — a subscription through one earns us a commission at no extra cost to you.
The best engineering reads, once a week
One useful email. Unsubscribe anytime.