validating-compose-stability

Detect Compose stability regressions against committed baseline files in CI.

303|10|Updated May 15, 2026
One-click install
npx skills add https://github.com/skydoves/android-testing-skills --skill validating-compose-stability
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: validating-compose-stability
Source: https://github.com/skydoves/android-testing-skills/tree/main/compose/stability/validating-compose-stability
Command: npx skills add https://github.com/skydoves/android-testing-skills --skill validating-compose-stability

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve?

It prevents silent Compose performance regressions by catching when a composable becomes less skippable/restartable or when a parameter’s stability worsens before the change ships.

Core Features & Use Cases

  • CI stability gating: snapshots Compose stability into a committed .stability baseline and fails CI on stability regressions.
  • Compose Stability Analyzer integration: configures stabilityDump and stabilityCheck via the composeStabilityAnalyzer { stabilityValidation { … } } DSL, including failOnStabilityChange, ignoreNonRegressiveChanges, ignored* lists, allowMissingBaseline, and stabilityConfigurationFiles.
  • Selective tracking and auditing: uses @IgnoreStabilityReport to exclude previews/scaffolding and relies on a deliberate baseline-update workflow with reviewed diffs.

Quick Start

Ask the assistant to configure Compose Stability Analyzer in your module and set stabilityCheck to fail CI after compilation, using a committed app/stability/<module>.stability baseline generated by stabilityDump.

Frequently Asked Questions about validating-compose-stability

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

FAQPage Schema
How do I prevent silent Jetpack Compose recomposition regressions in CI?

Prevent silent Jetpack Compose recomposition regressions by committing a .stability baseline generated by the Compose Stability Analyzer plugin and failing CI when stabilityCheck detects a composable has become less skippable or restartable.

What is a Compose stability baseline and how does it track skippability?

A Compose stability baseline is a committed .stability file snapshot of composable skippability and restartability. The stabilityDump task generates it, and stabilityCheck compares compiled output against it to gate CI on parameter stability regressions.

How do I configure the Compose Stability Analyzer Gradle plugin to fail CI on stability changes?

Configure the plugin by applying the composeStabilityAnalyzer { stabilityValidation { … } } DSL in Gradle. Set failOnStabilityChange to true and ensure your pipeline runs a build task before executing stabilityCheck to validate compiled output against the baseline.

Can I exclude Jetpack Compose previews from stability checks?

Exclude Jetpack Compose previews and scaffolding by annotating them with @IgnoreStabilityReport. This prevents the Compose Stability Analyzer from tracking their stability changes and triggering unwanted CI failures.

How do I handle non-regressive Compose stability changes during development?

Handle non-regressive Compose stability changes by enabling ignoreNonRegressiveChanges in the stabilityValidation DSL. This allows the stabilityCheck task to pass when composables become more stable, while still failing CI on actual regressions.

Do I need a stability baseline file to run stabilityCheck in a new module?

You do not strictly need an existing baseline if you enable allowMissingBaseline in the validation DSL. However, bootstrapping a .stability file via stabilityDump and committing it to version control is required for continuous regression tracking.