---
title: "Adopting Jetpack Compose for Etsy’s Android App"
description: "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."
---

# Adopting Jetpack Compose for Etsy’s Android App

[Etsy](https://yomu.fyi/company/etsy) · John Kalmi · Jan 28, 2025

**Type:** Problem & solution

## 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.

**Tags:** [Android](https://yomu.fyi/topic/android), [Jetpack Compose](https://yomu.fyi/topic/jetpack-compose), [Kotlin](https://yomu.fyi/topic/kotlin)

- Source: [Etsy](https://www.etsy.com/codeascraft/adopting-jetpack-compose-for-etsy39s-android-app)
- Source URL: https://www.etsy.com/codeascraft/adopting-jetpack-compose-for-etsy39s-android-app
- Ingested by Yomu: 2026-09-09T16:03:45.207Z

[Read original post](https://www.etsy.com/codeascraft/adopting-jetpack-compose-for-etsy39s-android-app)
