It’s worth checking out the library https://github.com/orbit-mvi/orbit-mvi. I am a co-author on the project.

Internally the library works in a similar way to how this article suggests although we suggest just calling through to methods in the ViewModel rather than creating an event object which simplifies things somewhat. We have a DSL around this which keeps the code relatively tidy.

Something to be cautious of though is threading — at the moment the code presented in the article can modify the state through setState concurrently which could lead to corrupting the state.

In terms of when to use MVI, personally I believe it can work well for both simple and complex apps. To me one of the biggest attractions of MVI is it can make testing a whole lot simpler.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store