← ClaudeAtlas

jetpack-composelisted

Build Android UIs with Jetpack Compose: composition, state hoisting, remember/rememberSaveable/derivedStateOf, recomposition correctness and performance, side-effect APIs (LaunchedEffect/DisposableEffect/rememberCoroutineScope/produceState/snapshotFlow), Material 3 theming, and Compose navigation. Use when writing or reviewing @Composable functions, fixing recomposition or state bugs, hoisting state, choosing a side-effect API, applying Material 3, or improving Compose performance and stability.
eric-sabe/engsys · ★ 1 · AI & Automation · score 67
Install: claude install-skill eric-sabe/engsys
# Jetpack Compose Build and review Android UIs with Jetpack Compose targeting the current Compose BOM (2025.x) and Material 3. Composables are pure descriptions of UI for a given state; the runtime re-invokes them (recomposes) when the state they read changes. Treat composition as a function of state, keep composables side-effect free except through the official effect APIs, and hoist state so UI is testable and reusable. This is Android's analogue of declarative SwiftUI. ## Contents - [Composition Model](#composition-model) - [State and remember](#state-and-remember) - [State Hoisting](#state-hoisting) - [derivedStateOf](#derivedstateof) - [Recomposition Pitfalls](#recomposition-pitfalls) - [Side-Effect APIs](#side-effect-apis) - [Collecting Flows](#collecting-flows) - [Stability and Performance](#stability-and-performance) - [Material 3](#material-3) - [ViewModel Integration](#viewmodel-integration) - [Common Mistakes](#common-mistakes) - [Review Checklist](#review-checklist) ## Composition Model - A `@Composable` function emits UI. It may run often, in any order, in parallel, and be skipped. **It must be idempotent and free of side effects.** - Never mutate external state, perform IO, or launch work directly in the body of a composable. Use the effect APIs for anything that must happen *as a result* of composition. - Recomposition is driven by reads of *snapshot state* (`State<T>` / `MutableState<T>`). Reading a state value subscribes that composition scope to