Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
State of Declarative UI on Mobile Development
Search
Alessandro Calzavara
December 02, 2023
Programming
0
42
State of Declarative UI on Mobile Development
A bit of history to understand how we got here, and what we have now and what we want in our future
Alessandro Calzavara
December 02, 2023
Tweet
Share
More Decks by Alessandro Calzavara
See All by Alessandro Calzavara
Remote working: 9 years of lessons learnt
dral3x
1
430
Alexa, can you help me?
dral3x
1
530
Deploy mobile apps with fastlane
dral3x
0
210
RxJava: a Java implementation of Reactive Extentions
dral3x
0
610
Android 101 - Hackatron.org
dral3x
0
650
Other Decks in Programming
See All in Programming
Code Reviews
bkuhlmann
4
890
OpenAPIを中心に考えるAPI開発入門 / Introduction to API Development with a Focus on OpenAPI
seike460
PRO
2
170
Apache Hive 4 on Treasure Data
ryukobayashi
0
400
AppRouter Panel Talk
yosuke_furukawa
PRO
1
430
禅の心を手に入れよ
eltociear
1
270
障害対応を起点としたもっといい開発と運用のサイクル作りのためにできること / Hatena Enginner Seminar #29
polamjag
0
310
スクラムガイドのスプリントレトロスペクティブを改めて読みかえしてみた / Re-reading the Sprint Retrospective Section in the Scrum Guide
mackey0225
3
470
if constexpr文はテンプレート世界のラムダ式である
faithandbrave
3
670
効率化に挑戦してみたらモバイル開発が少し快適になった話
ryunakayama
0
130
VS Code をプロダクトにどう取り込むか
onomax
1
630
StoreKit2によるiOSのアプリ内課金のリニューアル
kangnux
0
120
Site Reliability Engineering for GMO
pyama86
8
1.1k
Featured
See All Featured
Pencils Down: Stop Designing & Start Developing
hursman
117
11k
Building a Modern Day E-commerce SEO Strategy
aleyda
21
6.4k
The Mythical Team-Month
searls
216
42k
YesSQL, Process and Tooling at Scale
rocio
165
13k
How GitHub (no longer) Works
holman
305
140k
The MySQL Ecosystem @ GitHub 2015
samlambert
244
12k
Docker and Python
trallard
35
2.7k
Fashionably flexible responsive web design (full day workshop)
malarkey
398
65k
Agile that works and the tools we love
rasmusluckow
325
20k
Build your cross-platform service in a week with App Engine
jlugia
226
17k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
20
1.7k
The Invisible Side of Design
smashingmag
294
49k
Transcript
STATE OF DECLARATIVE UI on Mobile Development
Hello 👋 I’m Alessandro Calzavara 📱 Mobile Tech Lead @
Spreaker.com 🍺 Marca User Group meetup organizer 🥩 BBQ Grill Master
Table of Contents 1. Imperative UI 2. The Rise of
Declarative UI 3. The Challenges 4. Wrap Up
Imperative UI
“A sequence of instructions that synchronize the UI with the
state.” Imperative UI
Example
Imperative Approach Simple to understand 👍 Verbose 👎 Manual sync
between UI and state 👎
The Rise of Declarative UI
The Rise of Declarative UI 2013: React
“the UI is function of the state” Declarative UI
Foundational blocks Explicit state properties When state changes, the UI
changes automatically Create views by combining several components
Declarative Approach Less Code to Write 👍 Automatic UI Updates
👍 Mental Shift Required ⚠ More CPU Demanding 🤷
The Rise of Declarative UI 2013: React
The Rise of Declarative UI 2013: React 2015: React Native
React Native Cross platform, but Native 👍 Hot swap code
🚀 Performance 👎🤷 Customization 👎
The Rise of Declarative UI 2013: React 2015: React Native
The Rise of Declarative UI 2013: React 2015: React Native
2017: Flutter
Flutter Declarative 👍 Multi platform 👍 No native UI components
👎
The Rise of Declarative UI 2013: React 2015: React Native
2017: Flutter
The Rise of Declarative UI 2013: React 2015: React Native
2017: Flutter 2019: SwiftUI & Jetpack Compose
Declarative 👍 Swift 👍 Slow to improve 👎 SwiftUI
Jetpack Compose Declarative 👍 Wide OS support 👍 IDE integration
👎
SwiftUI vs Jetpack Compose
The Challenges
State Handling
State Handling • State Hoisting • Architecture • .equals(...)
Testing
Testing • View tests • Demo screens as test
Integration with Imperative UI
Integration with Imperative UI Theming Navigation Incremental Deploy
Wrap Up
“Declarative UI is the future.” From: Random Dev from the
Internet
Thanks!