Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Optimising for 25,000 Devices - JS Monthly London

Optimising for 25,000 Devices - JS Monthly London

Simon Hearne

May 30, 2017
Tweet

More Decks by Simon Hearne

Other Decks in Technology

Transcript

  1. @SimonHearne ➪ JS Monthly ➪ 30 May 2017 The five

    stages of JavaScript performance grief
  2. @SimonHearne ➪ JS Monthly ➪ 30 May 2017 You have

    to measure Real User performance
  3. @SimonHearne ➪ JS Monthly ➪ 30 May 2017 Nav Timings

    in WebPageTest DOM Interactive (HTML is parsed) DOM Content Loaded (CSS is parsed) DOM Complete (Subresources loaded) Page Loaded When was this page usable? plotcon.plot.ly tested on Moto G4 @ 3G firstPaint?
  4. @SimonHearne ➪ JS Monthly ➪ 30 May 2017 Nav Timings

    in WebPageTest DOM Interactive (HTML is parsed) DOM Content Loaded (CSS is parsed) DOM Complete (Subresources loaded) Page Loaded plotcon.plot.ly tested on Moto G4 @ 3G firstPaint?
  5. @SimonHearne ➪ JS Monthly ➪ 30 May 2017 Nav Timings

    in WebPageTest plotcon.plot.ly tested on Moto G4 @ 3G
  6. @SimonHearne ➪ JS Monthly ➪ 30 May 2017 Distributions tell

    a story (Top 10 Models) iPhone Galaxy S5 Galaxy S7 Galaxy S6 Galaxy J5 & A3
  7. @SimonHearne ➪ JS Monthly ➪ 30 May 2017 Distributions tell

    a story (Engagement by Model) iPhone Galaxy S5 & A3 Galaxy S7 Galaxy S6
  8. @SimonHearne ➪ JS Monthly ➪ 30 May 2017 There were

    25,000 unique Android devices detected in 2015
  9. @SimonHearne ➪ JS Monthly ➪ 30 May 2017 Only 15

    iPhone models have ever been produced ...
  10. @SimonHearne ➪ JS Monthly ➪ 30 May 2017 Three large

    UK retailers. Which is the fastest?
  11. @SimonHearne ➪ JS Monthly ➪ 30 May 2017 Median smartphone

    DOM Content Loaded time 5.8s 1.8s 3.8s Three large UK retailers. Which is the fastest?
  12. @SimonHearne ➪ JS Monthly ➪ 30 May 2017 Sites with

    faster mobile experiences have more mobile traffic
  13. @SimonHearne ➪ JS Monthly ➪ 30 May 2017 53% of

    mobile visits over 3 seconds are abandoned https://www.doubleclickbygoogle.com/articles/mobile-speed-matters/
  14. @SimonHearne ➪ JS Monthly ➪ 30 May 2017 53% of

    mobile visits over 3 seconds are abandoned like, proper lost https://www.doubleclickbygoogle.com/articles/mobile-speed-matters/
  15. @SimonHearne ➪ JS Monthly ➪ 30 May 2017 53% of

    mobile visits over 3 seconds are abandoned like, proper lost not bounces, just silent echoes in an analytics void https://www.doubleclickbygoogle.com/articles/mobile-speed-matters/
  16. @SimonHearne ➪ JS Monthly ➪ 30 May 2017 The Android-iOS

    conversion rate MoovWeb - Q1 2015 gap is now a mere 5%
  17. @SimonHearne ➪ JS Monthly ➪ 30 May 2017 The Android-iOS

    conversion rate MoovWeb - Q1 2015 (Android users want to buy things, who knew?) gap is now a mere 5%
  18. @SimonHearne ➪ JS Monthly ➪ 30 May 2017 Denial -

    Summary • Android & iPhone traffic should be equal • Android & iPhone conversions should be equal • Android bounce rate is likely understated • Question assumptions about your users
  19. @SimonHearne ➪ JS Monthly ➪ 30 May 2017 The Galaxy

    S8 is only 15% faster than the Galaxy S6. It’s 3x slower than the iPhone 7
  20. @SimonHearne ➪ JS Monthly ➪ 30 May 2017 People with

    cheap phones expect a slow experience
  21. @SimonHearne ➪ JS Monthly ➪ 30 May 2017 Bargaining •

    Do not assume that devices will catch up • Users won’t install your app • Users with slow devices still expect fast websites!
  22. @SimonHearne ➪ JS Monthly ➪ 30 May 2017 Anger •

    Android devices are slower than iPhones :( • Lack of ownership of the problem
  23. @SimonHearne ➪ JS Monthly ➪ 30 May 2017 Why did

    we choose Angular? Legit stock photo
  24. @SimonHearne ➪ JS Monthly ➪ 30 May 2017 Responsive web

    design squishes desktop sites onto mobile viewports
  25. @SimonHearne ➪ JS Monthly ➪ 30 May 2017 Track JS

    Execution On Phones There’s no point measuring JS performance on Desktop
  26. @SimonHearne ➪ JS Monthly ➪ 30 May 2017 Track JS

    Execution using… Developer Tools or WebPageTest or RUM (https://github.com/SOASTA/measuring-continuity/blob/master/examples/cpu-page-busy.js)
  27. @SimonHearne ➪ JS Monthly ➪ 30 May 2017 yellowlab.tools has

    your back https://github.com/gmetais/YellowLabTools/
  28. @SimonHearne ➪ JS Monthly ➪ 30 May 2017 Safe, easy

    to scale, cheap, easy to monitor... Unpredictable, uncontrollable, hard to measure Why give away control? SPAs
  29. @SimonHearne ➪ JS Monthly ➪ 30 May 2017 The Guardian.

    Moto G1. 100Mb/s. https://www.webpagetest.org/result/170207_NV_130V/ 14s
  30. @SimonHearne ➪ JS Monthly ➪ 30 May 2017 1. Performance

    is more of a challenge than you think 2. Performance is everyone’s responsibility 3. JavaScript is a bigger problem than network 4. Test on representative mobile devices Let’s keep in touch. @SimonHearne webperf.ninja
  31. @SimonHearne ➪ JS Monthly ➪ 30 May 2017 All the

    Nav Timings boomerang is a JavaScript library that measures the page load time experienced by real users, commonly called RUM. https://github.com/SOASTA/boomerang ( )
  32. @SimonHearne ➪ JS Monthly ➪ 30 May 2017 Distributions tell

    a story (Top 10 Browser versions) Samsung Internet 4 Chrome 57 Samsung Internet 5