From chrisbanes-skills
Routes Jetpack Compose recomposition investigations across three axes: parameter stability, State read phase, and cross-phase back-writing. Directs to focused skills for compiler reports, deferred reads, and side effects.
How this skill is triggered — by the user, by Claude, or both
Slash command
/chrisbanes-skills:compose-recomposition-performanceThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Router only — deep fixes live in focused skills below.
Router only — deep fixes live in focused skills below.
State is read — is frame-rate State read during composition vs layout/draw?onSizeChanged (layout phase) writing state read by a sibling in composition.Axes 2 and 3 often overlap (a sibling reading measured size in composition is both a deferred-read violation and a layout → composition back-write). Axis 1 is independent.
| Primary suspicion | Next skill |
|---|---|
Skipping, unstable params, compiler/composables.txt churn | compose-stability-diagnostics |
Frame-rate State read phase (composition vs layout/draw) | compose-state-deferred-reads |
putAll / map rebuild / cross-row height(state) during composition | compose-state-deferred-reads — § back-writing |
| Focus-driven side work in composable body | compose-side-effects — snapshotFlow |
| Evidence for multiple axes | Apply matching skills in parallel |
These changes often do not reduce recomposition count:
| Attempt | Why it fails |
|---|---|
remember(index) { isFirstRow(index) } instead of inline when (index) | Same inputs; no skipping benefit |
| Identity cache for read-only derived maps | Can serve stale overlays; remember(keys) is enough |
mutableIntStateOf + layout modifier on both measured and sibling rows | Sibling still reads size in composition unless measure-only |
Forcing Exactly(1) on both rows in focus-move tests | One row often correctly recomposes 0 times |
| Hoisting without stabilizing lambda captures | New lambda instance each frame still defeats skipping |
compose-state-authoring — authoring mutableState* safely.npx claudepluginhub chrisbanes/skills --plugin chrisbanes-skillsDiagnoses Jetpack Compose parameter stability issues, compiler reports, skippability, and Kotlin 2.0+ strong skipping behavior. Use when composables recompose unexpectedly or UI-state classes contain unstable collection types.
Guides building production-quality Android UIs with Jetpack Compose, including state management (ViewModel/StateFlow), type-safe navigation, and performance optimization.
Provides Jetpack Compose patterns for state hoisting, remember variants, slot APIs, modifiers, side effects, theming, animations, and performance in Android UI development.