Composables

Compose Performance

Community

chrisbanes

Use when investigating Jetpack Compose recomposition cost, compiler stability reports, skippability, unstable parameters, frame-rate State reads, cross-phase snapshot back-writing, or @ReadOnlyComposable contracts.

Overview

Repository
chrisbanes/skills
Publisher
chrisbanes
Stars
1.2K
Forks
58
Bundled files
4
License
Apache-2.0
Updated
Nov 14, 2026

Installation

tmp=$(mktemp -d)
git clone --depth 1 https://github.com/chrisbanes/skills.git "$tmp"
mkdir -p ~/.claude/skills
cp -R "$tmp/skills/compose-performance" ~/.claude/skills/compose-performance
rm -rf "$tmp"

Instructions

Compose performance

Core principle

Measure one user-visible transition, identify the runtime axis that causes the work, then apply the smallest correction at the phase or boundary where that axis begins.

Procedure

  1. Reproduce one concrete transition and capture the observable evidence: recomposition counts, compiler reports, profiler data, or a clear trace. Build only through Gradle run. If no build can run, reason from the declared types; do not unpack toolchain jars or work around the sandbox.
  2. Classify the primary axis: parameter stability and skipping, State read phase, or snapshot state written back into an earlier phase.
  3. Check for a false lead: a real data change, a correctness defect, or an unchanged lazy item that is expected to recompose.
  4. Read the corresponding focused reference before proposing a change.
  5. For review work, pair every finding with the smallest evidence-supported repair. For a false stability promise, explicitly say to replace mutable non-snapshot properties with immutable data or snapshot-observable state, verify that contract, and only then decide whether an annotation remains needed. For a phase problem, name the layout or draw consumer where the changing read or calculation should move. A cross-phase write proves invalidation or an extra pass; do not claim oscillation or an infinite loop unless evidence shows values repeatedly changing. Do not stop at diagnosis. When only source code is available, separate the proven feedback path from its unmeasured runtime cost. Give a conditional repair direction based on the intended measurement boundary; do not prescribe a callback swap, equality guard, or content-layout rewrite as a performance fix without evidence that it changes the observed problem. For an Int held in mutableStateOf with the default structural equality policy, an unchanged value already avoids invalidation.
  6. Change one axis at a time and re-measure the same transition.
  7. Finish when the evidence improves at the observed boundary without hiding state changes, caching stale values, or moving work to a less correct owner.

Topic router

Signal Read
Cause is unknown, or several axes may interact Diagnosis
classes.txt, composables.txt, strong skipping, unstable parameters, or collection stability Stability
Scroll, animation, gesture, layout, or draw State read at frame rate; measured state fed back into composition Deferred reads
A composable only reads composition locals or accessor-style values Composition contracts
State ownership or effect lifecycle is the root cause Compose state and effects

Bundled files

FAQ

What does Compose Performance do?

Use when investigating Jetpack Compose recomposition cost, compiler stability reports, skippability, unstable parameters, frame-rate State reads, cross-phase snapshot back-writing, or @ReadOnlyComposable contracts.

Who made Compose Performance?

chrisbanes (a community member) publishes it in the chrisbanes/skills repository on GitHub.

Is Compose Performance free?

Yes. Compose Performance is open source, published by chrisbanes under the Apache-2.0 license.

What comes with Compose Performance?

Its instructions and 4 files the agent reads only when a task needs them, such as references, examples or scripts.

Which agents can use Compose Performance?

Any coding agent that reads SKILL.md files, including Claude Code, Codex, Cursor, GitHub Copilot and Gemini CLI. The agent loads the skill when a task matches its description.

What are agent skills?

An agent skill is a folder with a SKILL.md file: instructions that teach a coding agent how to do one kind of task, and optionally files it can read while it works. The agent keeps only the skill's name and description in mind and reads the rest when a task calls for it.

How are agent skills different from MCP servers?

An MCP server gives an agent new tools to call, code that runs somewhere and returns results. A skill gives it knowledge: how to approach a task with the tools it already has. Many agents use both.

How can my agent test my Android app?

Robomori lets coding agents create, start and control Android emulators and devices from one command, so they can install your app, take screenshots and check dark mode, font sizes and languages.

You're subscribed

The next lesson lands in on Wednesday.