MVIKotlin
Extendable MVI framework for Kotlin Multiplatform
...To provide a single source of truth for State (the scope is not defined, it can be a whole app, a screen, a feature, or a part of a feature). To provide an abstraction for UI with efficient updates (however this is not obligatory, you can use whatever you want). To provide lifecycle-aware connections (binding) between inputs and outputs (again this is not obligatory in any way).