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 learnt from a React performance nightmare
Search
Chinenye Onuegbu
October 30, 2019
Programming
0
33
Lessons learnt from a React performance nightmare
Presented at ITNEXT SUMMIT in Amsterdam on 30 Oct 2019
Chinenye Onuegbu
October 30, 2019
Tweet
Share
More Decks by Chinenye Onuegbu
See All by Chinenye Onuegbu
Multi-threading in JavaScript
xkizer
0
110
Other Decks in Programming
See All in Programming
re:Invent 2025 のイケてるサービスを紹介する
maroon1st
0
170
MDN Web Docs に日本語翻訳でコントリビュート
ohmori_yusuke
0
480
CSC307 Lecture 01
javiergs
PRO
0
670
GISエンジニアから見たLINKSデータ
nokonoko1203
0
190
CSC307 Lecture 02
javiergs
PRO
1
760
組み合わせ爆発にのまれない - 責務分割 x テスト
halhorn
1
190
それ、本当に安全? ファイルアップロードで見落としがちなセキュリティリスクと対策
penpeen
7
2.2k
生成AIを利用するだけでなく、投資できる組織へ
pospome
2
450
はじめてのカスタムエージェント【GitHub Copilot Agent Mode編】
satoshi256kbyte
0
170
副作用をどこに置くか問題:オブジェクト指向で整理する設計判断ツリー
koxya
1
430
AIで開発はどれくらい加速したのか?AIエージェントによるコード生成を、現場の評価と研究開発の評価の両面からdeep diveしてみる
daisuketakeda
1
730
AIによるイベントストーミング図からのコード生成 / AI-powered code generation from Event Storming diagrams
nrslib
2
1.4k
Featured
See All Featured
Avoiding the “Bad Training, Faster” Trap in the Age of AI
tmiket
0
52
WENDY [Excerpt]
tessaabrams
9
35k
We Are The Robots
honzajavorek
0
130
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.7k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
133
19k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
The Cult of Friendly URLs
andyhume
79
6.8k
Conquering PDFs: document understanding beyond plain text
inesmontani
PRO
4
2.2k
Speed Design
sergeychernyshev
33
1.5k
Faster Mobile Websites
deanohume
310
31k
HU Berlin: Industrial-Strength Natural Language Processing with spaCy and Prodigy
inesmontani
PRO
0
130
Building Experiences: Design Systems, User Experience, and Full Site Editing
marktimemedia
0
380
Transcript
@xkizer Lessons learnt from a React performance nightmare Chinenye Onuegbu
Senior Frontend Engineer, Yilu Amsterdam | October 30, 2019
@xkizer The situation...
@xkizer The situation... ➔ Two experienced JS developers ➔ Newbie
React developers ➔ A back-office application
@xkizer
@xkizer The back-office app The situation... ➔ At least 26
weeks at a time ➔ Up to 50 cards per week ➔ Infinite scrolling ➔ One Redux store ➔ State must be serializable
@xkizer tiny.cc/38iwez Code Samples:
@xkizer Wasted renders are pure evil Lesson One
@xkizer
@xkizer Wasted renders are pure evil Wasted renders are harder
to detect than they sound
@xkizer Data transforms can be problematic Lesson Two
@xkizer <CodeSample filepattern=”data-transform-*.tsx” /> Data transforms can be problematic
@xkizer Data transforms can be problematic Recommended library: Redux reselect
https://github.com/reduxjs/reselect
@xkizer Data Structures are very important! Lesson Three
@xkizer Selected Campaign
@xkizer <CodeSample filepattern=”active-campaign-*.tsx” /> Data Structures are very important!
@xkizer Data Structures are very important! Data structures that are
good for general purpose JS may not be good for React
@xkizer Prop lifting can compound issues Lesson Four
@xkizer
@xkizer Prop lifting can compound issues http://example.com/users/abcd1234 Vs http://example.com/users?username=test&
[email protected]
&userId=abcd1234
@xkizer <CodeSample filepattern=”props-passed-*.tsx” /> Prop lifting can compound issues
@xkizer Prop lifting can compound issues Inject props close to
where they’re needed
@xkizer Prop lifting can compound issues Pass down only props
that can’t be easily derived
@xkizer Micro-optimisations are not important in the grand scheme of
things Worthy mention...
@xkizer Thank You!