Orbit MVI in a nutshell

  • Coroutines
  • MVVM+
  • Lightweight syntax (no inheritance!)
  • Easy async code
  • Safe state management
  • Easy unit testing

Orbit - what's that?

Introducing MVI

Introducing MVI

State

UI

Action

(ViewModel/Presenter)

(Fragment/ViewController)

User

Intent

Model

View

Reducer

State

Data source

Intent

Transformer

View

Model

Reducer

State

Data source

Intent

Transformer

View

Model

Side effect

Key concepts

  • Unidirectional cycle of data
  • Non-blocking
  • Immutable state

MVI - benefits

MVI - benefits

  • Simplicity
  • Well defined contract
  • Easy unit testing

MVI - benefits

  • Screenshot testing
  • Interaction testing
  • Time-travel debugging

Conclusions

Next steps

  • Do we want this in our app?
  • Draw up migration plan

Thanks!

Made with Slides.com