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
Backend-Driven UI: Making Screens Dynamic
Search
yhkaplan
October 16, 2020
Programming
1.9k
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Backend-Driven UI: Making Screens Dynamic
yhkaplan
October 16, 2020
More Decks by yhkaplan
See All by yhkaplan
Using the latest UICollectionView APIs
yhkaplan
0
3.3k
Swift and Concurrency: The Plan for World Domination
yhkaplan
0
210
Migrating from UIKit to SwiftUI efficiently
yhkaplan
4
3.9k
Property Wrappers
yhkaplan
0
620
Parser Combinators
yhkaplan
0
310
The Great Swift Migration
yhkaplan
1
4.2k
Speeding Up Your CI
yhkaplan
0
520
Automate All the Things
yhkaplan
4
2.6k
Other Decks in Programming
See All in Programming
Claspは野良GASの夢をみるか
takter00
0
180
Swiftのレキシカルスコープ管理
kntkymt
0
220
Vue × Nuxt × Oxc どこまで使える?実運用の現在地
andpad
0
200
The NotImplementedError Problem in Ruby
koic
1
710
AI 時代のソフトウェア設計の学び方
masuda220
PRO
29
12k
過去最大のMCPアップデート! 2026-07-28 RC版の謎に迫る
licux
6
240
Webフレームワークの ベンチマークについて
yusukebe
0
160
フロントエンドとバックエンドで「1文字」を揃えよう
youkidearitai
PRO
0
260
TSKaigi Night Talks 2026_TypeScriptでサプライチェーンの整合性を型に閉じ込める
geekplus_tech
0
330
TAKTでAI駆動開発の品質を設計する
j5ik2o
6
1.2k
Contextとはなにか
chiroruxx
1
290
「なぜそう決めたのか」を残し続ける仕組み ― Notion AI カスタムエージェント × Slack連携による設計判断の自動記録 - NIKKEI Tech Talk #47
niftycorp
PRO
0
110
Featured
See All Featured
Groundhog Day: Seeking Process in Gaming for Health
codingconduct
0
200
Information Architects: The Missing Link in Design Systems
soysaucechin
0
970
brightonSEO & MeasureFest 2025 - Christian Goodrich - Winning strategies for Black Friday CRO & PPC
cargoodrich
3
730
First, design no harm
axbom
PRO
2
1.2k
Accessibility Awareness
sabderemane
1
140
Darren the Foodie - Storyboard
khoart
PRO
3
3.4k
How to Ace a Technical Interview
jacobian
281
24k
Digital Projects Gone Horribly Wrong (And the UX Pros Who Still Save the Day) - Dean Schuster
uxyall
0
1.7k
Raft: Consensus for Rubyists
vanstee
141
7.5k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
17k
SEO in 2025: How to Prepare for the Future of Search
ipullrank
3
3.5k
SEOcharity - Dark patterns in SEO and UX: How to avoid them and build a more ethical web
sarafernandez
0
200
Transcript
Backend-Driven UI: Making Screens Dynamic 1
Self-intro — Name: Joshua Kaplan (@yhkaplan) — Work: minne @
GMO Pepabo — Interests: ! CI/CD, " frameworks, and more — Hobbies: # bread, $ history, and running 2
What is a backend driven UI? — Extreme end: every
individual view defined by backend — Less extreme: order of and type of view defined by backend — Why JSON? 3
Purpose — Change content for each customer — A/B testing
— Feature flags — Less work to make changes 4
Demo 5
How I made it — Prototype in sample app —
Use compositional layout and diffable data sources — Define each section type as JSON w/ a title and subtitle — Firebase Remote Config 6
Code Example let homeReducer = Reducer<HomeState, HomeAction, HomeEnvironment> { state,
action, environment in switch action { case .loadSectionData: state.isSectionLoading = true return environment.homeService.homeContentPublisher() .replaceError(with: []) .receive(on: DispatchQueue.main) .map { HomeAction.loadItemData(sections: $0) } .eraseToEffect() case let .loadItemData(sections): state.isSectionLoading = true return environment.homeService.sectionItemsPublisher(sections: sections) .replaceError(with: [:]) .receive(on: DispatchQueue.main) .map { HomeAction.setSections(sections: $0) } .eraseToEffect() } return .none } 7
Challenges/risks — App Review risks (AKA don’t pull a Fortnite)
— Server unavailable 8
Other possible approaches — Defining more in JSON — microsoft/AdaptiveCards
— spotify/HubFramework — Web views 9
Conclusion — Easy to strike a balance w/ compositional layout
— Think of important, frequently changing screens — Worth it for minne — Try it out in a prototype! — yhkaplan/Shop 10