debugging-recompositions

Identify Jetpack Compose composable recompositions using Layout Inspector and @TraceReconciliation.

472|16|Updated Apr 29, 2026
One-click install
npx skills add https://github.com/skydoves/compose-performance-skills --skill debugging-recompositions
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: debugging-recompositions
Source: https://github.com/skydoves/compose-performance-skills/tree/main/recomposition/debugging-recompositions
Command: npx skills add https://github.com/skydoves/compose-performance-skills --skill debugging-recompositions

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve?

This skill helps developers identify which Jetpack Compose composables recompose and why, using Android Studio Layout Inspector recomposition counts, per-parameter Argument Change Reasons, and runtime @TraceRecomposition to enable release-mode validation and end-to-end verification of fixes.

Core Features & Use Cases

  • Identify recomposition sources with Layout Inspector counts and skip counts to prioritize optimization work.
  • Inspect per-parameter Argument Change Reasons (Changed / Unchanged / Uncertain / Static / Unknown) to name the exact cause and guide the fix.
  • Use runtime @TraceRecomposition in release builds to confirm that a fix eliminates recompositions on the hot path.
  • Map diagnostic findings to targeted stability or skipping improvements and validate end-to-end behavior.

Quick Start

Enable recomposition counts in Layout Inspector, reproduce the scenario, then review the suspect composable argument-change reasons to plan the next action.

Frequently Asked Questions about debugging-recompositions

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

FAQPage Schema
How do I debug Jetpack Compose recompositions to find what causes them?

Debug Jetpack Compose recompositions by enabling Layout Inspector counts in debug builds to identify suspect composables, then inspect per-parameter Argument Change Reasons to pinpoint the exact cause. This maps each status like Changed or Uncertain to a targeted fix.

What do Argument Change Reasons like Changed, Unchanged, and Unknown mean in Layout Inspector?

Argument Change Reasons in Layout Inspector indicate why a composable recomposes. Changed means the parameter value modified, Unchanged means it stayed stable, Uncertain means stability is unverified, Static means it never changes, and Unknown means the cause is unmapped.

Can I trace Jetpack Compose recompositions in release builds?

Yes, you can trace Jetpack Compose recompositions in release builds by using the runtime @TraceRecomposition annotation. This confirms that your stability fixes eliminate recompositions on the hot path during end-to-end behavior validation on real devices.

What is the best way to verify Jetpack Compose stability fixes on real devices?

The best way to verify Jetpack Compose stability fixes is to first diagnose recompositions using Layout Inspector counts and Argument Change Reasons in debug builds, then validate the end-to-end behavior on real devices using runtime @TraceRecomposition in release builds.

Why does my Jetpack Compose composable recompose when the state value has not changed?

Jetpack Compose composables recompose when the state value has not changed if a parameter is marked as Uncertain or Unknown in the Layout Inspector, indicating the compiler cannot guarantee stability, which requires applying targeted stability improvements.

Do I need Android Studio Hedgehog to inspect Jetpack Compose recomposition counts?

You need Android Studio Hedgehog or a compatible version to inspect Jetpack Compose recomposition counts. The Layout Inspector counts and per-parameter Argument Change Reasons features are integrated into the IDE to diagnose and map recomposition causes accurately.