Advertisement
Advertisement

More Related Content

Slideshows for you(20)

Similar to A (Fairly) Complete Guide to Performance Budgets [SmashingConf SF 2023](20)

Advertisement
Advertisement

A (Fairly) Complete Guide to Performance Budgets [SmashingConf SF 2023]

  1. A (Fairly) Complete Guide to Performance Budgets @tameverts #SmashingConf
  2. @tameverts webperf.social/@tammy
  3. @tameverts
  4. speedcurve.com/benchmarks
  5. speedcurve.com/newsletter/
  6. Improved average load time from 6s  1.2s 7-12% increase in conversion rate + 25% increase in PVs Average load time degraded to 5s User feedback: “I will not come back to this site again.” Re-focused on performance 0.4% increase in conversion rate 2010 2011 2009 @tameverts
  7. 1. Constant feature development 2. Badly implemented third-parties 3. Waited too long to tackle problems 4. Relied on performance sprints 5. Stopped doing front-end performance measurement 6. No way to track regressions @tameverts
  8. timkadlec.com/2013/01/setting-a-performance-budget/
  9. csswizardry.com/2020/01/performance-budgets-pragmatically/
  10. speedcurve.com/customers/tag/performance-budgets/
  11. “Fighting regressions took priority over optimizations. The reason we decided this was because in the past, when we had performance efforts, engineers who were working on optimizations couldn’t really see progress in our performance metrics, because there were so many regressions happening at the same time.” Michelle Vu, Pinterest perfnow.nl/2018#michelle
  12. What is a performance budget? Which metrics should I focus on? What should my budget thresholds be? How can I stay on top of my budgets? @tameverts
  13. What is a performance budget?
  14. Thresholds YOU create for metrics that are meaningful for YOUR site Time-based • Start Render, Largest Contentful Paint Quantity-based • Page size, image weight, Long Tasks Score-based • Cumulative Layout Shift, Lighthouse scores @tameverts
  15. Monitoring tools Synthetic (lab) Mimics defined network & browser conditions No installation required Limited URLs Limited test locations Compare any sites Detailed analysis & visuals Real user monitoring (field) Real network & browser conditions Requires JavaScript installation Large sample size (up to 100%) Geographic spread Only measure your own site Correlation with other metrics (e.g., bounce rate) @tameverts
  16. A good performance budget shows you…  What your budget is  When you go out of bounds  How long you’re out of bounds  When you’re back within budget @tameverts
  17. Budgets can be passive (e.g. charts) Get alerts so you can investigate Even break the build
  18. budget exceeded fixed @tameverts oops
  19. Which metrics should I focus on?
  20. TTFB DNS FCP FMP LCP CLS FID TBT TTI INP OMG WTF
  21. 50+ synthetic metrics 30+ RUM metrics 25 additional metrics for EACH third party ∞ custom metrics
  22. Minimum Viable Budget
  23. Is the page loading? Can I use it? How does it feel?
  24. ❑ Tracks the most important content ❑ Is accessible out of the box ❑ Is available in synthetic and RUM ❑ Can be correlated to UX and business metrics ❑ Has broad browser support The ideal UX metric… @tameverts
  25. Is the page loading?
  26. Backend time The time from the start of the initial navigation until the first byte is received by the browser (AKA Time to First Byte) Synthetic & RUM
  27. ❑ Tracks the most important content ❑ Is accessible out of the box ❑ Has broad browser support ❑ Is available in synthetic and RUM ❑ Can be correlated to UX and business metrics √ √ √ Backend time √
  28. Start Render The time from the start of navigation until the first non-white content is painted Synthetic & RUM
  29. As Start Render improves, so does bounce rate (typically) @tameverts
  30. So does conversion rate (again, typically) @tameverts
  31. ❑ Tracks the most important content ❑ Is accessible out of the box ❑ Has broad browser support ❑ Is available in synthetic and RUM ❑ Can be correlated to UX and business metrics √ √ √ Start Render √ √ @tameverts
  32. Can I use the page?
  33. 43 When do users start interacting with a page? @tameverts
  34. Largest Contentful Paint (LCP) Amount of time it takes for the largest visual element (image or video) to render Synthetic & RUM (Chromium browsers only)
  35. Largest Contentful Paint (often) correlates to bounce rate @tameverts
  36. ❑ Tracks the most important content ❑ Is accessible out of the box ❑ Has broad browser support ❑ Is available in synthetic and RUM ❑ Can be correlated to UX and business metrics √ √ Largest Contentful Paint √ √ @tameverts
  37. Last Painted Hero (LPH) When the last piece of critical content (hero image, first H1) is painted in the browser. Synthetic
  38. ❑ Tracks the most important content ❑ Is accessible out of the box ❑ Has broad browser support ❑ Is available in synthetic and RUM ❑ Can be correlated to UX and business metrics √ √ Last Painted Hero √ @tameverts
  39. How does the page feel?
  40. Cumulative Layout Shift (CLS) Aggregate score that reflects how much page elements shift during rendering Synthetic & RUM (Chromium browsers only)
  41. Bounce rate gets worse as CLS degrades Bounce rate improves as CLS degrades Bounce rate stays the same as CLS degrades speedcurve.com/blog/google-cumulative-layout-shift/
  42. ❑ Tracks the most important content ❑ Is accessible out of the box ❑ Has broad browser support ❑ Is available in synthetic and RUM ❑ Can be correlated to UX and business metrics √ √ Cumulative Layout Shift @tameverts √
  43. Long Tasks Any JavaScript function that takes >50ms to execute Long Tasks don’t always block page rendering, but they can cause the page to feel janky Synthetic & RUM
  44. 57
  45. speedcurve.com/blog/first-input-delay-google-core-web-vitals/ Long Tasks Time often correlates to conversions @tameverts
  46. 59 Long Tasks Time can expose issues with third parties @tameverts
  47. ❑ Tracks the most important content ❑ Is accessible out of the box ❑ Has broad browser support ❑ Is available in synthetic and RUM ❑ Can be correlated to UX and business metrics √ Long Tasks @tameverts √ √ √
  48. Interaction to Next Paint (INP) Measures a page's responsiveness to individual user interactions Observes latency and reports a single value that all (or nearly all) interactions are below RUM
  49. speedcurve.com/blog/interaction-to-next-paint-core-web-vitals/
  50. ❑ Tracks the most important content ❑ Is accessible out of the box ❑ Has broad browser support ❑ Is available in synthetic and RUM ❑ Can be correlated to UX and business metrics √ Interaction to Next Paint @tameverts √ √
  51. Meaningful content Usable out of the box Broad browser support Synthetic RUM Correlates to business/UX Time to First Byte ★ ★ ★ ★ ☆ Start Render ☆ ★ ★ ★ ★ ★ Largest Contentful Paint ☆ ★ ★ ★ ★ Last Painted Hero ☆ ★ ★ ★ Cumulative Layout Shift ☆ ☆ ★ ★ Long Tasks ★ ★ ★ ★ ☆ Interaction to Next Paint ★ ★ ★ ★ @tameverts
  52. Page weight & complexity
  53. @tameverts
  54. What should my budget thresholds be?
  55. performance budgets performance goals
  56. Goals are aspirational How fast do I want to be eventually? Budgets are pragmatic How can I keep my site from getting slower while I work toward my goals? @tameverts
  57. demoralizing not actionable ignorable
  58. As you optimize your pages (and hopefully get faster!) update your budgets
  59. How do I manage my budgets?
  60. Should I set up budgets in RUM, synthetic, or both?
  61. Scenario 1 Create budgets in RUM, and drill down via synthetic
  62. @tameverts
  63. Scenario 2 Create budgets in synthetic, and integrate with CI/CD
  64. @tameverts
  65. Should I create performance budgets for every metric I track?
  66. Do I need performance budgets for all my pages?
  67. 1. Product 2. Category 3. Home 4. Cart 5. Search @tameverts
  68. Who should be responsible for managing budgets?
  69. Everyone* who touches a page should understand the performance impact of their choices *Yes, this includes marketing people
  70. For example… If your marketing team is responsible for adding and maintaining third-party tags, they should:  Have a basic understanding of the metrics (such as Long Tasks Time)  Collaborate on setting the budget  Receive alerts when the budget is violated  Participate (or at least have visibility) in identifying and fixing the issue
  71. 1. Start small (even a single metric will do!) 2. Visually validate your metrics (filmstrips, videos) 3. Validate your metrics some more (UX, business) 4. Get buy-in from different stakeholders 5. Focus on the pages that matter most 6. Revisit your budgets regularly (2-4 weeks) 7. Remember that metrics are always evolving 8. Never stop measuring
  72. Thank you! @tameverts webperf.social/@tammy
  73. A Complete Guide to Performance Budgets speedcurve.com/blog/performance-budgets/ Setting a Performance Budget timkadlec.com/2013/01/setting-a-performance-budget/ Performance Budgets, Pragmatically csswizardry.com/2020/01/performance-budgets-pragmatically/ Web Vitals web.dev/vitals/ Farewell FID… hello Interaction to Next Paint speedcurve.com/blog/interaction-to-next-paint-core-web-vitals/ Cumulative Layout Shift: What it measures (and what it doesn’t) speedcurve.com/blog/google-cumulative-layout-shift/
Advertisement