debugging-recompositions
Debugging Recompositions — make the invisible visible, then map status to action
Recomposition is invisible by default. A composable that re-runs sixty times a second to redraw an
animation looks identical in source to one that should re-run zero times when its parent ticks.
Three layers of instrumentation make it visible: Layout Inspector recomposition counts and skip
counts (Android Studio, debug build), Layout Inspector Argument Change Reasons (Hedgehog and
later, per-parameter Changed / Unchanged / Uncertain / Static / Unknown classifications), and
runtime @TraceRecomposition from compose-stability-analyzer for release / R8 / real-device
measurement.
This skill is the diagnostic layer. It does not fix recompositions; it tells the developer which composable is recomposing and which parameter is responsible. Once the param is named, the fix lives in a sibling skill — stability for unstable types, strong skipping for lambda capture, or phase deferral for state reads in the wrong phase.