What problem does it solve?
It solves the confusion and bugs caused by inconsistent UI state handling by standardizing how Android/KMP screens manage State, Actions (Intents), and one-time Events.
Core Features & Use Cases
- Predictable MVI structure: defines State (single source of UI data), Action (user/trigger inputs), Event (one-time side effects like navigation/snackbar), and a ViewModel that processes actions into state/events.
- Lifecycle-safe event observing: uses ObserveAsEvents to consume one-time events exactly once in a lifecycle-aware way.
- Production-friendly details: includes guidance for mapping domain errors to UiText, building UI models for presentation formatting, handling process death via SavedStateHandle, and enforcing naming conventions and screen composable separation (Root vs Screen).
Quick Start
Use the android-mvi skill to design a new screen by defining its <Screen>State, <Screen>Action, <Screen>Event, implementing a <Screen>ViewModel with Channel.BUFFERED events, and splitting UI into <Screen>Root and <Screen>Screen composables.