Jetpack Compose is Google's modern declarative UI toolkit for Android that transforms how developers build native interfaces using pure Kotlin code instead of XML layouts. As the production standard for Android development — and declared Compose-first by Google in May 2026 — Compose enables reactive UIs where changes to state automatically trigger recomposition, updating only the necessary parts of the screen. The composable function paradigm (marked with @Composable) treats UI components as functions of state, making interfaces predictable, testable, and significantly easier to maintain. Understanding recomposition, state management, and modifier chains is essential — these concepts form the foundation of every Compose application and directly impact both developer productivity and runtime performance. The current stable BOM is 2026.04.01 (Compose 1.11).
What This Cheat Sheet Covers
This topic spans 25 focused tables and 198 indexed concepts. Below is a complete table-by-table outline of this topic, spanning foundational concepts through advanced details.
Table 1: Composable Fundamentals
The composable function model and recomposition lifecycle are the core mental models every Compose developer must internalize first — everything else builds on these foundations.
| Concept | Example | Description |
|---|---|---|
fun Greeting(name: String) { Text("Hello $name")} | • Marks a function as composable, enabling it to emit UI and participate in recomposition • can only be called from other composable functions or composition contexts. | |
var count by remember { mutableStateOf(0) }Text("Count: $count") | • Process where Compose re-executes composables when state changes • skips stable composables whose inputs haven't changed for performance. | |
val scrollState = rememberScrollState() | • Caches a value across recompositions • value is lost on configuration changes like rotation — use rememberSaveable for persistence. | |
var text by remember { mutableStateOf("") } | • Creates an observable state holder • changes to the value trigger recomposition of composables reading it. | |
var input by rememberSaveable { mutableStateOf("") } | Like remember but survives configuration changes and process death by serializing values to a Bundle. | |
TextField(value = text, onValueChange = { text = it }) | • Pattern of moving state up to a caller to make composables stateless and reusable • state lives in parent, child receives value and callbacks. |