Performance Budgets for the Real World by Tammy Everts
ScyllaDB
151 views
83 slides
Jul 01, 2024
Slide 1 of 83
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
About This Presentation
Performance budgets have been around for more than ten years. Over those years, we’ve learned a lot about what works, what doesn’t, and what we need to improve. In this session, Tammy revisits old assumptions about performance budgets and offers some new best practices. Topics include:
• Unde...
Performance budgets have been around for more than ten years. Over those years, we’ve learned a lot about what works, what doesn’t, and what we need to improve. In this session, Tammy revisits old assumptions about performance budgets and offers some new best practices. Topics include:
• Understanding performance budgets vs. performance goals
• Aligning budgets with user experience
• Pros and cons of Core Web Vitals
• How to stay on top of your budgets to fight regressions
Size: 16.23 MB
Language: en
Added: Jul 01, 2024
Slides: 83 pages
Slide Content
Performance Budgets for the Real World Tammy Everts CXO at SpeedCurve
Tammy Everts (she/her) CXO at SpeedCurve Author of ‘Time Is Money: The Business Value of Web Performance’ (O’Reilly) Co-chair of performance.now() Co-curator of WPOstats.com Used to own Uber.com
Improved average load time from 6s to 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
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
“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
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?
What is a performance budget?
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
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)
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
Budgets can be passive (e.g., charts) Get alerts so you can investigate B reak the build
budget exceeded fixed oops
Which metrics should I focus on?
TTFB DNS FCP FMP LCP CLS FID TBT TTI INP OMG WTF
50+ synthetic metrics 30+ RUM metrics 25 additional metrics for EACH third party ∞ custom metrics
MVB
MVB Minimum Viable Budgets
Is the page loading? Can I use it? How does it feel?
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…
Is the page loading?
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 Backend time
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 √
The time from the start of navigation until the first non-white content is painted Synthetic & RUM Start Render
As Start Render improves, so does bounce rate (typically)
So does conversion rate (again, typically)
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 √ √
Can I use the page?
When do users start interacting with a page?
Amount of time it takes for the largest visual element (image or video) to render Synthetic & RUM (Chromium browsers only) Largest Contentful Paint
Largest Contentful Paint (often) correlates to bounce rate
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 √ √
When the last piece of critical content (hero image, first H1) is painted in the browser. Synthetic Last Painted Hero
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 √
How does the page feel?
Aggregate score that reflects how much page elements shift during rendering Synthetic & RUM (Chromium browsers only) Cumulative Layout Shift
Bounce rate gets worse as CLS degrades Bounce rate improves as CLS degrades Bounce rate stays the same as CLS degrades
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 √
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 Long Tasks
Long Tasks often correlate to conversions
Long Tasks Time can expose issues with third parties
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 Time √ √
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 Interaction to Next Paint
INP often correlates to user behaviour (e.g., conversions)
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 √ √
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 ★ ★ ★ ★
YMMV
What should my budget thresholds be?
performance budgets ≠ performance goals
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?
X
demoralizing not actionable ignorable
As you optimize your pages (and hopefully get faster!) update your budgets
How do I manage my budgets?
Should I set up budgets in RUM, synthetic, or both?
Scenario 1 Create budgets in RUM, and drill down via synthetic
Scenario 2 Create budgets in synthetic, and integrate with CI/CD
Do I need performance budgets for all my pages?
1. Product 2. Category 3. Home 4. Cart 5. Search
Who should be responsible for managing budgets?
Everyone* who touches a page should understand the performance impact of their choices *Yes, this includes marketing people
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
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
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/