WRITING PERFORMANT
FRONT-END CODE
MAKE IT WORK,
MAKE IT FAST, MAKE
IT PRETTY
HOW OFTEN DO
YOU IGNORE CODE
PERFORMANCE?
* not actually me ;D
LEVEL ZERO: CODE
PERFORMANCE
COMPUTATIONAL
COMPLEXITY
TIME VERSUS SPACE
PREMATURE
OPTIMISATION
USER TIMING API
MARKS &
MEASURES
https://developer.mozilla.org/en-US/docs/Web/API/User_Timing_API
https://caniuse.com/#search=user-timing
LEVEL ZERO: HOW?
• MEASURE
• LOG
• TINKER
• RINSE
• REPEAT
LEVEL ZERO: WHY?
SLOW CODE IS BAD
LEVEL ONE:
RENDERING
PERFORMANCE
The Pixel Pipeline. Source: web.dev
Say ‘hi’ to your new best friend!
OPTIMISE
JAVASCRIPT
EXECUTION
Source: web.dev
Jason Miller (@developit)
greenlet: https://www.npmjs.com/package/greenlet
workerize: https://www.npmjs.com/package/workerize-loader
IMPROVE STYLE
CALCULATIONS
BEM:
http://getbem.com/introduction/
SMACSS: http://smacss.com/
https://www.smashingmagazine.com/2013/10/challenging-css-best-practices-atomic-approach/
MINIMISE LAYOUT
COMPLEXITY
PAINT AND
COMPOSITING
Source: web.dev
10 MS
50 MS
Source: web.dev
LEVEL ONE: HOW?
• THE PERFORMANCE TAB
• OPTIMISE JAVASCRIPT EXECUTION
• IMPROVE STYLE CALCULATIONS TIME
• MINIMISE LAYOUT COMPLEXITY
• SIMPLIFY PAINT AND MANAGE
LAYERS
• KEEP THE RAIL MODEL IN MIND AT
ALL TIMES
LEVEL ONE: WHY?
VISUAL JANK AND STUTTER
IS JUST BAD UX
SLOW RENDERING WILL
MAKE THE USER FRUSTRATED
LEVEL TWO:
FRAMEWORK AND
BUNDLE
Bundle analyzer: https://www.npmjs.com/package/webpack-bundle-analyzer
Redux + React
https://preactjs.com/ https://www.npmjs.com/package/unistore
Link to video: https://www.youtube.com/watch?v=fWc3Zu6A3Ws
Lighthouse CI: https://github.com/GoogleChrome/lighthouse-ci
LEVEL TWO: HOW?
‘RIGHT TOOL FOR
THE JOB’
LEVEL TWO: WHY?
TO ACHIEVE A
GREAT USER
EXPERIENCE
LEVEL THREE: THE
NETWORK
WATERFALL
Addy Osmani (@addyosmani)
critical: https://github.com/addyosmani/critical
LEVEL THREE:
HOW & WHY?
FINAL WORDS
THANK YOU
LINKEDIN: HTTPS://WWW.LINKEDIN.COM/IN/LYUBOMIR-BOZHINOV/
TWITTER: HTTPS://TWITTER.COM/THEELEGANTDEV

Writing Performant Front-end Code