What problem does it solve?
It prevents common Jetpack Compose architecture mistakes that trigger excessive recompositions, unstable UI models, and leaky lifecycle behavior when wiring ViewModels to screens.
Core Features & Use Cases
- Lifecycle-aware state collection: prefer collectAsStateWithLifecycle and avoid collectAsState for production screens, especially in Compose Multiplatform.
- Stable UiState/UiAction modeling: enforce all-val, stable property types (ImmutableList/@Immutable) and event-as-state patterns instead of one-shot Channels/SharedFlow.
- Performance-first composition strategy: defer state reads from Composition to Layout/Drawing using lambda-based Modifier patterns, and apply atomic UiState updates with update { }.
- Clean Screen/Content split: keep Screen as the bridging layer that talks to the ViewModel and navigation, while Content remains stateless, previewable, and testable.
Quick Start
Use the compose-architecture skill to review a feature screen and refactor it to a Screen/Content split with a stable UiState collected via collectAsStateWithLifecycle, optimized so state reads occur as low as possible in the tree.