debugging-recompositions

Diagnose Jetpack Compose recompositions using Layout Inspector counts and Argument Change Reasons.

1|Updated Jul 6, 2026
One-click install
npx skills add https://github.com/citytexi/team-yg-pesonal-agent --skill debugging-recompositions-citytexi
Or copy as Structured Prompt for Agent▼
Please help me install this Agent Skill.
Skill: debugging-recompositions
Source: https://github.com/citytexi/team-yg-pesonal-agent/tree/main/.claude/skills/debugging-recompositions
Command: npx skills add https://github.com/citytexi/team-yg-pesonal-agent --skill debugging-recompositions-citytexi

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve? Jetpack Compose recompositions are invisible by default, making it impossible to tell whether a composable that re-runs every frame is expected behavior or a performance bug. This Skill makes recomposition visible and names the exact parameter responsible, so fixes target the real cause instead of guesswork. ## Core Features & Use Cases - Recomposition and Skip Counts: Enable Layout Inspector's recomposition and skip count columns to find composables with disproportionate re-run ratios like 100/0. - Argument Change Reasons: Interpret the per-parameter Changed / Unchanged / Uncertain / Static / Unknown classifications from Android Studio Hedgehog and map each status to the correct fix. - Release Confirmation: Validate fixes in a release + R8 build using @TraceRecomposition from compose-stability-analyzer, since debug counts are inflated by Live Literals and interpreted runtime. - Use Case: A developer notices a list item recomposing on every scroll frame. The Skill walks through enabling counts, identifying the suspect composable, reading its parameter status (e.g. Uncertain due to an unstable List field), and confirming the fix in release. ## Quick Start Use this skill to find out why my composable keeps recomposing and tell me which parameter is causing it.

Frequently Asked Questions about debugging-recompositions

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I see recomposition counts in Android Studio?▼

Open Tools > Layout Inspector on a debug build and toggle Show recomposition counts and Show recomposition skip counts in the toolbar. The component tree then displays recompositions/skips per node, such as 100/95, which is the primary health signal.

What does Uncertain mean in Layout Inspector recomposition reasons?▼

Uncertain means Compose could not determine whether the parameter changed, typically because the type is unstable so the runtime fell back to identity equality. Fix it by annotating the type with @Stable or @Immutable, or replacing List with ImmutableList so structural equals applies.

Why are my recomposition counts different in release builds?▼

Debug builds run interpreted Compose with Live Literals, which inflate recomposition counts, so debug numbers are directional only. Confirm the real count in a release + R8 build using @TraceRecomposition from compose-stability-analyzer and reading logcat under the Recomposition tag.

Which Android Studio version shows Argument Change Reasons?▼

Argument Change Reasons require Android Studio Hedgehog (2023.1.1) or later. Earlier versions show recomposition counts but not the per-parameter Changed, Unchanged, Uncertain, Static, and Unknown classifications.

When should I not use recomposition counts to judge performance?▼

Do not treat raw debug recomposition counts as ground truth, since Live Literals and the interpreted runtime inflate them. Track the skip-to-recomposition ratio instead, and always confirm the final number in a release build before declaring a fix successful.