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
Use cases & repos
Backend
MVI
UI
Use cases & repos
Backend
MVI
UI
Use cases & repos
Backend
MVI
UI
(c) Martin Fowler
Use cases & repos
Backend
MVI
UI
Screenshot
Unit
Interaction
Contract / Integration
Screenshot | E2E UI | |
---|---|---|
Airbnb | ~ 30 000 | none |
Uber | thousands | handful |
Spotify | ~ 1 600 | ~ 500 |
Shopify | ~ 2 300 | ~ 20 |
"Building Mobile Apps at scale - 39 Engineering Challenges"
State
State
State
"button_close": {
"view": "ImageView",
"click": [
{
"onExitRequested": {
"params": [
createCircleRequestDomain: "{circleName="Test",coverPhoto="file://something.jpg"}"
]
}
}
]
}
"button_close": {
"view": "ImageView",
"click": [
"onExitRequested": {
"params": [
createCircleRequestDomain: "{circleName="Test",coverPhoto="file://something.jpg"}"
]
}
]
}
Reducer
State
Data source
Intent
Transformer
View
Model
State
Intent
t