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
Lessons learned: Architecting react apps
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
Ankita Kulkarni
September 15, 2020
Technology
290
1
Share
Lessons learned: Architecting react apps
Ankita Kulkarni
September 15, 2020
More Decks by Ankita Kulkarni
See All by Ankita Kulkarni
5 things you must know to take your Next app to the next level
kulkarniankita09
0
300
Oh Hello Apollo client, Goodbye Redux!
kulkarniankita09
1
510
Beyond the React Native Benchmark
kulkarniankita09
0
120
Accessibility 360 - Web -> Mobile
kulkarniankita09
0
130
Make your React Native apps accessible 🙌
kulkarniankita09
0
260
Let's fight - Redux side-effects showdown
kulkarniankita09
0
230
The Art of Humanizing Pull Requests
kulkarniankita09
0
740
Being Agile - Scrum and Extreme Programming
kulkarniankita09
0
140
Other Decks in Technology
See All in Technology
JavaScript実装の自作プログラミング言語をTypeScript実装に移行した話
keisukeikeda
1
160
JJUG CCC 2026 Spring AI時代の開発こそ標準化を武器に! ― 方式・プロセス・プラットフォームの標準化
s27watanabe
2
290
最低限これだけ押さえれ大丈夫_Claude Enterprise/Team企業展開ガバナンス入門
tkikuchi
1
100
20260528_生成AIを専属DSに_Howの次にすべきことを考える
doradora09
PRO
0
200
Javaで学ぶSOLID原則
negima
1
130
権限管理設計を完全に理解した
rsugi
2
210
AI駆動開発でなんでもハンズオン環境をつくってみた
yoshimi0227
0
140
電子辞書Brainをネットに繋げてみた(自力編)
raspython3
0
110
ラズパイ & Picoで入門:Zephyr(RTOS)の環境構築からビルドまでの紹介
iotengineer22
0
240
TSKaigi 2026 - 型プラグインシステムの実装に使われるテクニック
teamlab
PRO
2
430
形式手法特論:公平性制約の位相的特徴づけ #kernelvm / Kernel VM Study Kansai 12th
ytaka23
1
290
Python開発環境にハーネス適用を検討する
yuuka51
1
510
Featured
See All Featured
A brief & incomplete history of UX Design for the World Wide Web: 1989–2019
jct
2
380
We Have a Design System, Now What?
morganepeng
55
8.1k
Money Talks: Using Revenue to Get Sh*t Done
nikkihalliwell
0
230
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
35
2.4k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
10
1.2k
The Illustrated Children's Guide to Kubernetes
chrisshort
51
52k
世界の人気アプリ100個を分析して見えたペイウォール設計の心得
akihiro_kokubo
PRO
70
39k
End of SEO as We Know It (SMX Advanced Version)
ipullrank
3
4.2k
Prompt Engineering for Job Search
mfonobong
0
320
Are puppies a ranking factor?
jonoalderson
1
3.4k
Darren the Foodie - Storyboard
khoart
PRO
3
3.3k
A Tale of Four Properties
chriscoyier
163
24k
Transcript
@kulkarniankita9 10 consulting lessons: architecting react apps Ankita Kulkarni, Tech
Lead, Loblaw Digital
@kulkarniankita9 Hi, I’m Ankita!
@kulkarniankita9 What have I built?
@kulkarniankita9
@kulkarniankita9 Use cases • Monitor your credit score - using
biometrics • Food delivery app • Reporting
@kulkarniankita9
@kulkarniankita9 1. Project structure
@kulkarniankita9 Directory structure index.js src auth index.js actions/epic/reducer/selector common components
button primaryButton/secondaryButton/tertiaryButton utils constants store storybook locale Modules
@kulkarniankita9 Challenges • A lot of shared context made it
difficult to share code Vertical slicing modules eg: auth, biometrics
@kulkarniankita9 2. React context and state management
@kulkarniankita9 Project
@kulkarniankita9 Is Context a state management solution?
@kulkarniankita9 Does Context replace redux?
@kulkarniankita9 Do you need redux?
@kulkarniankita9 We couldn’t get rid of state management library
@kulkarniankita9 Common context examples ✨ • Auth context • Orders
context
@kulkarniankita9 Challenges • Context was used as a state management
solution When the app was small, this worked fine but not when it grew Look into a state management solution Examples: Redux, Apollo cache
@kulkarniankita9 3. How storybook helped and evolved?
@kulkarniankita9 What is storybook?
@kulkarniankita9 Storybook is
@kulkarniankita9 Design tokens
@kulkarniankita9 Component library
@kulkarniankita9 Examples
@kulkarniankita9 4. With ❤ and without GQL
@kulkarniankita9 What is GQL? • Only get what you ask
for
@kulkarniankita9 Without GQL
@kulkarniankita9 Without GQL
@kulkarniankita9 With GQL
@kulkarniankita9 With GQL
@kulkarniankita9 Challenges • We were missing data transformation using Apollo
hooks Added validation on top of this to check for null values
@kulkarniankita9 5. Performance
@kulkarniankita9 Container and presentational components
@kulkarniankita9 • Container and Presentational components • Use memoization •
Use pure functions • Code splitting
@kulkarniankita9 6. Documentation and on-boarding
@kulkarniankita9 Docs! • Add a task to add some documentation
to every Jira ticket • Practice what you preach
@kulkarniankita9 7. Accessibility
@kulkarniankita9 React a11y • https://github.com/dequelabs/react-axe • Lighthouse
@kulkarniankita9 Lighthouse
@kulkarniankita9 8. With hooks ⚓
@kulkarniankita9 Common hooks ✨ • Translation hook • Accessibility hook
for reducing motion • Responsive breakpoints
@kulkarniankita9 9. Testing
@kulkarniankita9 What gave us more confidence?
@kulkarniankita9 Testing • Unit testing • React component testing: react-testing-library
• API data transformation layer testing • Integration testing • Automation testing
@kulkarniankita9 10. Forms are hard, use a library
@kulkarniankita9
@kulkarniankita9 Libraries used • Formik • redux-form
@kulkarniankita9 Example
@kulkarniankita9 Design pattern • Multi-step sign-up process • JSON form
builder
@kulkarniankita9 Bonus: Be Empathetic!
@kulkarniankita9 This is pretty much the end.. Questions? Comments? Feedback…make
it positive— Catch me after!!
@kulkarniankita9 You did it