MVICore is a modern, Kotlin-based MVI framework:
Scaling with complexity: operate with a single Reducer if needed, with the option of having the full power of additional components to handle more complex cases
Event handling: A solution to handling events that you don’t want to store in the state
Reactive component binding: A super simple API to bind your reactive endpoints to each other with automatic lifecycle handling
Custom Middlewares: for every single component in the system, with flexible configuration options
Logger: An out-of-the-box logger Middleware
Time Travel Debugger: for ALL of your reactive components (not just your state machine!) with UI controls for recording and playback
The library comes with lots of powerful capabilities and tooling.
See https://badoo.github.io/MVICore/ for full documentation.
Available through jitpack.
Add the maven repo to your root build.gradle
allprojects { repositories { maven { url 'https://jitpack.io' } } }
Add the dependencies:
Framework:
implementation 'com.github.badoo.mvicore:mvicore:{latest-version}'
Binder (for versions higher than 1.2.4)
implementation 'com.github.badoo.mvicore:binder:{latest-version}'
Helper classes for Android:
implementation 'com.github.badoo.mvicore:mvicore-android:{latest-version}'
ModelWatcher for efficient view updates
implementation 'com.github.badoo.mvicore:mvicore-diff:{latest-version}'
Time Travel Debugger controls in a DebugDrawer module (You need to add the dependencies to DebugDrawer and configure it yourself before you can use this):
implementation 'com.github.badoo.mvicore:mvicore-debugdrawer:{latest-version}'
MVI beyond state reducers
Building a system of reactive components with Kotlin
Unidirectional data-flow and the Zen of black box components
Time Travel Debug Everything!