What about a Reactive Redux based approach.
What i dont like about the ViewModel based approach is thats unclear where your business logic is created.
Also the ViewModels are not immutable.
I am currently using the Approach of a Presenter with business logic, without interfaces, but it just updates a single Data class as an Observable. Whenever the data class changes, the UI is updated.
In this case you dont need interfaces. And you just update a single “viewmodel” state. Its an immutable data class, we just update the complete viewmodel onces it needs a change.
The disadvantage, is that the activities and framgnets are not smart of what ui should be updated. So it might do too much redrawing. However, then we need some diffing mechanism that React has todo that.