# arkivanov/MVIKotlin

Extendable MVI framework for Kotlin Multiplatform with powerful debugging tools (logging and time travel)

Repository: https://github.com/arkivanov/MVIKotlin
Canonical: https://ross.abutalabs.com/products/mvikotlin
Homepage: https://arkivanov.github.io/MVIKotlin
Language: Kotlin
License: Apache-2.0
License Family: permissive
Last push: 2026-08-09T00:48:24+00:00

## Health v2 (maintenance only)
Score: 80/100 (v2, computed 2026-09-03T02:20:16.233290+00:00)
- activity 96, release rhythm 49, longevity 100
- inputs: {"age_days": 1727, "days_push": 25, "days_rel": 130, "gap_med": 463, "n_releases_24m": 2}
- flags: none
- formula: round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)

## Adoption (not part of the score)
Stars 1028, forks 43 (observed 2026-08-28T04:03:17.295665+00:00)

## What it is
MVIKotlin is an extendable Kotlin Multiplatform framework implementing the Model-View-Intent (MVI) architectural pattern with unidirectional data flow. It includes powerful debugging tools such as logging and time travel, and works with any reactive framework via optional Reaktive and Coroutines extension modules.

## Use cases
- manage app state with MVI pattern in Kotlin Multiplatform
- share business logic between Android and iOS apps
- time travel debugging for state changes
- incrementally adopt MVI in an existing app feature
- use MVI with Jetpack Compose or declarative UI frameworks
- bind lifecycle-aware inputs and outputs between UI and stores

## When to choose
- building Kotlin Multiplatform apps needing shared state management
- you want MVI with unidirectional data flow and no enforced reactive library
- you need time travel or logging debug tooling for state
- you want to adopt state management incrementally in a feature

## When to avoid
- you prefer opinionated full architectures with screens and navigation built in
- your project is not on Kotlin or Kotlin Multiplatform
- you need a batteries-included framework with routing and DI

## Facets
- artifact type: framework
- maturity: stable
- function: state-management, logging, developer-tools
- domain: mobile-development, frontend, cross-platform, developer-tools
- platform: jvm, cross-platform
- tags: mvi, kotlin-multiplatform, unidirectional-data-flow, time-travel-debugging, jetpack-compose, android, ios

## Member repositories
- arkivanov/MVIKotlin (main) score 80

## Provenance
- Observed fields: from GitHub, fetched 2026-08-28T04:03:17.295665+00:00.
- Health v2: computed from the inputs above; adoption is never an input.
- Inferred fields (summary, facets, guidance): AI-extracted, prompt v1, taxonomy v1, on 2026-08-30T07:07:43.946133+00:00, confidence not recorded.
  - readme: https://github.com/arkivanov/MVIKotlin (fetched 2026-08-28T04:03:17.295665+00:00, sha d41e15688679)
  - homepage: https://arkivanov.github.io/MVIKotlin (fetched 2026-08-29T13:07:30.377025+00:00, sha d1082fc1725d)
- Data as of 2026-08-30T08:39:29.467469+00:00.
