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
Single State Atom apps
Search
Rogério Chaves
December 02, 2015
Technology
180
1
Share
Single State Atom apps
If state is the root of all evil, why don't we put it right on the root?
I'll show 3 examples
Rogério Chaves
December 02, 2015
More Decks by Rogério Chaves
See All by Rogério Chaves
O problema das Fake News
rogeriochaves
1
190
A Brief History of Frontend
rogeriochaves
1
56
Implementando PWA em qualquer projeto
rogeriochaves
2
220
Microfrontends
rogeriochaves
2
150
Introducción a Elm
rogeriochaves
0
80
Immutable App Architecture
rogeriochaves
0
230
Faça programação funcional com JavaScript codando menos
rogeriochaves
4
500
Introduction to Elm
rogeriochaves
2
150
Playing with RxJS
rogeriochaves
0
110
Other Decks in Technology
See All in Technology
マルチエージェント × ハーネスエンジニアリング × GitLab Duo Agent Platformで実現する「AIエージェントに仕事をさせる時代へ。」 / 20260421 GitLab Duo Agent Platform
n11sh1
0
170
弁護士ドットコム株式会社 エンジニア職向け 会社紹介資料
bengo4com
1
160
AgentCore Managed Harness を使ってみよう
yakumo
2
120
20260428_Product Management Summit_tadokoroyoshiro
tadokoro_yoshiro
4
3.6k
ハーネスエンジニアリングの概要と設計思想
sergicalsix
9
5.1k
ぼくがかんがえたさいきょうのあうとぷっと
yama3133
0
200
ハーネスエンジニアリングをやりすぎた話 ~そのハーネスは解体された~
gotalab555
4
1.8k
昔はシンプルだった_AmazonS3
kawaji_scratch
0
340
Practical TypeProf: Lessons from Analyzing Optcarrot
mame
0
400
Revisiting [CLS] and Patch Token Interaction in Vision Transformers
yu4u
0
380
AI駆動1on1〜AIに自分を育ててもらう〜
yoshiakiyasuda
0
130
Route 53 Global Resolver で高額課金発生!
otanikohei2023
0
110
Featured
See All Featured
Kristin Tynski - Automating Marketing Tasks With AI
techseoconnect
PRO
0
230
Designing Experiences People Love
moore
143
24k
WENDY [Excerpt]
tessaabrams
10
37k
The Organizational Zoo: Understanding Human Behavior Agility Through Metaphoric Constructive Conversations (based on the works of Arthur Shelley, Ph.D)
kimpetersen
PRO
0
310
VelocityConf: Rendering Performance Case Studies
addyosmani
333
25k
Making Projects Easy
brettharned
120
6.6k
Stewardship and Sustainability of Urban and Community Forests
pwiseman
0
180
Context Engineering - Making Every Token Count
addyosmani
9
840
The Limits of Empathy - UXLibs8
cassininazir
1
310
svc-hook: hooking system calls on ARM64 by binary rewriting
retrage
2
220
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
11
890
Neural Spatial Audio Processing for Sound Field Analysis and Control
skoyamalab
0
270
Transcript
SINGLE STATE ATOM APPS
2 state = if
3 why don’t we put it right on the root?
THE IDEA 4 main <foo> <bar> <qux> state •State lives
on the root •Pass below only what matters •Components just render what it receives, no side-effects
5 BUT HOW DO WE UPDATE THE STATE?
REACT + CURSOR 6 or atom, or zipper
REACT + CURSOR 7 <List items={cursor.refine('items')} /> const List =
(props) => <ul> {props.items.map(ListItem)} </ul> const ListItem = (item) => <li> {item.refine('name').value} <NameInput name={item.refine('name')} /> </li> const NameInput = (props) => <input value={props.name.value} onChange={props.name.set} /> (not an actual implementation)
CLOJURESCRIPT + OM Single state atom 8
9 AWESOME DEMO https://youtu.be/5yHFTN-_mOo
10 TODOMVC EXAMPLE
REACT + REDUX 11 Reduce FTW R
WHAT IS A REDUCER? 12 const list = [1, 2,
3] list.reduce((accumulated, current) => { return accumulated + current }, 5) // 11
REDUX STRUCTURE 13 main <foo> <bar> <qux> state actions user
input reduce onChange
HOW REDUX WORKS 14 const state = { list: [{name:
"une"}, {name: "due"}] }; const actions = [{type: "ADD", name: "tre"}]; const reducer = (currentState, action) => { switch (action.type) { case "ADD": return { list: [...currentState.list, {name: action.name}) } default: return currentState; } } actions.reduce(reducer, state); /* { list: [{name: "une"}, {name: "due"}, {name: "tre"}] }; */
15 TODOMVC EXAMPLE
16 REDUX DEVTOOLS
ELM 17 The right way is the only way
18 EXAMPLE
ADVANTAGES 19 •Single source of truth •Deterministic state changes •Rationalise
about the rendered UI •State change timeline •Easier to debug •Hot reloading (example) •Fast rendering •Easier to implement optimistic updates •Easier to have an isomorphic app •Simple functions and data structures
20 WHY IS THIS HAPPENING ON FRONT-END?
21 EXAMPLES SOURCE CODE github.com/rogeriochaves/single-state-atom-apps
THANK YOU