Skip to content

YAMV — Yet Another MVI Framework

A Kotlin-first MVI (Model-View-Intent) framework for Android & Kotlin Multiplatform with compile-time code generation via KSP.

Why YAMV?

MVI architecture brings predictability to UI state. YAMV makes it production-ready:

  • Compile-time safety — KSP generates your retained stores and DI modules
  • Zero runtime reflection — all wiring happens at build time
  • Coroutine-native — built on Kotlin Coroutines and Flow, no RxJava
  • Multiplatform — same framework for Android (Hilt/Koin) and iOS (Koin + Compose Multiplatform)
  • Testable — pure Kotlin core with no Android dependencies; reducers are standalone classes testable without coroutines

Core Concepts

YAMV MVI Data Flow

Modules at a Glance

Module What it provides
yamv-core State, Outcome, @AutoState, @AutoFeature
yamv MviRuntime, MviStore, FeatureRouter, feature builders
yamv-retainer MviRetainedStore (Android ViewModel + iOS)
yamv-hilt hiltMviStore() Compose helper
yamv-koin koinMviStore<S, I>() / mviStore {} DSL
yamv-processor-core DI-agnostic KSP utilities (AutoStateDiscovery, AutoFeatureDiscovery)
yamv-processor-hilt Hilt KSP: generates *Store retained store + *FeaturesModule

Quick Install

See Getting Started for full setup instructions.