as has been said above with MVI it really depends on the framework you use.
• #mvikotlin while the most feature complete is also by far the most complicated so has the highest onboarding costs and boilerplate
.
• Mavericks doesn’t play well with Koin nor Dagger Hilt so you still end up with boilerplate code to inject your viewmodels. Otherwise it’s a mature and popular framework
• Roxie is currently Rx only (coroutine version in a PR), uses streams so requires actions to be converted into objects to be later split back out into functions.
• I’m not sure of the state of mosby mvi.
• uniflow can be worth investigating, described as a less plumbery version of MVIkotlin.
• The last library that comes to mind is #orbit-mvi which can be used directly in jetpack viewmodels so works well with any DI and it’s syntax makes the code pretty much read like MVVM but with protection around the state, protects it from threading issues for example. Side effects/one-off events are also part of the library so it’s clearer how you’re expected to implement things like navigation with the library.
I coauthored the coroutine version of #orbit-mvi but am giving my opinion in an unbiased way as possible. It’s important to evaluate the frameworks for yourself and draw your own conclusions, I base mine on porting a simple list/detail app to each of the frameworks above along with experience of writing Android apps since API 4.