Releases: AndroidPoet/compose-guard
v1.2.2
What's Changed
- Fixed inspection registration mismatch by aligning ComposeGuard inspection shortName with plugin.xml metadata.
- Added regression tests to ensure inspection registration and shortName consistency stay correct.
Verification
- Ran Configuration on demand is an incubating feature.
Task :compose-guard:checkKotlinGradlePluginConfigurationErrors SKIPPED
Task :compose-guard:compileKotlin UP-TO-DATE
Task :compose-guard:compileJava NO-SOURCE
Task :compose-guard:initializeIntellijPlatformPlugin
Task :compose-guard:patchPluginXml UP-TO-DATE
Task :compose-guard:processResources UP-TO-DATE
Task :compose-guard:classes UP-TO-DATE
Task :compose-guard:generateManifest UP-TO-DATE
Task :compose-guard:instrumentCode UP-TO-DATE
Task :compose-guard:jar UP-TO-DATE
Task :compose-guard:compileTestKotlin UP-TO-DATE
Task :compose-guard:compileTestJava NO-SOURCE
Task :compose-guard:processTestResources UP-TO-DATE
Task :compose-guard:testClasses UP-TO-DATE
Task :compose-guard:instrumentTestCode UP-TO-DATE
Task :compose-guard:instrumentedJar UP-TO-DATE
Task :compose-guard:composedJar UP-TO-DATE
Task :compose-guard:prepareTestSandbox UP-TO-DATE
Task :compose-guard:prepareTest
Task :compose-guard:test UP-TO-DATE
BUILD SUCCESSFUL in 5s
14 actionable tasks: 1 executed, 13 up-to-date successfully.
- Ran Configuration on demand is an incubating feature.
Task :compose-guard:initializeIntellijPlatformPlugin
Task :compose-guard:patchPluginXml UP-TO-DATE
Task :compose-guard:generateManifest UP-TO-DATE
Task :compose-guard:checkKotlinGradlePluginConfigurationErrors SKIPPED
Task :compose-guard:compileKotlin UP-TO-DATE
Task :compose-guard:compileJava NO-SOURCE
Task :compose-guard:processResources UP-TO-DATE
Task :compose-guard:classes UP-TO-DATE
Task :compose-guard:instrumentCode UP-TO-DATE
Task :compose-guard:jar UP-TO-DATE
Task :compose-guard:instrumentedJar UP-TO-DATE
Task :compose-guard:composedJar UP-TO-DATE
Task :compose-guard:prepareSandbox UP-TO-DATE
Task :compose-guard:buildSearchableOptions SKIPPED
Task :compose-guard:prepareJarSearchableOptions SKIPPED
Task :compose-guard:jarSearchableOptions SKIPPED
Task :compose-guard:buildPlugin UP-TO-DATE
BUILD SUCCESSFUL in 2s
11 actionable tasks: 1 executed, 10 up-to-date successfully.
ComposeGuard v1.2.1
ComposeGuard v1.2.1
1.2.1
-
False Positive Fix: DerivedStateOfCandidate now ignores collection copies and other computed values inside event handlers such as onClick/onRemove, where the work runs only when the event fires rather than on every recomposition
ComposeGuard v1.2.0
ComposeGuard v1.2.0
1.1.0
-
5 New Performance Rules: Advanced static analysis for recomposition issues
-
UnstableLambdaCaptureRule: Detects lambdas capturing var declarations
-
ObjectCreationInCompositionRule: Detects object instantiation without remember {}
-
WideRecompositionScopeRule: Detects state reads at top of large composables
-
DeferStateReadsRule: Suggests lambda-based modifiers for animations
-
FrequentRecompositionRule: Suggests lifecycle-aware state collection
-
New Quick Fixes: Wrap in Column/Row/Box, UseGraphicsLayerFix, AddStableAnnotationFix
- Total rules increased from 36 to 39
ComposeGuard v1.1.0
ComposeGuard v1.1.0
1.1.0
-
5 New Performance Rules: Advanced static analysis for recomposition issues
-
UnstableLambdaCaptureRule: Detects lambdas capturing var declarations
-
ObjectCreationInCompositionRule: Detects object instantiation without remember {}
-
WideRecompositionScopeRule: Detects state reads at top of large composables
-
DeferStateReadsRule: Suggests lambda-based modifiers for animations
-
FrequentRecompositionRule: Suggests lifecycle-aware state collection
-
New Quick Fixes: Wrap in Column/Row/Box, UseGraphicsLayerFix, AddStableAnnotationFix
- Total rules increased from 36 to 39
ComposeGuard v1.0.9
ComposeGuard v1.0.9
1.0.9
-
State/Callback Pairing: ReorderParametersFix now keeps state/callback pairs together (e.g., value/onValueChange, checked/onCheckedChange)
-
Improved Parameter Ordering: Smart pairing for common patterns like text/onTextChange, query/onQueryChange, selected/onSelectedChange
ComposeGuard v1.0.8
ComposeGuard v1.0.8
1.0.8
-
Rule Enable/Disable Bug Fix: Fixed critical issue with rule enable/disable functionality
-
Restructured Settings Architecture: Improved enable/disable state management for individual rules
-
Settings Persistence Fix: Rule states are now correctly saved and restored across IDE restarts
ComposeGuard v1.0.7
ComposeGuard v1.0.7
1.0.7
-
All Rules Enabled by Default: All rules including experimental are now enabled out of the box
-
Simplified Settings UX: Completely redesigned settings panel
- All checkboxes are now always interactive (no more grayed-out states)
- "Enable All Rules" master switch to select/deselect all rules at once
- Category checkboxes act as "select all/none" for rules in that category
- Parent checkbox states automatically derived from child selections
- Standard IDE settings pattern (like IntelliJ inspections panel)
-
Fixed Critical Settings Bug: Disabling one rule no longer disables ALL rules
-
Hierarchical Rule Control: Proper Master → Category → Rule hierarchy
-
Fixed Rule Category Mismatch: LambdaParameterInEffect moved to correct STATE category
-
Comprehensive Test Coverage: 45+ new tests for settings and enable/disable functionality
ComposeGuard v1.0.6
ComposeGuard v1.0.6
1.0.6
-
Statistics Dashboard: New tool window with violation analytics by category, file, and rule
-
Parameter Ordering Fix: Fixed modifier position to follow official Jetpack Compose guidelines
- Modifier is now correctly enforced as the FIRST optional parameter (not last)
- Order: required → modifier (first optional) → other optionals → content lambda
- Updated ReorderParametersFix quick fix to use correct ordering
-
Suppress Built-in Compose Inspections: Automatically hides Android Studio's built-in Compose lint warnings when ComposeGuard handles them
- New setting: "Suppress built-in Compose inspections" in Settings → Tools → ComposeGuard
-
Comprehensive Test Coverage: Added tests for all 36 rules
- New test files for Modifier, Naming, State, Composable, Stricter, Effects, and Performance categories
- Added EventParameterNaming rule with past tense detection
- Improved settings UI with category toggles
ComposeGuard v1.0.5
ComposeGuard v1.0.5
1.0.5
- Fixed Suppress action not working for ModifierRequired, MultipleContentEmitters, ParameterOrdering rules
- SuppressComposeRuleFix now correctly handles name identifier elements
- Added AddLambdaAsEffectKeyFix and UseRememberUpdatedStateFix quick fixes
- Improved ModifierReuseRule, ParameterOrderingRule, and LambdaParameterInEffectRule
ComposeGuard v1.0.4
ComposeGuard v1.0.4
Real-time detection of Compose best practices and rule violations in Android Studio.
What's New
1.0.4
- Fixed Suppress action not working for ModifierRequired, MultipleContentEmitters, ParameterOrdering rules
- SuppressComposeRuleFix now correctly handles name identifier elements
- Added AddLambdaAsEffectKeyFix and UseRememberUpdatedStateFix quick fixes
- Improved ModifierReuseRule, ParameterOrderingRule, and LambdaParameterInEffectRule
Installation
From JetBrains Marketplace (Recommended)
- In Android Studio: Settings → Plugins → Marketplace
- Search for "ComposeGuard"
- Click Install
Manual Installation
- Download the
.zipfile from this release - In Android Studio: Settings → Plugins → ⚙️ → Install Plugin from Disk
- Select the downloaded
.zipfile - Restart Android Studio
Features
- 🔍 32 Compose Rules: Naming, modifiers, state, parameters, effects, and more
- ⚡ Real-time Highlighting: See violations as you type
- 🎯 Gutter Icons: Visual indicators for composable rule status
- 💡 Quick Fixes: One-click fixes shown directly in popup
- ⚙️ Settings UI: Enable/disable individual rules (Settings → Tools → ComposeGuard)
Based on Compose Rules documentation.