SpeedCurve Blog https://www.speedcurve.com/blog/ Speed matters. Get the latest on how the areas of design and performance overlap with a focus on creating great user experiences. Performance Hero: Sergey Chernyshev https://www.speedcurve.com/blog/performance-hero-sergey-chernyshev <p><span class="large-para">We often hear how special, generous, and supportive the web performance community is. This didn't happen overnight. This month, we're excited to recognize someone who has been a huge part of creating the community culture we enjoy today: Sergey Chernyshev.</span></p> <p><img class="blog-img" src="https://blog-img.speedcurve.com/img/534/sergey-new.png?auto=format,compress&amp;fit=max&amp;w=2000" alt="" /></p> <p>Whether answering questions on social media, helping someone with a proposal for a conference talk, or simply being welcoming and kind to newcomers, webperf folks are some of the most generous people you could ever hope to find. There are so many folks out there who are organizing, educating, evangelizing, and building great tooling in an effort to improve user experience on the web. Sergey has been doing all of those things earlier and longer than almost everyone!</p><p>Sergey is a well-known early champion of web performance and user experience. Among other things...</p> <ul> <li>Back in 2009, he started the first <a href="https://www.meetup.com/web-performance-ny/">web performance meetup group</a> in New York City, which is still running strong today.</li> <li>He lit the match for many conversations about how to improve speed through his Meet for Speed events (also still going strong), where brave souls ask for critique of websites while a panel of experts perform forensic analysis of front-end code.</li> <li>He has brought in countless speakers, in addition to his own talks, to give different perspectives on front-end performance.</li> <li>He has helped people organize their own web performance meetup groups in cities around the world.</li> <li>He has built an assortment of free and open-source tools &ndash; from <a href="https://github.com/sergeychernyshev/showslow">ShowSlow</a> (a circa-2009 synthetic monitoring tool) to <a href="https://www.speedpatterns.com/">Speed Patterns</a> (a collection of design patterns for fast user experiences on the web that is a current work in progress). You can check out his many other tools and projects on <a href="https://www.sergeychernyshev.com/">his personal site</a>.</li> </ul> <p>On top of everything, he is kind, funny, and always up for a hallway conversation.</p> <p>Sergey currently works as a Speed Manager at Cloudflare. He took some time out of his personal schedule to give us a little more insight into the path he's taken.</p> <h3>How did you get your start in web performance?</h3> <p>"I was always curious about making web pages faster and configured compression and optimized my databases, architecting things to do less work when a user loads the page.</p> <p>Then I attended a first talk by <a href="https://stevesouders.com/about.php">Steve Souders</a>&nbsp;[a fellow <a href="https://www.speedcurve.com/about/">SpeedCurver</a>!] at one of the Web 2.0 conferences that O'Reilly organized, where he introduced the topic of web (or front-end) performance and immediately converted me on the spot, as I realized that we were mostly looking in the wrong place."</p> <h3>What prompted you to start the first web performance meetup group?</h3> <p><img class="blog-img" src="https://blog-img.speedcurve.com/img/534/sergey-2.jpg?auto=format,compress&amp;fit=max&amp;w=2000" alt="" /></p> <p>"I was already interested in meetups and attended quite a few in NYC, so after another Web 2.0 conference and chatting with Steve, I thought that I cannot really wait another year to talk to people about this important topic and decided to step up as an organizer and created a topic of Web Performance on Meetup.com and started the group with monthly events."</p> <h3>When was the first NY WebPerf meetup, and do you recall who spoke?</h3> <p><img class="blog-img" src="https://blog-img.speedcurve.com/img/534/meet4speed.jpg?auto=format,compress&amp;fit=max&amp;w=2000" alt="Sergey presenting at a meet4speed event in NYC" /></p> <p>"The first event was in May 2009 with my own presentation about the Tools of the Trade, I still have the deck for it <a href="https://www.sergeychernyshev.com/talks/Web_Performance/Tools_of_the_trade.html%20">here</a>&nbsp;&ndash; it's fun to reminisce about it. Then I was able to find more folks in the NYC scene and we had a PHP/MySQL/front-end trio talk at Etsy's office, and then it kept rolling. ;)"</p> <h3><img class="blog-img-md" src="https://blog-img.speedcurve.com/img/534/showslow.gif?auto=format,compress&amp;fit=max&amp;w=2000" alt="Show Slow logo. Black text and yellow background." /><br />ShowSlow was one of my favorite tools early in my career. What drove you to build it and are there any plans to revisit it or any of your other open-source projects?</h3> <p>"I built ShowSlow, which was the first open-source synthetic tracker, I believe. It started with my reading an obscure post by <a href="https://bsky.app/profile/stoyan.me">Stoyan Stefanov</a> about YSlow beacon setting, which I ended up reverse-engineering and basically creating an endpoint to collect that data.</p> <p>I built it because I wanted to track those synthetic scores and to keep the conversation going without decision makers manually running YSlow on their machines. Then, later, I convinced the Google team to add similar beacon functionality to the Page Speed Insights plugin they built, and then convinced <a href="https://bsky.app/profile/patmeenan.com">Patrick Meenan</a> to add it to WPT [WebPageTest] as well.</p> <p>It was a great collaboration of open sorcerers and I loved it.</p> <p>I don't think I'd be resurrecting it, because&nbsp;<a href="https://www.sitespeed.io/">sitespeed.io</a> basically replaced it and they did a much better job maintaining it, plus RUM replaced synthetic monitoring anyway, and there are plenty of affordable commercial tools like <a href="https://speedcurve.com">SpeedCurve</a> that can spend time maintaining these ever-more-complex solutions.</p> <p>I am revisiting a few projects here and there, such as <a href="https://ux-speed-calculator.netlify.app/">UX Speed Calculator</a>. I hope to give it a few more features and potentially create a talk to show progression of understanding of speed data. And maybe the UX Capture library and methodology will get a facelift now that <a href="https://developer.chrome.com/docs/web-platform/soft-navigations-experiment">soft navigations might come back</a>, we have much better APIs for collecting metrics, and <a href="https://github.com/bloomberg/container-timing">container timing</a> might get standardized.</p> <p>Or maybe my idea of <a href="https://github.com/BorderlessFramework/borderless">Borderless Computation</a> can be the next big hit, but I fear that it is just too crazy and unrealistic. ;)</p> <p>If only we had more hours in a day..."</p> <h3>What are you most excited about in 2025, related to performance, and what keeps you up at night?</h3> <p>"In general I want to get into more 'design and build fast experiences'. I hope to one day write more articles for <a href="https://www.speedpatterns.com/">Speed Patterns</a> and build a speed museum that I've been thinking of for a while now.</p> <p>In terms of technologies, we do have a few innovations like <a href="https://developer.mozilla.org/en-US/docs/Web/API/Speculation_Rules_API">Speculation Rules</a> and a few related things like <a href="https://developer.mozilla.org/en-US/docs/Web/API/View_Transition_API">View Transitions</a>, that finally break the old paradigms of the existing web and can potentially bring big changes. But as with any big and shiny feature, there is still a long way to go before they become mainstream.</p> <p>One day I hope we can find a working and cool alternative to the SPA pandemic and make it possible and fun to make things useful and fast at the same time.</p> <p>The <a href="https://infrequently.org/2024/01/performance-inequality-gap-2024/">performance inequality gap</a> is growing at an alarming pace and I feel that we all need to find better solutions for this problem. It is possible that one does not exist, though. Inequality is, unfortunately, a norm of our life and the web performance aspect is just a reflection of it."</p> <p><img class="blog-img" src="https://blog-img.speedcurve.com/img/534/sergey-geekbench.png?auto=format,compress&amp;fit=max&amp;w=2000" alt="" /></p> <h3>What advice do you have for someone who is interested in learning more about web performance?</h3> <p>"Read the docs, but also learn to triage the issues using the tools. Learn what makes things slow and how browsers and networks work and how they talk to the servers.</p> <p>And more generically, don't take anything at face value. All the rules that were written so far were written by people like you. Understand why things are the way they are, and that will give you a good direction for your exploration and decision making.</p> <p>Last but not least, remember that we are not solving problems for computers. We are solving them for people, as we try to make them less frustrated with computers."</p> <p><em>Thank you Sergey! Lucky for us, you show no signs of slowing down (pun intended). The world is a faster, better place with you in it!</em></p> <p><em>Do you have someone you'd like to recognize as a Performance Hero? Let us know at support@speedcurve.com!</em></p> <p><a href="https://www.speedcurve.com/signup/?utm_source=blog&amp;utm_medium=blog&amp;utm_campaign=blog-trials"><em><img class="blog-img" src="https://blog-img.speedcurve.com/img/534/customer-logos-free-trial-banner.png?auto=format,compress&amp;fit=max&amp;w=2000" alt="" /></em></a></p> Tue, 18 Feb 2025 00:00:00 +1300 Six things that slow down your site's UX (and why you have no control over them) https://www.speedcurve.com/blog/six-things-page-speed-user-experience <p><span class="large-para">Have you ever looked at the page speed metrics &ndash; such as Start Render and Largest Contentful Paint &ndash;&nbsp;</span><span style="font-size: 22px;">for your site&nbsp;</span><span style="font-size: 22px;">in both your synthetic and real user monitoring tools and wondered "Why are these numbers so different?"</span></p> <p style="text-align: right;"><img class="blog-img" src="https://blog-img.speedcurve.com/img/514/retro-computer.jpg?auto=format,compress&amp;fit=max&amp;w=2000" alt="" /></p> <p style="text-align: right;"><sup>Photo by&nbsp;<a href="https://www.freepik.com/">Freepik</a></sup></p> <p>Part of the answer is this: You have a lot of control over the design and code for the pages on your site, plus a decent amount of control over the first and middle mile of the network your pages travel over. But when it comes to the last mile &ndash; or more specifically, the last few feet &ndash; matters are no longer in your hands.&nbsp;</p> <p>Your synthetic testing tool shows you how your pages perform in a clean lab environment, using variables &ndash; such as browser, connection type, even CPU power &ndash; that <em>you've</em> selected.</p> <p>Your real user monitoring (RUM) tool shows you how your pages perform out in the real world, where they're affected by a myriad of variables that are completely outside your control.&nbsp;</p> <p>In this post we'll review a handful of those performance-leaching culprits that are outside your control &ndash; and that can add precious&nbsp;<em>seconds</em> to the amount of time it takes for your pages to render for your users. Then we'll talk about how to use your monitoring tools to understand how your real people experience your site.</p><h2>Consider this scenario...</h2> <p><img class="blog-img" src="https://blog-img.speedcurve.com/img/514/family-laptop.jpg?auto=format,compress&amp;fit=max&amp;w=2000" alt="" /></p> <p style="text-align: right;"><sup>Photo by <a href="https://www.freepik.com/free-photo/family-smiles-front-laptop_26203064.htm">andreas on Freepik</a></sup></p> <ul> <li>Someone visits your site on their family computer, which is shared by four people.</li> <li>The computer is a MacBook Pro they bought in 2018, so it still feels newish to them. (They have no plans to replace it any time soon. Kids can be rough on laptops!)</li> <li>The primary browser is Chrome 108 (circa 2022) with a half-dozen nifty toolbar add-ons, including social widgets and a parental control plugin.&nbsp;</li> <li>Each family member has their own browser window with anywhere between 10-20 tabs open at any given time. They keep the same browser window open for days or weeks (sometimes even months) on end.</li> <li>They tend to leave all their other applications open, for easy access. This includes MS Word and Excel, PS Elements, Zoom, and Stop Motion Studio (for the kids!). They're concerned about internet security, so they'e also running antivirus software.</li> <li>They think they have high-speed internet because they're paying their service provider for it, but they're using an eight-year-old modem.</li> <li>They only restart their machine when it's running so slowly that it becomes intolerable &mdash; or when it crashes.</li> </ul> <p><strong>If a crash happens when they're on your site, your user doesn't blame any of the factors listed above.</strong> Chances are they blame your site. This holds true for slowdowns as well.</p> <p>Is this fair? Not really.</p> <p>It's also not fair that those lost seconds and lost visitors could result in lost revenue for your company, but this is the world we live in.</p> <p>Let's go into more detail about end-user performance culprits.</p> <h2>1. End-user connection speed</h2> <p>If you live in an urban centre, you may enjoy connection speeds of 150 Mbps or more. You may find it hard to believe that there are still many rural communities where internet users typically experience connection speeds of just 6-10 Mbps. And as the graph below shows, even <a href="https://www.highspeedinternet.com/resources/fastest-metros-internet">some urban centres can suffer download speeds as low as 20 Mbps</a>.</p> <p><img class="blog-img" src="https://blog-img.speedcurve.com/img/514/fastest-slowest-internet.png?auto=format,compress&amp;fit=max&amp;w=2000" alt="" /></p> <p>Here are some <strong>minimum</strong> download speed requirements for common online activities:</p> <ul> <li>Check email and basic web browsing: 0.5-1 Mbps</li> <li>Music streaming: 1-2 Mbps</li> <li>SD video streaming: 2-3 Mbps</li> <li>Video calls and gaming: 3-5 Mbps</li> <li>HD video streaming: 5-25 Mbps</li> <li>Stream 4K content and play competitive online games: 25-50 Mbps</li> </ul> <p>Keep in mind that the numbers above are bare minimums. Meeting these thresholds does not guarantee an optimal experience.&nbsp;</p> <p><strong>The number of internet users in your house could increase your download speed needs by 2X or more.</strong> If multiple people are using the connection at the same time &ndash; which is more common than not &ndash; then your requirements could be double, or even triple, the numbers listed above.&nbsp;</p> <p><strong>Smart devices also affect connection speeds.</strong> The connected devices in your home &ndash; such as smart thermostats, lighting, and security systems &ndash; are all quietly consuming more bandwidth in the background.&nbsp;</p> <h2>2. Older hardware</h2> <p>If you subscribe to faster service through your ISP, but you're using an older modem and/or an older router, you may not be getting the service you're paying for. For a myriad of reasons, older hardware can't always accommodate faster speeds.</p> <p><strong>Most people use the same hardware for between five to ten years.</strong>&nbsp;It's recommended that you replace your modem and router at least every five years &ndash; or even as often as two or three years, depending on the quality of the hardware and how it's treated during its lifespan. (Despite this, I&rsquo;ve yet to encounter an ISP that proactively reminds customers to upgrade their hardware.)</p> <p><img class="blog-img" src="https://blog-img.speedcurve.com/img/514/modem.jpg?auto=format,compress&amp;fit=max&amp;w=2000" alt="" /></p> <p style="text-align: center;"><sup>If your modem looks like this, replace it immediately.</sup></p> <p><strong>Specifications and standards are in flux.</strong> Back around 2011, most cable companies made the switch from DOCSIS 2.0 to DOCSIS 3.0. (DOCSIS stands for "data over cable service interface specifications".) If you're not using a DOCSIS 3.0 or 3.1 modem, then you haven't been fully leveraging your high-speed plan.</p> <p><strong>We don't know how many users are still using DOCSIS 2.0.</strong>&nbsp;While it's to be hoped that most internet users are using DOCSIS 3.0 at minimum, there's definitely no guarantee. I searched for numbers on how many people might still be using DOCSIS 2.0, but couldn't find anything. But given that a non-trivial number of people hold on to their modems for 10-15 years, it feels safe to assume that some folks are still using hardware that undermines performance.</p> <p>(Note that the specs for DOCSIS 4.0 have been released, but DOCSIS 4.0 modems aren't available for retail purchase yet. After DOCSIS 4.0 starts being broadly released &ndash; possibly later this year &ndash; we should be ready for the same scenario to play out all over again.)</p> <h2>3. Older desktop and mobile devices</h2> <p>While the current "industry standard" sets the lifecycle of a desktop computer at four to five years, data shows that the average person keeps their computer for longer than that.</p> <p><img class="blog-img" src="https://blog-img.speedcurve.com/img/514/statista.gif?auto=format,compress&amp;fit=max&amp;w=2000" alt="" /></p> <p><strong>In the US, the average person replaces their desktop computer every 5.6 years.</strong>&nbsp;In those 5.6 years, performance can seriously degrade &mdash; sometimes due to viruses or, more commonly, due to simply running low on memory.&nbsp;</p> <p><strong>5.6 years is just an average.</strong>&nbsp;Many people hold on to their computers for much longer. In other words, more than half of the people coming to our sites could be using significantly older devices.&nbsp;</p> <p><strong>The desktop replacement lifecycle is increasing, not decreasing, over time.</strong>&nbsp;According to&nbsp;<a href="https://www.statista.com/statistics/267465/average-desktop-pc-lifespan/">Statista</a>, the average lifecycle could increase to 6.5 years by 2027.&nbsp;&nbsp;</p> <p><strong>This holds true for smartphones, as well.</strong> The smartphone replacement cycle is a fair bit shorter, but the lengthening trend also appears here. In the US, the average expected lifecycle of smartphones is currently around 2.8 years (again according to <a href="https://www.statista.com/statistics/619788/average-smartphone-life/">Statista</a>). In a couple of years, that lifecycle is expected to grow to about three years.</p> <p><img class="blog-img" src="https://blog-img.speedcurve.com/img/514/statista-smartphones.gif?auto=format,compress&amp;fit=max&amp;w=2000" alt="" /></p> <p>(Personal disclosure: In September 2024, I reluctantly retired my seven-year-old iPhone 7. I mention this for anyone who might not believe that many people choose not to upgrade their phones every couple of years.)</p> <h2>4. Browser version</h2> <p>You upgrade your browser religiously. Many people do not or cannot, so it's unwise to assume that your users are running the latest and greatest version of their chosen browser.</p> <p>To illustrate, let's look at the&nbsp;<a href="https://gs.statcounter.com/browser-version-market-share/desktop/worldwide/#monthly-202401-202501">latest Chrome stats from Statcounter</a>. Some interesting things to note:</p> <ul> <li>A small number of users are still using Chrome 39, which was released in 2014.</li> <li>Versions 122 to 132 were released over the past 12 months. These are used by 88.32% of Chrome users.</li> <li>11.15% of Chrome users use versions (77 to 120) that were released between 2019 to 2023. In other words, they're using versions that are up to five years old.</li> <li>0.52% of Chrome users are currently using versions that are between 5-10 years old. Does that not sound like much? There are an estimated 3.5 billion Chrome users worldwide, so 0.52% of that is more than 18 million people.</li> </ul> <p><img class="blog-img" src="https://blog-img.speedcurve.com/img/514/chrome-version-breakdown.png?auto=format,compress&amp;fit=max&amp;w=2000" alt="" /><strong>Why does the age of the browser version matter?</strong> Outdated browsers may not support new web technologies and standards, resulting in compatibility issues and slower loading times (not to mention security issues, but that's a whole other problem).</p> <h2>5. Browser use (and abuse)</h2> <p>Browser age is just one issue. There are a number of other variables that can affect browser performance, such as:</p> <ul> <li><strong>Cache and cookie overload</strong> &ndash; Most people don't clear their cache and cookies regularly (if at all). Over time, these files pile up and slow down the browser.</li> <li><strong>Multiple windows and tabs</strong>&nbsp;&ndash; Having too many windows and tabs open at once requires more system resources, which leads to slower performance.</li> <li><strong>Malware and adware</strong> &ndash; These can cause a number of problems, including redirects, unwanted popups, and other slowdowns.</li> <li><strong>Browser extensions</strong>&nbsp;&ndash; Not all plugins affect performance, but some definitely do, particularly security plugins. The more plugins, the greater the risk of page slowdowns.</li> </ul> <p><a href="https://bsky.app/profile/tkadlec.bsky.social/post/3lh2tm2j57k27"><img class="blog-img" src="https://blog-img.speedcurve.com/img/514/plugins2.png?auto=format,compress&amp;fit=max&amp;w=2000" alt="" /></a></p> <p style="text-align: center;"><sup>Performance expert <a href="https://bsky.app/profile/tkadlec.bsky.social/post/3lh2tm2j57k27">Tim Kadlec on Bluesky</a>&nbsp;</sup></p> <p><strong>Related: Some productivity experts say too many open tabs can lead to cognitive overload and reduced focus for users.</strong> According to some experts, you should never have more than 3-5 tabs open at a time. Raise your hand if you have more than five tabs open right now. *RAISES HAND*</p> <h2>6. Other applications&nbsp;</h2> <p>Running too many non-web applications at the same time affects web performance. But many non-techie internet users don&rsquo;t know this. Some other things that aren't common knowledge outside our tech silo:</p> <ul> <li><strong>Automatic software updates</strong> &ndash; Consumes CPU and memory, potentially leading to slower browsing.</li> <li><strong>Antivirus software</strong> &ndash; Scans incoming files to identify and eliminate viruses and other malware such as adware, spyware, trojan horses, etc. It does this by analyzing all files coming through your browser in realtime, meaning that files are paused for inspection before being permitted to download. Because of this inspection, a performance penalty is inevitable and unavoidable. The extent of the penalty depends on the software and on the composition of the page/resource being rendered in the browser.</li> </ul> <h2>Takeaways</h2> <p>As I said at the top of this post, you have no control over potential problems at the very front end of the user experience. But that doesn&rsquo;t mean you shouldn&rsquo;t arm yourself with the knowledge that problems are occurring.</p> <h3>1. Optimize your pages</h3> <p>While you can&rsquo;t control the end-user environment, you have tons of control over your pages. Optimizing your <a href="https://www.speedcurve.com/web-performance-guide/best-practices-for-optimizing-images/">images</a> and <a href="https://www.speedcurve.com/web-performance-guide/best-practices-for-optimizing-javascript/">JavaScript</a> (including <a href="https://www.speedcurve.com/web-performance-guide/third-party-web-performance/">third parties</a>), <a href="https://www.speedcurve.com/web-performance-guide/leveraging-browser-caching-for-faster-load-times/">smarter browser caching</a>, creating <a href="https://www.speedcurve.com/web-performance-guide/complete-guide-performance-budgets/">performance budgets</a> to catch regressions &mdash; these are just a few of the techniques you can leverage to mitigate the damage done by things like poor connection speeds and older hardware.</p> <h3>2. Use a reliable content delivery network</h3> <p>In addition to optimizing the heck out of your pages, you should also consider using a reliable content delivery network (CDN).&nbsp;</p> <h3>3. Use real user monitoring to understand real-world performance</h3> <p>Don't rely on your own experience using your site. You also shouldn't rely on synthetic tests to give you a true sense of how your pages perform. Your synthetic testing tools show you how your pages perform in a clean lab environment. Synthetic monitoring is essential for establishing a baseline and showing you the impact of code and design changes. That's only one half of what you need to know. <a href="https://www.speedcurve.com/web-performance-guide/synthetic-vs-real-user-monitoring/">You need to combine synthetic and real user monitoring.</a></p> <p>Real user monitoring (RUM) tools show you how your pages perform out in the real world, where they're affected by variables outside your control. You need real user monitoring that gives you full visibility into how actual people are experiencing your site.</p> <h3>4. Look at performance at the 75th and 95th percentile, not just the median</h3> <p>Too many people focus on what performance and user experience look like at the median, and they neglect the large number of users at the 75th and 95th percentiles. Here's when and why you should focus on median, 75th percentile, and 95th percentile results:</p> <ul> <li><strong>Median</strong> &ndash; This is typically a stable measurement, so it's good for seeing long-term trends; however, the median will typically not show short-term trends or anomalies. Importantly, it also doesn't give you any visibility into the user experience being tracked in the worst-performing half of your data.</li> <li><strong>75th percentile</strong> &ndash; This is a good balance of representing the vast majority of measurements, while not being affected by outliers. While not as stable as the median, the 75th percentile is a good choice for seeing medium- to long-term trends. The 75th percentile is the best value to use when setting performance budgets. It's the percentile that Google recommends using when monitoring <a href="https://www.speedcurve.com/web-performance-guide/get-started-with-core-web-vitals/">Core Web Vitals</a>.</li> <li><span style="font-size: 17px;"><strong>95th percentile</strong> &ndash; This encompasses the experience of almost all of your users, with only the most severe outliers excluded. This makes it perfect for spotting short-term trends and anomalies. If your metrics look good at the 95th percentile, you can feel assured that the majority of your visitors are having a fast user experience.</span></li> </ul> <h2>Summary</h2> <p>You have a lot of control over the design and code for the pages on your site, plus a decent amount of control over the first and middle mile of the network your pages travel over. But when it comes to the last mile &ndash; or more specifically, the last few feet &ndash; matters are no longer in your hands. This is why you need to combine synthetic and real user monitoring for visibility into the full breadth of your users' experiences.</p> <p><a href="https://www.speedcurve.com/signup/?utm_source=blog&amp;utm_medium=blog&amp;utm_campaign=blog-trials"><img class="blog-img" src="https://blog-img.speedcurve.com/img/514/customer-logos-free-trial-banner.png?auto=format,compress&amp;fit=max&amp;w=2000" alt="" /></a></p> Tue, 11 Feb 2025 00:00:00 +1300 Page bloat update: How does ever-increasing page size affect your business and your users? https://www.speedcurve.com/blog/page-bloat-2025 <p><span class="large-para">The median web page is 8% bigger than it was just one year ago. How does this affect your page speed, your Core Web Vitals, your search rank, your business, and most important &ndash; your users? Keep scrolling for the latest trends and analysis.</span></p> <p><img class="blog-img" src="https://blog-img.speedcurve.com/img/474/2024-page-bloat-hero.png?auto=format,compress&amp;fit=max&amp;w=2000" alt="" /></p> <p>For almost fifteen years, I've been writing about page bloat, its impact on site speed, and ultimately how it affects your users and your business. You might think this topic would be exhausted by now, but every year I learn new things &ndash; beyond the overarching fact that pages keep getting bigger and more complex, as you can see in this chart, using data from the HTTP Archive:</p> <p><img class="blog-img" src="https://blog-img.speedcurve.com/img/474/2b-resource-size-breakdown-2022-to-2024.png?auto=format,compress&amp;fit=max&amp;w=2000" alt="" /></p> <p>In this post, we'll cover:</p> <ul> <li>How much pages have grown over the past year</li> <li>How page bloat hurts your business and &ndash; at the heart of everything &ndash; your users</li> <li>How page bloat affects Google's Core Web Vitals (and therefore SEO)</li> <li>If it's possible to have large pages that still deliver a good user experience</li> <li>Page size targets</li> <li>How to track page size and complexity</li> <li>How to fight regressions</li> </ul><p><img class="blog-img" src="https://blog-img.speedcurve.com/img/474/leeeeeeroy-jenkins.jpg?auto=format,compress&amp;fit=max&amp;w=2000" alt="" /></p> <p style="text-align: center;"><em>anymouse123456 via&nbsp;<a href="https://news.ycombinator.com/item?id=39564632">Hacker News</a></em></p> <h2>What do we mean when we talk about page size?</h2> <p>When we talk about page size, we're referring to overall page weight and complexity. This includes:</p> <ul> <li><strong>Size</strong>&nbsp;&ndash; Total page weight in bytes. Size matters, especially to mobile users who have limited and/or metered data.</li> <li><strong>Resources</strong>&nbsp;&ndash; Total number of resources (HTML, images, fonts, etc.) on the page. The more resources, the greater the complexity of the page &ndash; and the increased likelihood of rendering delays, and even blockages.&nbsp;</li> <li><strong>HTML</strong>&nbsp;&ndash; Typically the smallest resource on the page, HTML's performance risk is usually negligible. (Having said that, a while back I dug into a page where the total HTML size jumped dramatically because of a bunch of inline JavaScript, which led to rendering delays, so keeping an eye on HTML size is still a good idea.)</li> <li><strong>Images</strong>&nbsp;&ndash; Often the greatest contributor to page bloat. Looking at the 90th percentile of the distribution of page weight, images account for a whopping 6.6 MB of a roughly 11.1 MB page. In other words, images comprised almost 60% of the total page weight. And if that already wasn&rsquo;t enough, the number of images on a page has been linked to lower conversion rates on retail sites. <a href="https://www.speedcurve.com/web-performance-guide/best-practices-for-optimizing-images/">Learn how to optimize images.</a></li> <li><strong>Video</strong>&nbsp;&ndash; Over the past couple of years, video has proliferated hugely. This is a potential cause for concern for anyone who cares about metrics like Largest Contentful Paint, which measures the largest visual element on a page &ndash; including videos. (More on that below.)</li> <li><strong>JavaScript</strong>&nbsp;&ndash; A page can have a relatively low JS weight but still suffer from JS-inflicted performance problems. Even a single 100 KB third-party script can wreak havoc with your page. The more scripts on your page, the greater the risk. It&rsquo;s not enough to focus solely on blocking scripts. It&rsquo;s possible for your pages to contain zero blocking scripts and still have less-than-optimal performance because of how your JavaScript is rendered. That&rsquo;s why it&rsquo;s so important to understand CPU usage on your pages, because JavaScript consumes more CPU than all other browser activities combined. When JavaScript blocks the CPU, the browser can&rsquo;t respond to user input. This creates what&rsquo;s commonly called "jank" &ndash; that annoying feeling of jittery, unstable page rendering. <a href="https://www.speedcurve.com/web-performance-guide/best-practices-for-optimizing-javascript/">Learn more about optimizing JS.</a></li> <li><strong>CSS</strong>&nbsp;&ndash; Like JavaScript, CSS doesn&rsquo;t have to be bulky to cause problems. Poorly executed stylesheets can create a host of performance problems, ranging from stylesheets taking too long to download and parse, to improperly placed stylesheets that block the rest of the page from rendering. And, similar to JavaScript, more CSS files equals more potential trouble. <a href="https://www.speedcurve.com/web-performance-guide/using-critical-css-for-faster-rendering/">Review some CSS optimization tips and best practices.</a></li> </ul> <h2>How does page bloat hurt Core Web Vitals?</h2> <p><span style="color: #000000;"><a href="https://www.speedcurve.com/web-performance-guide/get-started-with-core-web-vitals/">Core Web Vitals</a>&nbsp;are a Google search ranking factor. Given that Google continues to dominate search usage, you should care about Vitals alongside the other metrics you should be tracking.</span></p> <p><img class="blog-img" src="https://blog-img.speedcurve.com/img/474/core-web-vitals-new.png?auto=format,compress&amp;fit=max&amp;w=2000" alt="" /></p> <p><span style="color: #000000;">Page bloat can have a huge impact on your Vitals:&nbsp;</span></p> <ul> <li><strong>Cumulative Layout Shift</strong>&nbsp;&ndash;&nbsp;Excessive resources can contribute to a poorer CLS score, as more elements shift on the page.&nbsp;</li> <li><strong>Largest Contentful Paint</strong>&nbsp;&ndash; LCP measures when the largest visual element (image or video) in the viewport finishes rendering. Heavier visual elements can take much longer to render, especially videos.&nbsp;If you're serving huge videos that take several seconds to fully render, that could hurt your LCP times.</li> <li><strong>Interaction to Next Paint &amp; Total Blocking Time</strong>&nbsp;&ndash; Excessive and/or non-performant JavaScript can hurt interactivity metrics, like INP and TBT. The more scripts on your pages, the greater the risk.</li> </ul> <h2>How does page bloat hurt your business?</h2> <p>A&nbsp;<a href="https://www.thinkwithgoogle.com/marketing-strategies/app-and-mobile/mobile-page-speed-load-time/">Google machine-learning study</a>&nbsp;I helped with a few years ago found a few strong predictors of whether or not a page resulted in a conversion, ranked in the following order:</p> <ol> <li>The total number of page elements was the single greatest predictor of conversions.</li> <li>The number of images on the page was the second greatest predictor.</li> <li><span style="color: #1f1f1f;">The more scripts there were in a series of pages in a session, the less likely that session was to convert.</span></li> </ol> <p><img class="blog-img" src="https://blog-img.speedcurve.com/img/455/google-study2.png?auto=format,compress&amp;fit=max&amp;w=2000" alt="" /></p> <p>Image size is another issue, as excessive image weight hurts your SEO ranking in Google Image Search. Given that image search comprises upwards of 26% of Google searches, this is something you should care about. (You can dive deeper into <a href="https://www.speedcurve.com/web-performance-guide/best-practices-for-optimizing-images/">best practices for image optimization</a>.)&nbsp;</p> <h2>How does page bloat hurt your visitors?</h2> <p>In his excellent ongoing series of blog posts,&nbsp;<a href="https://infrequently.org/2022/12/performance-baseline-2023/">The Performance Inequality Gap</a>, Alex Russell makes a compelling case that serving huge pages is an "ethical crisis for front end" as more and more users rely solely on low-powered mobile devices to deliver essential information and services:</p> <blockquote> <p>The "i" in iPhone stands for "inequality".</p> <p>Premium devices are largely absent in markets with billions of users thanks to the chasm of global wealth inequality....</p> <p>As smartphone ownership and use grow, the frontends we deliver remain mediated by the properties of those devices. The inequality between the high-end and low-end is only growing, even in wealthy countries. What we choose to do in response defines what it means to practice UX engineering ethically.</p> <p>Developers are clearly out of touch with market ground-truth. Building an understanding of the differences in the experiences of the wealthy vs. working-class users can make the privilege bubble's one-way mirror perceptible from the inside.</p> </blockquote> <h2>HTTP Archive research: Background and caveats</h2> <p>Before we get into the analysis, some context:</p> <ul> <li><strong>The numbers cited below all come from the&nbsp;<a href="https://httparchive.org/reports/page-weight">HTTP Archive</a>.</strong>&nbsp;I looked at the top 1M sites, focusing on median and 90th percentile numbers. This is to try to understand how a "typical" page might perform, as well as pages in the longtail.&nbsp;</li> <li><strong>These numbers should NOT be taken as a benchmark for your own site.</strong>&nbsp;You haven't necessarily achieved anything great if your pages are smaller than this, nor have you failed by default if your pages are bigger. I'll go into this more below.</li> </ul> <h2>Desktop: The median page has grown by 8% in one year</h2> <p>If you look at the year-over-year increase from 2467.5 KB to 2675.2 KB, you're forgiven if your initial reaction is "that's not too bad". But 8% growth is significant. At that rate, the median page could be 3 MB by the end of this year. That's not trivial.</p> <p><img class="blog-img" src="https://blog-img.speedcurve.com/img/474/1-median-desktop-2023-to-2025.png?auto=format,compress&amp;fit=max&amp;w=2000" alt="" /></p> <p>Even if you consider this growth not too worrisome, it's important to keep in mind that it's just an aggregated number, which masks the more dramatic increases in specific resource types, such as images, JavaScript, and video.</p> <p><img class="blog-img" src="https://blog-img.speedcurve.com/img/474/2b-resource-size-breakdown-2022-to-2024.png?auto=format,compress&amp;fit=max&amp;w=2000" alt="" /></p> <h2>Desktop: Median JavaScript weight increased by 10%</h2> <p>A 10% year-over-year increase in JS size is something to take note of. All in, JS weight has increased by 28% since 2022.</p> <p><img class="blog-img" src="https://blog-img.speedcurve.com/img/474/3-javascript-growth-median.png?auto=format,compress&amp;fit=max&amp;w=2000" alt="" /></p> <p>Each script on your page represents a potential single point of failure, especially if the script is render-blocking or has an excessive Long Tasks time. The more scripts on your page, the greater the performance risk.</p> <p>Even if the script doesn't block the page from rendering, excessive and unoptimized JavaScript can hurt interactivity metrics like Interaction to Next Paint and Total Blocking Time. Remember: <a href="https://www.speedcurve.com/web-performance-guide/best-practices-for-optimizing-javascript/">The single best thing you can do with JavaScript is to avoid using it when you don't need to.</a></p> <p><img class="blog-img" src="https://blog-img.speedcurve.com/img/474/4-javascript-size-vs-requests-median-desktop.png?auto=format,compress&amp;fit=max&amp;w=2000" alt="" /></p> <p>It's interesting to note that the number of scripts on the median page has more or less remained the same, as shown above. This suggests that the increase in JS weight is coming because individual scripts are becoming heavier.</p> <h2>Desktop: Median image weight increased by 5%</h2> <p>This finding came as a somewhat pleasant surprise. While the upward trend is still present, it's not quite as alarming as it has been in previous years.</p> <p><img class="blog-img" src="https://blog-img.speedcurve.com/img/474/5-image-size-median-desktop.png?auto=format,compress&amp;fit=max&amp;w=2000" alt="" /></p> <p>Still, it's important to keep in mind that 1058 KB of image weight represents roughly 40% of the total weight of the median page. Improving <a href="https://www.speedcurve.com/web-performance-guide/best-practices-for-optimizing-images/">image optimization</a> and rendering best practices could have a noticeable impact on page speed.</p> <p><img class="blog-img" src="https://blog-img.speedcurve.com/img/474/6-image-size-vs-requests.png?auto=format,compress&amp;fit=max&amp;w=2000" alt="" /></p> <p>Similar to the observation about JS size and resources above, it's interesting to see that while the number of image requests has been more or less stable over the past couple of years, the total size has increased. This suggests that the size of individual images is trending upward.</p> <h2>Desktop: Median video weight increased by 17%</h2> <p>As mentioned earlier, video is one of the main growth areas. (If you're adding up the numbers and wondering how the video weight makes sense given the median page weight cited earlier, keep in mind that these medians are calculated based on pages that contain these resources. Of the one million URLs tracked by the HTTP Archive, not all contain video.)</p> <p><img class="blog-img" src="https://blog-img.speedcurve.com/img/474/7-video-median-desktop.png?auto=format,compress&amp;fit=max&amp;w=2000" alt="" /></p> <p>As mentioned earlier in this post, Largest Contentful Paint (one of Google's Core Web Vitals) measures when the largest visual element (image or video) in the viewport finishes rendering. Heavier visual elements can take much longer to render, especially videos.</p> <p>In other words, if you serve huge videos to your users, it could be hurting your LCP times, which could then be hurting your Google search ranking.</p> <p><img class="blog-img" style="font-size: 35px; color: #000000;" src="https://blog-img.speedcurve.com/img/474/8-video-size-vs-requests-median-desktop.png?auto=format,compress&amp;fit=max&amp;w=2000" alt="" /></p> <p>While not all pages serve video, those that do are serving larger and larger video files. The median page that contains video serves just 2 files, but the total weight has increased by 28% in just two years.&nbsp;</p> <h2>Mobile: Median page has grown by 7.5% in one year</h2> <p>A few years ago, it seemed like mobile page growth had slowed down, but it once again appears to be on the upswing. The median page served to mobile is well over 2 MB &ndash; and keep in mind that this is being served to low-powered and/or connectivity-impaired mobile devices.&nbsp;&nbsp;</p> <p><img class="blog-img" src="https://blog-img.speedcurve.com/img/474/15-median-page-growth-mobile.png?auto=format,compress&amp;fit=max&amp;w=2000" alt="" />While the median mobile page is still a bit smaller than the desktop page,&nbsp;when we look at the breakdown across resource types, we can see growth in images, JavaScript, and video, just as we did with desktop:</p> <h2><img class="blog-img" src="https://blog-img.speedcurve.com/img/474/9-mobile-vs-desktop-resource-size.png?auto=format,compress&amp;fit=max&amp;w=2000" alt="" /></h2> <h2>90th percentile sees a 24% increase</h2> <p>Things get really interesting when we compare numbers at the 90th percentile. This is where we can see explosive growth over the past year.</p> <p>The 90p page currently weighs in at over 11 MB. At this rate of growth, the 90p page could reach 14 MB by the end of this year.</p> <p><img class="blog-img" src="https://blog-img.speedcurve.com/img/474/11-90p-desktop-2023-to-2025.png?auto=format,compress&amp;fit=max&amp;w=2000" alt="" /></p> <h2>90p mobile page is 4X larger than median mobile page</h2> <p>The 90th percentile page served to mobile is almost 10 MB, making it four times larger than the median page. As before, consider the range of mobile devices that might be struggling to render this massive page.</p> <p><img class="blog-img" src="https://blog-img.speedcurve.com/img/474/12-mobile-page-size-med-vs-90p.png?auto=format,compress&amp;fit=max&amp;w=2000" alt="" /></p> <h2>90p page contains 2.5X more requests than the median page</h2> <p>The median page served to desktop contained a total of 76 resources (HTML, JS, images, videos, etc.) compared to the 90th percentile with a total of 189 resources. In other words, the 90p page contains almost three times the number of requests.&nbsp;</p> <p>While it wasn't surprising to see the large number of image, JavaScript, and video requests at the 90th percentile, it was a surprise to see that the 90p page contained 12 HTML requests and 30 CSS requests.</p> <p><img class="blog-img" src="https://blog-img.speedcurve.com/img/474/13-resource-requests-breakdown-median-vs-90p-grouped.png?auto=format,compress&amp;fit=max&amp;w=2000" alt="" /></p> <h2>Most 90p page weight comes from video, images, and JavaScript</h2> <p>As mentioned earlier, not all pages contain video, but those that do at the 90th percentile contain a LOT &ndash; almost 20 MB!</p> <p>Image weight comes next, weighing in at 6.6 MB. JavaScript runs third at almost 2 MB.</p> <p><img class="blog-img" src="https://blog-img.speedcurve.com/img/474/14-resource-size-breakdown-median-vs-90p-grouped.png?auto=format,compress&amp;fit=max&amp;w=2000" alt="" /></p> <h2>Can large pages ever deliver a good user experience?</h2> <p>Yes. While page size can be a red flag for performance issues, you need to take a closer look at how your pages are built to see if the size and complexity of your pages actually affect how fast your site feels to your users.</p> <p>It's not enough to look at crude metrics like total requests and size. You need to know:</p> <ul> <li>How many of your requests are blocking requests?</li> <li>If your page contains blocking requests, how many of them occur in the critical rendering path? That is, how many blocking requests are there before key page metrics like Start Render and Largest Contentful Paint?</li> <li>How many of your potentially problematic requests come from third parties, and how do you maintain visibility into how they're performing?</li> <li>Are the most important images on your page the first images to render? How quickly do they show up?</li> </ul> <h2>How much content *should* you serve?</h2> <p>Making your pages as small as possible is in the best interest of your users who don't have access to fast networks and devices. Alex Russell <a href="https://infrequently.org/2024/01/performance-inequality-gap-2024/">suggests</a> these per-page content targets for first-load under 3 seconds on 75th percentile devices:</p> <ul> <li><strong>For JS-centric pages</strong> &ndash; No more than 365 KB of JS and 365 KB of markup, for a total of 730 KB</li> <li><strong>For markup-centric pages</strong>&nbsp;&ndash; No more than 75 KB of JavaScript and 1.3 MB of markup, for a total of 1.4 MB</li> </ul> <p>This is how those recommended thresholds stack up against the current reality:</p> <p><img class="blog-img" src="https://blog-img.speedcurve.com/img/474/16-recommendations.png?auto=format,compress&amp;fit=max&amp;w=2000" alt="" /></p> <p>Are these targets aggressive? Yes. Will you be able to meet them? Possibly not. But as the saying goes, don't let perfect be the enemy of good.&nbsp;</p> <h2>Takeaways</h2> <p>I meet with so many people who build and optimize websites. When we investigate how their pages are built, I routinely witness surprise at spotting things like ghost scripts, huge unoptimized images, and blocking resources they weren't aware of. These are smart people. The problem isn't them &ndash; it's the scale of their sites, the speed of their release cycles, and the number of people who touch each page.</p> <p>We might never get our lean, pre-1999, under-1MB web pages back. But we can regain control over the pages we have today.</p> <h3>1. Understand the critical rendering path for each page</h3> <p>Your pages probably have a some dead weight on them, and some of that weight is unoptimized. Too much stuff means you can't see the forest for the trees. The key to a good user experience is quickly delivering the most important content first. Here are some <a href="https://developers.google.com/web/fundamentals/performance/critical-rendering-path/measure-crp">great resources for analyzing and optimizing the critical rendering path</a>.</p> <h3>2. Make sure everyone who touches a page understands the performance impact of what they do</h3> <p>All the fancy performance monitoring tools in the world can't help you if you don't have a strong performance culture at your organization. Here are some <a href="https://www.speedcurve.com/web-performance-guide/performance-culture-best-practices/">tips and best practices</a> to help on that journey.</p> <h3>3. Use performance budgets to fight regression</h3> <p>Page bloat happens when people stop paying attention. Pages need to be monitored consistently over time. <a href="https://www.speedcurve.com/web-performance-guide/continuous-performance-monitoring/">Integrating performance testing into your CI/CD process</a> is a great way to fight regression, especially if you combine this with <a href="https://www.speedcurve.com/web-performance-guide/complete-guide-performance-budgets/">creating performance budgets</a>. By creating performance budgets for key metrics &ndash; such as Start Render, Largest Contentful Paint, Interaction to Next Paint, and various page size and weight metrics &ndash; you can get alerted when they go out of bounds.</p> <h3>4. Don't assume hardware and networks will mitigate page bloat</h3> <p>Increased page size and complexity is not fully mitigated by faster devices and networks, or by our hard-working browsers. Clearly we need to keep talking about it. We need to understand how ever-growing pages work against us. And we need to have strategies in place to understand and manage our pages.</p> <h3>5. Don't forget to monitor longtail performance</h3> <p>While some of your users may have newer devices and speedy networks, not all are this lucky.&nbsp;If you're using a&nbsp;<a href="https://www.speedcurve.com/web-performance-guide/synthetic-vs-real-user-monitoring/">real user monitoring</a>&nbsp;tool,&nbsp;<a href="https://www.speedcurve.com/web-performance-guide/web-performance-for-product-managers/">keep an eye on your performance metrics at the 75th and 95th percentiles</a>&nbsp;so you have an understanding of your site's less-than-optimal performance.&nbsp;</p> <h2>Questions or feedback?</h2> <p>I'd love to hear your thoughts and insights. If you're interested in tracking page size and complexity for your own site, we'd love to have you&nbsp;<a href="https://www.speedcurve.com/signup/?utm_source=blog&amp;utm_medium=blog&amp;utm_campaign=blog-trials"><strong>try SpeedCurve for free</strong></a>!</p> <p><a href="https://www.speedcurve.com/signup/?utm_source=blog&amp;utm_medium=blog&amp;utm_campaign=blog-trials"><img class="blog-img" src="https://blog-img.speedcurve.com/img/455/customer-logos-free-trial-banner.png?auto=format,compress&amp;fit=max&amp;w=2000" alt="" /></a></p> Tue, 28 Jan 2025 00:00:00 +1300 Performance Hero: Annie Sullivan https://www.speedcurve.com/blog/performance-hero-annie-sullivan <p><span class="large-para">Let's kick off the new year by celebrating someone who has not just had a huge impact on web performance over the past few years, but who has even more exciting stuff in the works for the future: Annie Sullivan!</span></p> <p><img class="blog-img" src="https://blog-img.speedcurve.com/img/532/annie.png?auto=format,compress&amp;fit=max&amp;w=2000" alt="" />Annie leads the Chrome Speed Metrics team at Google, which has arguably had the most significant impact on web performance of the past decade. We've gotten to know Annie through frequent discussions, feedback sessions, and hallway talks at various events. Most recently we caught her <a href="https://youtu.be/ORg88SshSEQ?si=zm9JlemKP1RPZszB">closing keynote at performance.now()</a> in November.&nbsp;</p> <p>Speaking from experience, driving change at scale from within a large organization can be very challenging. Annie and her team navigate this arduous task with true passion for web performance and for improving the user experience. Read on for a great recap of a recent discussion with Annie and just a few of the highlights that make her a true performance hero.</p><p>In <a href="https://youtu.be/ORg88SshSEQ?si=zm9JlemKP1RPZszB">her recent performance.now() talk</a>, which is a must-watch, Annie took us through key learnings she has had while working in performance for the last couple of decades.</p> <p>In her preamble, she celebrated some of the successes our community has had over the past year. This slide really stuck out to me as an example of how we collectively have a huge impact on the user experience:</p> <p><img class="blog-img" src="https://blog-img.speedcurve.com/img/532/cwvimpact.gif?auto=format,compress&amp;fit=max&amp;w=2000" alt="Slide from Annie's talk showing the impact in years of CWV improvements." /></p> <p>You know when you are measuring success in 'years of time saved' that you've had a meaningful impact. Nice job, everyone!</p> <p>It's really important to acknowledge that none of this would have been possible without the great work from Annie and her small-but-mighty Speed Metrics team at Google.&nbsp;Here is a little more we learned about Annie and her team.</p> <h3>How did you get your start in web performance?</h3> <p>"The very first web performance project I did was back in the late nineties! I was running a message board for the local punk rock scene in Detroit. I started with <a href="https://www.scriptarchive.com/wwwboard.html">WWWboard</a>, but it had a race condition that led to overwriting posts. So I decided to write my own message board in PHP and MySQL, which better managed transactions. But my original version was slow, because I queried the database for every page load. Of course writes were much less common than reads, so I added a caching layer for reads, and that did the trick.</p> <p>"After I finished college, I did performance work here and there while developing games for Playstation 2, and later at Google. Then in 2008, <a href="https://markcarrigan.net/2016/01/10/googles-war-against-latency/">Google issued a code yellow</a> for application speed, and I was the code yellow lead for Google Docs. A critical part of the code yellow was ensuring Google's sites would be fast for users across the globe, even if they had slow networks and low end devices. Leadership wanted to know the real page load times end users were experiencing. So in addition to all the optimization work we did for Google Docs, I got to spend a lot of time and energy working on the measurement problem: how can we get end-to-end latency numbers? How do we slice and dice them to find problem areas? What should we tell browser vendors is missing? That got me started on a long journey I'm still on today."</p> <p>(We always knew you were punk rock, Annie, but we had no idea you'd been at performance since the nineties!)&nbsp;</p> <h3>What is the charter of the Chrome Speed Metrics team?</h3> <p>"The Chrome Speed Metrics team aims to <a href="https://chromium.googlesource.com/chromium/src/+/main/docs/speed_metrics/README.md#:~:text=The%20Chrome%20Speed%20Metrics%20team%20aims%20to%20quantify%20users%27%20experience%20of%20the%20web%20to%20provide%20Chrome%20engineers%20and%20web%20developers%20the%20metrics%2C%20insights%2C%20and%20incentives%20they%20need%20to%20improve%20it">quantify users' experience of the web</a> to provide Chrome engineers and web developers the metrics, insights, and incentives they need to improve it.</p> <p>(At SpeedCurve, we've worked closely with this team over the years, and can tell you that everyone is invested in this mission. The Speed Metrics team is a great example of how to build a performance first culture within your organization, whether that's a ginormous company like Google or a small shop like SpeedCurve, passionate people truly can make a difference.)</p> <h3>2024 seemed like it was full of big wins. What was the one you were most proud of?</h3> <p>"With the introduction of the Long Animation Frames API [LoAF], sites have better insight into the causes of slow JavaScript than ever before. With the additional data, we've been able to reach out to several third parties who've then made improvements, and I've heard positive stories from several other members of the web perf community who've done the same. There were two case studies highlighting third party wins published on <a href="https://web.dev/">web.dev</a> (<a href="https://web.dev/case-studies/pubconsent-inp?hl=en">1</a>, <a href="https://web.dev/case-studies/taboola-inp?hl=en">2</a>), and Google Publisher Tag launched <a href="https://developers.google.com/publisher-tag/reference?hl=en#googletag.config.PageSettingsConfig_threadYield">a new yielding strategy</a>. All the feedback from third parties we got from this process helped us prioritize the scheduler.yield() API so that it's easier for third parties to work well with the rest of the content on the page.</p> <p>"I know third parties have long been a point of frustration for web performance enthusiasts, but it's been amazing to see the optimizations here, which can make thousands or even millions of sites faster overnight."</p> <p>(We agree the visibility that LoAF attribution brings is exciting! Everyone loves to hate third parties, but with the exception of synthetic testing, we haven't had a lot to work from. SpeedCurve is hard at work looking at how to leverage the LoAF API to improve our RUM data. We hope that third parties embrace this data and continue to look at improving. However, we are also hearing that a fair number of LoAFs responsible for poor Interaction to Next Paint (INP) are surprisingly coming from first-party JavaScript!)</p> <h3>What are you working on now and/or what are you most excited about?</h3> <p>"I'm currently working with Michal Mocny [on the Google Speed Metrics team] on integrating soft navigations into Core Web Vitals. I'm really excited about getting a deeper understanding of single page applications and their performance. From my perspective, it's the biggest blind spot in web performance and every day I learn something new."</p> <p>(We've been following this work closely and are thrilled to see it getting so much attention. SPAs continue to be a challenge for performance, starting with measuring the true user experience. Looking forward to seeing this evolve!)</p> <h3>As we roll into 2025, what do you see as the single biggest challenge in front of us?</h3> <p>"I always get excited about challenges, and I think the biggest one is working together! There are so many wonderful developments in the world of standards--increased engagement from other vendors, the RUM CG, the Container Timing work. I'm excited for the challenge of collaborating effectively with people around the world. There's so much potential to bring many more viewpoints to the table."</p> <p>(Well put, Annie. We couldn't agree more. And here's a shameless plug for the W3C RUM Community Group, which has generated a lot of interest and had its first meeting on January 17. <a href="https://www.w3.org/community/rumcg/">Learn more</a> about the RUM Community Group.)</p> <p>We are soooooo excited for 2025, especially with awesome leaders like Annie at the helm.&nbsp;</p> <p><em>Do you have someone you'd like to recognize as a Performance Hero in 2025?&nbsp;<a href="mailto:support@speedcurve.com">Let us know!</a></em></p> <p><a href="https://www.speedcurve.com/signup/?utm_source=blog&amp;utm_medium=blog&amp;utm_campaign=blog-trials"><em><img class="blog-img" src="https://blog-img.speedcurve.com/img/532/customer-logos-free-trial-banner.png?auto=format,compress&amp;fit=max&amp;w=2000" alt="" /></em></a></p> Mon, 20 Jan 2025 00:00:00 +1300 Our 10 most popular web performance articles of 2024 https://www.speedcurve.com/blog/popular-web-performance-posts-2024 <p><span class="large-para">We love writing articles and blog posts that help folks solve real web performance and UX problems. Here are the ones you loved most in 2024. (The number one item may surprise you!)</span></p> <p><a href="https://www.speedcurve.com/web-performance-guide/"><img class="blog-img" src="https://blog-img.speedcurve.com/img/529/herman-bench-social.gif?auto=format,compress&amp;fit=max&amp;w=2000" alt="" /></a></p> <p>Some of these articles come from our recently published&nbsp;<a href="https://www.speedcurve.com/web-performance-guide/">Web Performance Guide</a>&nbsp;&ndash; a collection of evergreen how-to resources (written by actual humans!) that will help you master website monitoring, analytics, and diagnostics. The rest come from this blog, where we tend to publish industry news and analysis.&nbsp;</p> <p>Regardless of the source, we hope you find these pieces useful!</p><h2>10. Five ways cookie consent managers hurt web performance (and how to fix them)</h2> <p><img class="blog-img" src="https://blog-img.speedcurve.com/img/530/cookie-consent.png?auto=format,compress&amp;fit=max&amp;w=2000" alt="" /></p> <p>Cookie consent popups and banners are everywhere, and they're silently hurting the speed of your pages. <a href="https://www.speedcurve.com/blog/web-performance-cookie-consent/">Learn the most common problems &ndash; and their workarounds</a> &ndash; with measuring performance with content manager platforms in place.</p> <h2>9. Best practices for optimizing images</h2> <p><img class="blog-img" src="https://blog-img.speedcurve.com/img/530/image-optimization.gif?auto=format,compress&amp;fit=max&amp;w=2000" alt="" /></p> <p>They say a picture is worth a thousand words. Unfortunately that picture can also cost you 1,000 kilobytes. Images are an important part of providing a rich, user-friendly experience online. It&rsquo;s critical to optimize how they&rsquo;re loaded and how much they weigh. <a href="https://www.speedcurve.com/web-performance-guide/best-practices-for-optimizing-images/">Here's a detailed checklist of best practices and how-tos</a> to make sure your beautiful images aren't hurting your page speed.</p> <h2>8. Understanding and improving INP</h2> <p>Interaction to Next Paint (INP) is the Core Web Vital that measures how responsive a page is to visitor interactions. According to Google, a 'good' INP time is faster that 200 milliseconds. Learn&nbsp;<a href="https://www.speedcurve.com/web-performance-guide/understanding-and-improving-interaction-to-next-paint/">how to identify and debug slow interactions</a>&nbsp;&ndash; and most important, how to make them faster, improve your INP time, and potentially improve your Google search rank!</p> <h2>7. Understanding and improving LCP</h2> <p>Largest Contentful Paint (LCP) is the Core Web Vital that measures when the largest visual element on the page renders. To make Google happy, aim for an LCP time under 2.5 seconds. <a href="https://www.speedcurve.com/web-performance-guide/understanding-and-improving-largest-contentful-paint/">Here's everything you need to know</a> to start measuring, debugging, and optimizing LCP.</p> <h2>6. Best practices for optimizing JS</h2> <p><img class="blog-img" src="https://blog-img.speedcurve.com/img/530/javascript.png?auto=format,compress&amp;fit=max&amp;w=2000" alt="" />Byte for byte, no resource affects page speed more than JavaScript. JavaScript affects network performance, CPU processing time, memory usage, and overall user experience. Inefficient scripts can slow down your website, making it less responsive and more frustrating for your users. <a href="https://www.speedcurve.com/web-performance-guide/best-practices-for-optimizing-javascript/">This guide walks you through essential techniques</a> for reducing the negative impact of JS on your pages by focusing on reducing the impact on the initial load, as well as reducing the impact of the actual JS interaction itself.</p> <h2>5. A complete guide to performance budgets</h2> <p><img class="blog-img" src="https://blog-img.speedcurve.com/img/530/perf-budgets.png?auto=format,compress&amp;fit=max&amp;w=2000" alt="" /></p> <p>It's easier to build a fast website than it is to keep a website fast. If you've invested countless hours in speeding up your site, but you're not using performance budgets to prevent regressions, you could be at risk of wasting all your efforts! <a href="https://www.speedcurve.com/web-performance-guide/complete-guide-performance-budgets/">Here's how to get started.</a></p> <h2>4. Get started with Core Web Vitals</h2> <p><img class="blog-img" src="https://blog-img.speedcurve.com/img/530/core-web-vitals.png?auto=format,compress&amp;fit=max&amp;w=2000" alt="" /></p> <p>This is it, your one-stop shop. <a href="https://www.speedcurve.com/web-performance-guide/get-started-with-core-web-vitals/">Everything you need to know about Core Web Vitals</a> &ndash; from SEO and business impact to how to continuously monitor, catch regressions, and fix issues with each Vital.</p> <h2>3. The psychology of site speed</h2> <p><img class="blog-img" src="https://blog-img.speedcurve.com/img/530/cognitive-load.png?auto=format,compress&amp;fit=max&amp;w=2000" alt="" />If you don't consider time a crucial usability factor, you're missing a fundamental aspect of the user experience. Before getting into the technical side of web performance, it's important to first understand <a href="https://www.speedcurve.com/web-performance-guide/the-psychology-of-web-performance/">the roots of our craving for lightning-fast online experiences</a>.&nbsp;</p> <h2>2. Fifteen page speed optimizations that sites ignore (at their own risk)</h2> <p><img class="blog-img" src="https://blog-img.speedcurve.com/img/530/15-optimizations.png?auto=format,compress&amp;fit=max&amp;w=2000" alt="" />Last summer, I analyzed the home pages of twenty leading websites and found that many sites are not taking advantage of&nbsp;a surprising number of optimization best practices &ndash; to the detriment of their performance metrics, and more importantly, to the detriment of their users and ultimately their business. Which of <a href="https://www.speedcurve.com/blog/15-neglected-page-speed-optimizations/">these neglected page speed optimizations</a> could you be missing out on?</p> <h2>1. Averages, medians, and percentiles</h2> <p><img class="blog-img" src="https://blog-img.speedcurve.com/img/530/averages-medians-percentiles.png?auto=format,compress&amp;fit=max&amp;w=2000" alt="" />This remains the most-read article in our entire library. It goes to show that there are a lot of people out there trying to understand their data. There are many ways to view aggregate web performance data, including 50th percentile, 75th percentile, 95th percentile, and average. What do they each mean, and which should you use? <a href="https://www.speedcurve.com/web-performance-guide/averages-medians-percentiles/">Find out here.</a></p> <h2>Looking ahead...</h2> <p>We love feedback! Did you find these articles helpful? Is there a topic or set of best practices you'd like us to write about? Let us know at <strong>support@speedcurve.com</strong>.</p> <p><a href="https://www.speedcurve.com/signup/?utm_source=blog&amp;utm_medium=blog&amp;utm_campaign=blog-trials"><img class="blog-img" src="https://blog-img.speedcurve.com/img/530/customer-logos-free-trial-banner.png?auto=format,compress&amp;fit=max&amp;w=2000" alt="" /></a></p> Thu, 19 Dec 2024 00:00:00 +1300 ICYMI: Some of our most exciting product updates of 2024! https://www.speedcurve.com/blog/2024-product-updates <p><span class="large-para">Every year feels like a big year here at SpeedCurve, and 2024 was no exception. Here's a recap of product highlights designed to make your performance monitoring even better and easier!</span></p> <p><img class="blog-img" src="https://blog-img.speedcurve.com/img/529/dog-high-five2.jpg?auto=format,compress&amp;fit=max&amp;w=2000" alt="" /></p> <p>Our biggest achievements this year have centred on making it easier for you to:</p> <ul> <li>Gather more meaningful real user monitoring (RUM) data</li> <li>Get actionable insights from Core Web Vitals</li> <li>Simplify your synthetic testing</li> <li>Get expert performance coaching when and how you need it</li> </ul> <p>Keep reading to learn more...</p><h2>INP replaced FID</h2> <p style="font-size: 16px;">In the spring, Google made it official: Interaction to Next Paint replaced First Input Delay as the responsiveness metric in&nbsp;<a href="https://www.speedcurve.com/web-performance-guide/get-started-with-core-web-vitals/">Core Web Vitals</a>&nbsp;(the trifecta of performance metrics that are a key ingredient in Google's search ranking algorithm).</p> <p style="font-size: 16px;"><img class="blog-img" src="https://blog-img.speedcurve.com/img/529/mobile-inp-conversions.png?auto=format,compress&amp;fit=max&amp;w=2000" alt="" /></p> <p style="text-align: center;"><sup><em>Correlation chart demonstrating that as INP gets worse, so does conversion rate for mobile users</em></sup></p> <p style="font-size: 16px;">We've been tracking INP since well before Google made the announcement, so SpeedCurve users didn't have to scramble to switch over to a new metric. Because we've been tracking INP for a while, we were able to share&nbsp;<a href="https://www.speedcurve.com/blog/check-core-web-vitals-inp/">some insights</a>&nbsp;that our users found helpful, such as:</p> <ul style="font-size: 16px;"> <li>While INP changes typically correlate to changes in metrics like bounce rate and conversion rate, the results vary from site to site</li> <li>Mobile INP has an even stronger correlation to bounce rate and conversions than desktop INP (see chart above)</li> <li>There's no consistent correlation with Google's thresholds for 'Good' and 'Poor'</li> </ul> <p>The main takeaway: While Google's recommended thresholds for 'Good' INP are a helpful starting point, you need to look at your own data, filter desktop and mobile traffic separately, and see how your INP results correlate to your own business and user engagement metrics. That's the most reliable way to ensure that you're creating meaningful performance goals for your pages.</p> <h2>RUM attribution and subparts for INP and LCP</h2> <p style="font-size: 16px;">Last May, we introduced&nbsp;<a href="https://www.speedcurve.com/blog/rum-attribution-subparts-interaction-to-next-paint/">more diagnostic detail for INP</a>, to match the diagnostic depth we offer for Largest Contentful Paint (LCP). We made it easier to identify which user interactions are responsible for INP issues. We also started collecting performance data for INP subparts (which we also collect for LCP subparts), so you can understand exactly where interaction time is being spent.</p> <p style="font-size: 16px;"><img class="blog-img" src="https://blog-img.speedcurve.com/img/529/rum-attribution.png?auto=format,compress&amp;fit=max&amp;w=2000" alt="" /></p> <p style="font-size: 16px;"><a href="https://www.speedcurve.com/blog/providing-better-attribution/">This detailed walkthrough</a>&nbsp;shows you how to make more meaningful and intuitive attributions for your RUM metrics (like INP and LCP) &ndash; which makes it much easier for you to zero in on your performance issues.</p> <h2>Re-vital-ized Vitals dashboard</h2> <p style="font-size: 17px;">Since we first launched the Vitals dashboard back in December of 2020, we've heard from many of you who want to expand the scope of the dashboard to include other meaningful metrics that are not technically considered Core Web Vitals.&nbsp;</p> <p style="font-size: 17px;">Back in September, <a href="https://www.speedcurve.com/blog/new-core-web-vitals-updates/">we gave the Vitals dashboard a complete refresh</a>. We made it easier to filter metrics across page groups and to easily see LCP and INP subparts. We also added Backend Time and First Contentful Paint (FCP) to the Vitals dashboard, and we continue to show Total Blocking Time (TBT).</p> <p style="font-size: 17px;"><img class="blog-img" src="https://blog-img.speedcurve.com/img/529/new-vitals-dashboard.png?auto=format,compress&amp;fit=max&amp;w=2000" alt="" /></p> <p style="font-size: 17px;">These three metrics tell us a lot about potential causes of a poor user experience:</p> <ul style="color: #1f1f1f;"> <li style="padding: 5px 0px;"><strong>Backend Time</strong>&nbsp;<a href="https://www.speedcurve.com/web-performance-guide/diagnose-time-to-first-byte/">isn't always a black box</a>. RUM can tell you where that time is being spent, whether its network related or due to CDN or origin issues.</li> <li style="padding: 5px 0px;"><strong>First Contentful Paint</strong>&nbsp;tells us when the page begins to render and effectively&nbsp;become consumable by an end user.</li> <li style="padding: 5px 0px;"><strong>Total Blocking Time</strong>&nbsp;gives us clues around CPU-intensive tasks that block rendering and interactivity with the page.</li> </ul> <p>Focusing on Largest Contentful Paint (LCP), <a href="https://www.speedcurve.com/blog/new-core-web-vitals-updates/">here's a walkthrough of how to leverage your Vitals dashboard</a> to find and fix issues with your Vitals.</p> <h2>New RUM filters</h2> <p>We delivered a plethora of new RUM filters this year...</p> <h3>Delivery type</h3> <p>The delivery type of a page indicates how it was delivered to the browser. There are now three possible values:</p> <ul> <li><strong>Cache</strong> &ndash; Page was delivered from the browser's cache, which means the browser did not make a network request for that page</li> <li><strong>Navigational prefetch</strong> &ndash; Page came from the in-memory cache, via the Speculation Rules API</li> <li><strong>Other</strong> &ndash; This delivery type is when none of the other delivery types applies</li> </ul> <p>Note that delivery type is only supported in Chromium-based browsers.</p> <h3>Navigation type</h3> <p>Not all navigations are created equal. We released a filter in RUM that allows you to explore navigation types. You can find navigation types in the filters of your RUM and Favorites dashboards.</p> <p>These filters allow you to track:</p> <ul> <li><strong>Navigation</strong> &ndash; Full-page navigation&nbsp;</li> <li><strong>Reload</strong> &ndash; Page is reloaded from the browser history</li> <li><strong>Back-forward navigation</strong> &ndash; Page navigation using back/forward navigation (also known as bfcache navigation) controls</li> <li><strong>Other</strong> &ndash; All other navigations</li> </ul> <p><img class="blog-img" src="https://blog-img.speedcurve.com/img/529/navigation-types.png?auto=format,compress&amp;fit=max&amp;w=2000" alt="" /></p> <h3>Page attribute</h3> <p>Another useful filter that we added is for something we refer to as page attributes. This goes a step further in explaining the different types of navigations &ndash; both visible and hidden from the end user.</p> <p>Page attributes are extremely useful when looking at pages that have unique performance characteristics, such as:</p> <ul> <li><strong>Page was a soft navigatio</strong>n &ndash; When implementing RUM for a SPA, you can use this attribute to compare initial page loads/hard navigations to SPA/soft navigations.</li> <li><strong>Page visibility was hidden</strong>&nbsp;&ndash; For pages that are loaded in a hidden state, such as when you open a link in a background tab for viewing later, the performance can vary greatly given the browsers ability to mitigate resource consumption in an effort to preserve the user experience.&nbsp;</li> <li><strong>Page was prerendered</strong> &ndash; Prerendering can happen automagically in the browser or by using the Speculation Rules API . When this occurs, pages that are activated appear to load instantaneously and have unique characteristics compared to other types of navigations. For example, in SpeedCurve, prerendered pages will have a value of '0' for most metrics.</li> <li><strong>Page was restored from back-forward cache</strong>&nbsp;&ndash; The bfcache essentially stores the full page in memory when navigating away from the page. This browser optimization has the effect of instantaneous page loads when a user is navigating back (or forward) to a previously viewed page.&nbsp;</li> </ul> <p>These filters are super helpful for diagnosing all kinds of pain points. For example, here's <a href="https://www.speedcurve.com/blog/bfcache-prerendering/">how to use these filters to diagnose rendering issues with the bfcache</a>.&nbsp;</p> <h3>Geographic region</h3> <p>We now record users' geographic region, also known as country subdivision. This enables you to dive deeper into how your users are spread around the world. For example, you can filter Core Web Vitals by region, or find regions with the most traffic.</p> <p><img class="blog-img" src="https://blog-img.speedcurve.com/img/529/geographic.png?auto=format,compress&amp;fit=max&amp;w=2000" alt="" /></p> <h2>Improved how we collect RUM data</h2> <p style="font-size: 16px;">Last summer, while we were adding more diagnostics for Core Web Vitals, we re-implemented our RUM pipeline using Fastly's edge compute.&nbsp;Now&nbsp;<a href="https://www.speedcurve.com/blog/improving-how-we-collect-rum-data/">performance metrics are captured for longer</a>&nbsp;and beacons are sent at the earliest of 60 seconds after page load starts, or when the visitor leaves the page (if that happens sooner).</p> <p style="font-size: 16px;">Sending the beacon later has a number of benefits, both now and down the road:&nbsp;</p> <ul style="font-size: 16px;"> <li>Improves the accuracy of the metrics we capture for you&nbsp;</li> <li>Allows us to simplify our RUM processing pipeline</li> <li>Made it easier to implement attribution for INP and LCP</li> <li>Smooths the way for adding other features we have planned for the future</li> </ul> <p style="font-size: 16px;">That sounds like a win for everyone!&nbsp;</p> <h2>13 months of RUM</h2> <p style="font-size: 16px;">Not only have we improved the quality of our RUM data, we've also increased the quantity. Previously, your Synthetic data was retained for 13 months and your RUM data was retained for 3 months. We've expanded RUM data retention to match Synthetic.</p> <p style="font-size: 16px;">What does this longer retention period let you do? Among other things:</p> <ul style="font-size: 16px;"> <li>See year-over-year changes in your metrics, including&nbsp;<a href="https://www.speedcurve.com/web-performance-guide/get-started-with-core-web-vitals/">Core Web Vitals</a></li> <li><a href="https://support.speedcurve.com/docs/bookmark-and-compare-tests">Bookmark and compare RUM sessions</a>&nbsp;over longer time periods</li> <li><a href="https://support.speedcurve.com/docs/trend-metrics-compare-time-periods">Trend metrics and compare time periods</a></li> </ul> <h2>Unified dashboard filters</h2> <p>SpeedCurve is now eleven years old. One of the things we love about our product is how it's evolved over time. However, in some cases, parts of our UI didn't come along for the ride. This was the case with our dashboard filters. This has been a nagging 'to-do' that we've finally checked off our list, courtesy of our awesome dev team.&nbsp;</p> <p><img class="blog-img" src="https://blog-img.speedcurve.com/img/529/unified-filters.png?auto=format,compress&amp;fit=max&amp;w=2000" alt="" /></p> <p>You'll find that filters now work the same way across ALL of your dashboards.&nbsp;As an extra bonus, you'll find more options available on most dashboards, including Favorites.</p> <h2>On-demand synthetic testing</h2> <p>By popular demand, we've made some important changes to on-demand testing:</p> <ul> <li><strong>Updated 'Test Now' options</strong> &ndash; These include site testing and custom URL (adhoc) testing.</li> <li><strong>View your tests</strong> &ndash; You can find your test(s) in the Synthetic Tests dashboard, where you'll be routed after starting them (unless tests are grouped as a deployment). Clicking on any of the tests will take you to the Test Details dashboard.</li> <li><strong>Group on-demand tests as a deploy</strong> &ndash; When you select 'Group tests as a Deploy', you have the option to add a name and description for the deploy. The deploy will be marked on your charts and the test(s) will be found in the Deployments dashboard, where you'll be routed after they are submitted.</li> </ul> <p><img class="blog-img" src="https://blog-img.speedcurve.com/img/529/on-demand-test.png?auto=format,compress&amp;fit=max&amp;w=2000" alt="" /></p> <p>See an in-depth walkthrough: <a href="https://support.speedcurve.com/docs/ondemand-site-testing">How to test a site on demand</a></p> <h2>Evergreen browser test profiles</h2> <p>We've introduced <a href="https://support.speedcurve.com/changelog/synthetic-new-browser-test-profiles">"evergreen" browsers</a> to your Synthetic test settings.&nbsp;These browser profiles don't reference specific emulated hardware or a particular browser. They're intended to be a great place to start your web performance testing and provide long-lived profiles with names that don't age. We will periodically update these profiles as web performance trends change.</p> <p><img class="blog-img" src="https://blog-img.speedcurve.com/img/529/evergreen-browsers.png?auto=format,compress&amp;fit=max&amp;w=2000" alt="" /></p> <p>If you haven't already done this, we encourage you to switch your existing testing to these new browsers. You can also recreate any of the old browser profiles if you need them by creating a <a href="https://support.speedcurve.com/docs/custom-browsers">custom browser profile</a> and referencing the old <a href="https://support.speedcurve.com/docs/browsers-and-devices#emulated-devices">emulated devices</a>.</p> <h2>We healed 30+ paper cuts!</h2> <p>We all love big showy features, and this year we've released our share of those. But sometimes it's the small stuff that can make a big difference.</p> <p><img class="blog-img" src="https://blog-img.speedcurve.com/img/529/user-happiness.png?auto=format,compress&amp;fit=max&amp;w=2000" alt="" /></p> <p>A few months ago, we looked at our backlog of smaller requests from our customers &ndash; which we labelled "paper cuts" &ndash; and decided to dedicate time to tackle them.</p> <p>These include:</p> <ul> <li>Exciting new chart types for Core Web Vitals and <a href="https://support.speedcurve.com/docs/user-happiness">User Happiness</a> (shown above)</li> <li>Usability improvements</li> <li>Create a set of tests for one or multiple sites or custom URLs</li> <li>Test directly from your site settings when saving changes</li> <li>Better messaging for test failures</li> <li><a href="https://www.speedcurve.com/blog/paper-cuts/">And more!</a></li> </ul> <p>We hope these updates have made your performance and UX monitoring easier!&nbsp;</p> <h2>Expanded our coaching services</h2> <p>Since we ramped up&nbsp;<a href="https://www.speedcurve.com/features/consulting/">our coaching services</a>, these are the most common goals and concerns we've heard when we talk to people:</p> <ul> <li>Staying compliant with Google's thresholds for Core Web Vitals</li> <li>Minimizing and fighting regressions</li> <li>Improving search rank, conversions, and bounce rate</li> </ul> <p>We're super proud of our recent coaching successes, including:</p> <ul> <li><strong>Decreased Largest Contentful Paint</strong> on product images from over 3 seconds to under 2 seconds for a major US retailer</li> <li><strong>Reduced Interaction to Next Paint</strong> from over 500ms to under 200ms for a national French news site</li> <li><strong>Improved Cumulative Layout Shift</strong> so 97% of visitors had a good experience for a global hardware and IT services company</li> </ul> <p>How can we help you?&nbsp;<a href="https://www.speedcurve.com/about/">Our team</a>&nbsp;includes some of the most experienced people in web performance &ndash; Steve Souders, Tammy Everts, me, Andy Davies, and Mark Zeman (from left to right below). We've started global conferences, written books, taught courses, run design agencies, and improved user engagement and conversion rates for all the big brands.</p> <p><img class="blog-img" src="https://blog-img.speedcurve.com/img/529/consulting-team-2.png?auto=format,compress&amp;fit=max&amp;w=2000" alt="" /></p> <p>We care about making the web faster, and we want to help you.&nbsp;Contact us at <strong>support@speedcurve.com</strong> to learn how we can help you meet your performance goals in 2025.</p> <h2>Looking ahead to 2025</h2> <p>We love our industry's current trajectory. Talking to customers, browser vendors, and other monitoring providers, it feels like we're all aligned on some of the same goals:</p> <ul> <li>Get even more nuanced, actionable data from RUM</li> <li>Think outside the Core Web Vitals box</li> <li>Make our tools easy for a broader audience to use (We see you, marketing, SEO, and product management folks!)</li> <li><a href="https://www.speedcurve.com/blog/core-web-vitals-in-safari/">Continue the quest for iOS support of modern metrics</a>&nbsp;</li> </ul> <p>As always, we love your thoughts and feedback. What do you need in the year ahead? What are your biggest performance challenges? What are you most excited about? Send us a note at <strong>support@speedcurve.com</strong>!</p> <p><a href="https://www.speedcurve.com/signup/?utm_source=blog&amp;utm_medium=blog&amp;utm_campaign=blog-trials"><img class="blog-img" src="https://blog-img.speedcurve.com/img/529/customer-logos-free-trial-banner.png?auto=format,compress&amp;fit=max&amp;w=2000" alt="" /></a></p> Tue, 17 Dec 2024 00:00:00 +1300 Performance Hero: Pat Meenan https://www.speedcurve.com/blog/web-performance-hero-pat-meenan <p><span class="large-para">This month, we celebrate everything that OG performance hero Pat Meenan has done &ndash; and continues to do &ndash; for the web performance community.</span></p> <p><img class="blog-img" src="https://blog-img.speedcurve.com/img/531/pat.png?auto=format,compress&amp;fit=max&amp;w=2000" alt="" /></p> <p>When we started the Performance Hero series earlier this year, we had an idea of the types of folks in our community we wanted to acknowledge:</p> <ul> <li>People who are making a difference in web performance</li> <li>People who are humble</li> <li>People who give without expectation</li> <li>People who don't necessarily crave the spotlight</li> </ul> <p>When looking at these attributes &ndash; for a lot of us who have been around this space for more years than we care to mention &ndash; it's hard not to think about everyone's favorite web performance OG: Pat Meenan. This month, we celebrate all that Pat has done and continues to do for web performance.&nbsp;</p><p>Pat, who is currently a software engineer at Google, is the definition of humble. When we reached out to him about this post, he was quick to point out others who he felt had made a bigger impact in 2024. We look forward to celebrating them as we continue recognizing performance heroes in 2025, but he doesn't get a pass on recognition this time around!</p> <p>Pat has contributed so much to the web, and to web performance specifically.</p> <p>Most notably, way back in 2008, Pat built a little open-source tooI called <a href="https://www.webpagetest.org/">WebPageTest</a>&nbsp;(now owned by Catchpoint) that has served as the biggest arrow in our collective web performance quiver for years. Some people might not know that Pat ran the infrastructure out of his house for more than a decade. When I learned this, I remember being amazed that someone would create something so helpful and so powerful, just to give it away to users for free.</p> <p>WebPageTest been foundational for many of us in understanding performance. It was the catalyst for SpeedCurve when our founder Mark Zeman built the first version of our synthetic tool way back in 2012, and it served as our backbone during our early years.&nbsp;</p> <p>However, Pat's contributions didn't stop with WebPageTest. He's a fan favorite on the web performance speaker circuit, a frequent contributor to Chrome (and the web as a whole), and after all of these years he remains one of the biggest cheerleaders for a faster web.</p> <p>I caught up with Pat over email to fire a few questions at him. His responses didn't disappoint.</p> <p><strong>What are you working on now and/or what are you most excited about?</strong></p> <p>"I'm working on bringing <a href="https://datatracker.ietf.org/doc/draft-ietf-httpbis-compression-dictionary/">compression dictionaries</a> to the web. [Watch Pat's&nbsp;<a href="https://www.youtube.com/watch?v=Gt0H2DxdAPY">2023 talk at performance.now</a>&nbsp;for background.] I think it will radically change how we serve content and look at MPA versus SPA, bringing a lot of the benefits of SPAs (delivering just the changed content) to document navigations and reducing the performance cost of sending code updates."<br /><br />Pat is not kidding. You can see the potential benefits of using compression dictionaries on some very popular resources <a href="https://github.com/WICG/compression-dictionary-transport/blob/main/examples.md#compression-dictionary-transport-examples">here</a>.</p> <p><img class="blog-img" src="https://blog-img.speedcurve.com/img/531/compdictresults.gif?auto=format,compress&amp;fit=max&amp;w=2000" alt="Chart showing the massive impact of using Compression Dictionaries compared to other forms of compression across popular resources." /></p> <p><strong>What do you see as the biggest performance challenges we are up against in 2025?</strong></p> <p>"Losing focus. We got a decent boost from the Core Web Vitals efforts, but performance is a never-ending grind. If you take your eye off the ball, it tends to regress pretty badly. Performance still isn't part of the core DNA for most product teams, and even some of the ones where it was have shifted focus."</p> <p>(Amen, brother. Getting fast is hard, <a href="https://www.speedcurve.com/web-performance-guide/complete-guide-performance-budgets/">staying fast is harder</a>.)</p> <p><strong>What do you see as your biggest performance win?</strong></p> <p>"Of all time, it was probably indirect by getting people to actually look at web performance waterfalls and videos and understand how browsers and their code interact."</p> <p><img class="blog-img" src="https://www.speedcurve.com/img/gif/wptvideo.gif" alt="Video showing websites loading at different speeds." /></p> <p>Getting stakeholders engaged in web performance remains one of our biggest challenges. It's been a challenge since I can remember. Pat's gift to the web performance community &ndash; WebPageTest &ndash; has taught us how to read a waterfall, how to visualize performance through the use of filmstrips, and how to show your boss how much slower or faster you are than your competitors using video.&nbsp;</p> <p>"More recently and directly, getting fetchpriority adopted. I often refer to it as an 'easy' button for some quick performance gains."<br /><em><br /></em>If you are looking to optimize LCP or other important resources, <a href="https://web.dev/articles/fetch-priority">using fetchpriority</a> is one of Pat's cheat codes for web performance.&nbsp;</p> <p><strong>If you could wave a magic wand, what is the one performance best practice you'd apply that would have the most impact on user experience?</strong></p> <p>"Eliminating JavaScript from the critical path (rendering and interaction). If you can give a browser everything it needs in the HTML, and if the HTML is served quickly, things will usually default to being fast. When logic needs to run on the client before the browser can take action, it is usually slow."</p> <p>So true. As Ilya Grigorik pointed out in <a href="https://www.igvita.com/slides/2013/fluent-perfcourse.pdf">Building Faster Websites</a>, optimizing the critical path is key to improving the user experience. JavaScript remains the biggest obstacle for loading performance and responsiveness.</p> <p><img class="blog-img" src="https://blog-img.speedcurve.com/img/531/cricticalpath.gif?auto=format,compress&amp;fit=max&amp;w=2000" alt="Diagram showing how web pages are rendered" /></p> <p>Thank you, Pat! The impact you've had and continue to have has meant a great deal to this community. You truly are the textbook definition of a performance hero.</p> <p><a href="https://www.speedcurve.com/signup/?utm_source=blog&amp;utm_medium=blog&amp;utm_campaign=blog-trials"><img class="blog-img" src="https://blog-img.speedcurve.com/img/531/customer-logos-free-trial-banner.png?auto=format,compress&amp;fit=max&amp;w=2000" alt="" /></a></p> Mon, 16 Dec 2024 00:00:00 +1300 A Holiday Wish: Core Web Vitals in Safari https://www.speedcurve.com/blog/core-web-vitals-in-safari <p><span class="large-para">Did you know that key performance metrics &ndash; like Core Web Vitals &ndash; aren't supported in Safari? If that's news to you, you're not alone! Here's why that is... and what we and the rest of the web performance community are doing to fix it.</span></p> <p><img class="blog-img" src="https://blog-img.speedcurve.com/img/526/stubbornella.gif?auto=format,compress&amp;fit=max&amp;w=2000" alt="Bluesky post from Nicole Sullivan aka Stubbornella asking the community if they want CWV for Safari." /></p> <p>Somebody pinch me. Seeing <a href="https://bsky.app/profile/nicolesullivan.bsky.social/post/3lbduwl3xqc26">this post</a> and the resulting thread gives me great hope.</p> <p><a href="https://bsky.app/profile/nicolesullivan.bsky.social">Nicole Sullivan</a> (aka Stubbornella, WebKit Engineering Manager at Apple, and OG web performance evangelist) isn't making promises or dangling a carrot. Nonetheless, it's evidence of the willingness for some public discussion on a topic that's been exhaustively discussed in our community for years. Nicole's post has gotten some great responses from many leaders in our community, hopefully shaping a strong use case for future WebKit support for Core Web Vitals.</p> <p>(If you're new to performance, <a href="https://www.speedcurve.com/web-performance-guide/get-started-with-core-web-vitals/">Core Web Vitals</a> is a set of three metrics &ndash; Largest Contentful Paint, Cumulative Layout Shift, and Interaction to Next Paint &ndash; that are intended to measure the rendering speed, interactivity, and visual stability of web pages.)<br /><br />In this post, I'm going to highlight some of the discussion around the topic of Core Web Vitals and Safari, which was a major theme coming out of the recent web performance marathon in Amsterdam that included WebPerf Days, performance.sync(), and the main event, <a href="https://perfnow.nl/">performance.now()</a>.</p><h2>The problem</h2> <p>We've made significant headway with Core Web Vitals, no question about it. Unfortunately, when it comes to measuring real users, the playing field is not equal and we are dealing with an ENORMOUS blind spot. With <a href="https://www.speedcurve.com/web-performance-guide/glossary-of-web-performance-metrics/">no WebKit support for Core Web Vitals</a>, we have a serious lack of information for Safari and Mobile Safari.</p> <p><img class="blog-img" src="https://blog-img.speedcurve.com/img/526/caniusecwv.gif?auto=format,compress&amp;fit=max&amp;w=2000" alt="Diagrams from caniuse site showing lack of support for CWV from Safari" /></p> <p>In the opening keynote for performance.now(), <a href="https://bsky.app/profile/tammyeverts.com">Tammy Everts</a> (AKA the Britney Spears of Nelson, BC, World's Best Performance Mom, and Chief Experience Officer of SpeedCurve) summarized the performance landscape, helping to set the stage for the conference and many hallway discussions.</p> <p><img class="blog-img" src="https://blog-img.speedcurve.com/img/526/tammy.gif?auto=format,compress&amp;fit=max&amp;w=2000" alt="Tammy Everts presenting onstage at perfnow conference" /></p> <p>As Tammy pointed out after sharing a <a href="https://speakerdeck.com/tammyeverts/the-web-performance-landscape-in-2024-perfnow-2024">wealth of stats about global internet usage</a>, there are major gaps between who we're building our sites and apps for and how we monitor those sites and apps:</p> <p><img class="blog-img" src="https://blog-img.speedcurve.com/img/526/perfnow-slide.png?auto=format,compress&amp;fit=max&amp;w=2000" alt="" /></p> <p>As <a href="https://bsky.app/profile/infrequently.org">Alex Russell</a> highlighted in his talk later that same day, performance inequality continues to grow between iPhone users (the haves) and Android users (the have-nots). If you haven't read it yet, make sure to check out his series on the <a href="https://infrequently.org/series/performance-inequality/">Performance Inequality Gap.</a>&nbsp;</p> <p>The premise of Alex's talk continued with the theme that we need to do more if we want to save the web, especially on mobile. As a platform, mobile is getting killed by native apps. The inability to measure performance consistently across browsers perpetuates this issue.<br /><br /><img class="blog-img" src="https://blog-img.speedcurve.com/img/526/browservapp.gif?auto=format,compress&amp;fit=max&amp;w=2000" alt="Column chart showing that time spent on apps vs. web on mobile is growing while web is flat year over year" /></p> <h2>Interlude: What we see in our&nbsp;data</h2> <p>iPhones are responsible for the majority of traffic for US-based sites, which means they're the primary source of revenue for many online retailers. This is not the case in other countries, such as India, where usage is completely the opposite.</p> <p><img class="blog-img" src="https://blog-img.speedcurve.com/img/526/usvinbrowserspercent.gif?auto=format,compress&amp;fit=max&amp;w=2000" alt="Column chart showing browser utilization between India and USA" /></p> <p style="text-align: center;"><em>SpeedCurve RUM data from November 2024 - Top 5 browsers by Country</em></p> <p>So, what's the problem? If we are optimizing based on Core Web Vitals, aren't we optimizing for the lower-end experience? Shouldn't that translate to better performance on premium devices?</p> <p>Not exactly.</p> <p>But let's be honest. We don't know. And we can't pretend to.</p> <p>On one hand, it's fair to think that a phone with more processing power is going to be faster. But when you've been building JavaScript-heavy applications for high-end devices, you might expect that there is a great deal of uncertainty.</p> <p><img class="blog-img" src="https://blog-img.speedcurve.com/img/526/katiepost.gif?auto=format,compress&amp;fit=max&amp;w=2000" alt="Bluesky post from Katie Sylor-Miller mentioning issues with performance in in-app browsers." /></p> <p>Chrome and Safari use different rendering engines and different (or non-overlapping) APIs for optimization. And as <a href="https://bsky.app/profile/ksylor.bsky.social">Katie Sylor-Miller</a> recently pointed out, in-app browsers (such as Facebook and Instagram) are notorious for adding performance overhead to the user experience.&nbsp;</p> <h2>Core Web Vitals aren't the only things missing from WebKit</h2> <p><a href="https://bsky.app/profile/tkadlec.bsky.social">Tim Kadlec</a>&nbsp;and <a href="https://bsky.app/profile/anniesullie.com">Annie Sullivan</a> both called this out in their opening and closing keynotes on day two of performance.now().</p> <p><img class="blog-img" src="https://blog-img.speedcurve.com/img/526/time-core-web-vitals-perfnow.jpg?auto=format,compress&amp;fit=max&amp;w=2000" alt="" /></p> <p>As Tim pointed out in his talk, we can't expect that these three metrics are the end game of performance. We have to look at them as a starting point.</p> <p>And as Annie mentioned at the end of the day, we need wider support for <a href="https://www.speedcurve.com/blog/element-timing-one-true-metric/">Element Timing</a> and Container Timing.</p> <p><img class="blog-img" src="https://blog-img.speedcurve.com/img/526/annieperfnow.gif?auto=format,compress&amp;fit=max&amp;w=2000" alt="Women on stage presenting at a performance conference" /></p> <h2>There is hope!</h2> <p><span style="color: #1f1f1f; font-size: 16px;">This community is amazing, and together we're capable of making a difference. While it's often tempting in today's climate to throw up your hands and complain, those who really want to make a difference, can. Here are some (very) recent examples.</span></p> <h3>Interop project</h3> <p><a href="https://bsky.app/profile/twnsnd.com">Ryan Townsend</a> recently posted a proposal to get Core Web Vitals into Interop 2025. While this may not make it (yet), it's creating good visibility. <a href="https://github.com/web-platform-tests/interop/issues/894">Learn more and upvote.</a></p> <h3>WebPerfDays</h3> <p>The WebPerfDays un-conference is back with a vengeance. It was awesome getting in a room to discuss a broad number of agenda items the day before <a href="https://perfnow.nl/">performance.now()</a>. Our first breakout session was around "GSD in WebKit". We spent the time brainstorming alternative means of getting the features we want (such as Core Web Vitals, Element Timing, Container Timing, etc.) implemented in WebKit.</p> <p style="font-size: 16px;"><img class="blog-img" src="https://blog-img.speedcurve.com/img/526/webperfdays.gif?auto=format,compress&amp;fit=max&amp;w=2000" alt="graph plus sprinting deer equals piggy bank " /><br />The first action, to be tackled by the W3C RUM Community Group (discussed below), was to put together a list of position statements for Core Web Vitals, Event Timing, and Element Timing for ALL browser vendors. Just having a decisive list of where everyone stands should go a long way and help us understand where to focus.</p> <p style="font-size: 16px;">Is responsiveness even an issue in WebKit? The group's hypothesis was: yes, it is. This was based on work that has been done to correlate user behavior with a polyfill for First Input Delay (FID), as well as indications that <a href="https://nicj.net/measuring-continuity/">'rage clicks'</a> appear to be more frequent on iOS (among other indicators).<br /><br />The second part of the discussion focused more on how we get this done. We explored three main areas:</p> <ol style="font-size: 16px;"> <li><strong>Funding</strong>&nbsp;&ndash;&nbsp;<em>Should we pass the hat and convince our bosses to chip in and pay Igalia to implement features?</em>&nbsp;<span style="color: #1f1f1f;">On the positive side, there is real interest in a sponsored initiative to fund WebKit development. While the collection plate was empty at the end of the conference, we have some actions for the group to follow up on.</span></li> <li><strong>Coercion</strong>&nbsp;&ndash;&nbsp;<em>Can we make a strong case to Apple support our efforts?</em>&nbsp;<span style="color: #1f1f1f;">Your ears must have been burning, Nicole.&nbsp;Your name was raised as a potential point of contact who we know cares deeply about performance. :)</span></li> <li><strong>Shim it</strong>&nbsp;&ndash;&nbsp;<em>Can we polyfill for event timing?</em>&nbsp;While not our favorite option due to the complexity, maintenance, and potential overhead, it really can't be overlooked if options 1 and 2 don't work out or if we need an early prototype before being implemented in WebKit.</li> </ol> <h3>W3C RUM Community Group</h3> <p>To tackle issues like Core Web Vitals support in Safari, it was announced on stage at performance.now() that a new community group has been formed within the W3C, called the RUM Community Group. I'm so excited and humbled to be co-chairing this group with&nbsp;<a href="https://bsky.app/profile/nicj.net">Nic Jansma</a>&nbsp;(Akamai) and&nbsp;<a href="https://bsky.app/profile/karlijnlowik.bsky.social">Karlijn L&ouml;wik</a>&nbsp;(RUMvision). It says a lot to the positive energy of our community that folks from different RUM providers are coming together in this effort!</p> <p>We had a terrific response and have hit the ground running. If you are a RUM provider, RUM maintainer, RUM user, browser vendor, or just curious, we'd love to have you! <a href="https://www.w3.org/community/rumcg/">Learn more here.</a>&nbsp;</p> <p><img class="blog-img" src="https://blog-img.speedcurve.com/img/526/w3crumcg.gif?auto=format,compress&amp;fit=max&amp;w=2000" alt="Slide announcing the formation of the W3C RUM Community Group and a call for members. Learn more at https://w3.org/community/rumcg" /></p> <h2>Performance is everyone's business</h2> <p>Our goal at SpeedCurve is to help you understand how ALL of your users experience your site &ndash; not just users on specific devices and browsers. With hope and effort, we'll get there!</p> <p><a href="https://www.speedcurve.com/signup/?utm_source=blog&amp;utm_medium=blog&amp;utm_campaign=blog-trials"><img class="blog-img" src="https://blog-img.speedcurve.com/img/526/customer-logos-free-trial-banner.png?auto=format,compress&amp;fit=max&amp;w=2000" alt="" /></a></p> Tue, 26 Nov 2024 00:00:00 +1300 2024 Holiday Readiness Checklist (Page Speed Edition!) https://www.speedcurve.com/blog/2024-holiday-readiness-checklist-page-speed <p><span style="font-size: 22px;">Delivering a great user experience throughout the holiday season is a marathon, not a sprint. Here are ten things you can do to make sure your site is fast and available every day, not just Black Friday.&nbsp;</span></p> <p><img class="blog-img" src="https://blog-img.speedcurve.com/img/523/holiday-readiness.jpg?auto=format,compress&amp;fit=max&amp;w=2000" alt="" /></p> <p>Your design and development teams are working hard to attract users and turn browsers into buyers, with strategies like:</p> <ul> <li>High-resolution images and videos</li> <li>Geo-targeted campaigns and content</li> <li>Third-party tags for audience analytics and retargeting</li> </ul> <p>However, all those strategies can take a toll on the speed and user experience of your pages &ndash; and each introduces the risk of introducing single points of failure (SPoFs).&nbsp;</p> <p><strong>Below we've curated ten steps for making your users happy throughout the holidays (and beyond).</strong> If you're scrambling to optimize your site before Black Friday, you still have time to implement some or all of these best practices. And if you're already close to being ready for your holiday code freeze, you can use this as a checklist to validate that you've ticked all the boxes on your performance to-do list.&nbsp;</p><h1>Optimize your monitoring</h1> <p>By now, you're most likely getting ready to head into a holiday code freeze/thaw/chill &ndash; which means you may not have a lot of opportunities to make big changes or optimizations. Here are a few things you can tackle right now that don't necessarily require higher-level approval or extra costs.</p> <h2><strong>1. Use both synthetic and RUM</strong></h2> <p><strong>Explore free tools.</strong>&nbsp;Hopefully this item is easy to check off. If you don't have a monitoring solution in place for the holidays, there are a lot of free trials out there you can use &ndash; including <a href="https://www.speedcurve.com/signup/">ours</a>! (Not sure if you need synthetic <em>or</em> real user monitoring? <a href="https://www.speedcurve.com/web-performance-guide/synthetic-vs-real-user-monitoring/">You probably need both.</a>)</p> <p><strong>Work around RUM deployment challenges.</strong>&nbsp;Real user monitoring (RUM) can sometimes be harder to implement on short notice compared to synthetic tools. <a href="https://support.speedcurve.com/docs/tag-managers">Use a tag manager</a> (e.g., Google Tag Manager) or A/B testing tool if you need to circumvent code changes.</p> <p><strong>Use CrUX in a pinch.</strong>&nbsp;If you're still out of luck in the RUM department, you can always look at field data from <a href="https://developer.chrome.com/docs/crux">Google CrUX</a> (Chrome User Experience Report). <em>Caveat: CrUX data isn't true RUM. It's collected from Chrome sessions only, and only for certain types of Chrome users.&nbsp;It also filters out origins and pages that don't meet specific eligibility requirements. But CrUX data is better than no RUM data.</em></p> <h2><strong>2. Make sure you&rsquo;re tracking the right metrics</strong></h2> <p><strong>Think beyond Core Web Vitals.</strong>&nbsp;While <a href="https://www.speedcurve.com/web-performance-guide/get-started-with-core-web-vitals/">Core Web Vitals</a> are typically a big focus for retailers because they have a direct impact on search rank, they are not the only indicators of a good user experience. In fact, for a lot of customers, iOS traffic &ndash; which Vitals can't track &ndash; is the most popular and has higher conversion rates. With so much of your revenue at stake, relying only on Core Web Vitals creates a huge blind spot.</p> <p><strong>Consider adding custom metrics.&nbsp;</strong>If you need to track iOS traffic and other clients,&nbsp;<a href="https://support.speedcurve.com/docs/custom-data">custom metrics</a> let you measure what is most important to your business.&nbsp; <br /><br /><strong>Don't forget about backend time.</strong> <a href="https://www.speedcurve.com/web-performance-guide/diagnose-time-to-first-byte/">Time to First Byte (TTFB) can be a page speed killer</a>, especially during peak traffic.</p> <p><img class="blog-img" src="https://blog-img.speedcurve.com/img/523/ttfb.jpg?auto=format,compress&amp;fit=max&amp;w=2000" alt="" /></p> <p><strong>Track your CDN.</strong> If you use a content delivery network (CDN), then you need to know that CDN performance is critical during the holiday season. Did you know that you can <a href="https://www.speedcurve.com/blog/server-timing-time-to-first-byte/">track the health of your CDN</a> in RUM using server-timing headers? Capture cache hits/misses, time spent at the edge, origin, and even round-trip time (RTT) for most major CDN providers.&nbsp;</p> <h2><strong>3. Manage third-party scripts</strong></h2> <p>The average web page has 35+ third-party scripts. The average blocking time for the 10 most popular third parties is 1.4 seconds. Third parties can hurt important metrics, like Core Web Vitals. More important, slow or blocking third parties can hurt how users experience your site, which in turn can hurt your user engagement and business metrics.</p> <p><img class="blog-img" src="https://blog-img.speedcurve.com/img/523/third-parties-no-bckgrnd.png?auto=format,compress&amp;fit=max&amp;w=2000" alt="" /><strong>Audit the third-party scripts on your pages.</strong> I'm always amazed at how many sites have third-party tags that are no longer needed or in use. Remove unwanted scripts.</p> <p><strong>Defer or load asynchronously.</strong> Avoid single points of failure by deferring non-essential scripts or loading them asynchronously.</p> <p><strong>Set up tracking and performance budgets.</strong> Focus on third parties that are business critical or, more important, critical for the user experience. (More on performance budgets and alerts in section 6, below.)</p> <p><strong>Know your SLAs with third-party vendors.</strong> If possible, ask vendors about their release schedule during the holidays to avoid unpleasant surprises.&nbsp;</p> <p><strong>Put together a playbook for third-party failures.</strong> This is a simple guide that includes a point of contact for each script, kill switches, or procedures to remove scripts using a tag manager.</p> <p>Dig deeper into these tips and more with this <a href="https://www.speedcurve.com/web-performance-guide/third-party-web-performance/">guide to monitoring and optimizing third parties</a>.</p> <h2><strong>4. Make sure you&rsquo;re tracking the right pages</strong></h2> <p>For both RUM and synthetic monitoring, it's important that you are both measuring and classifying pages correctly. This is especially true as you get closer to holidays, when the performance of a product page can make or break a user's purchase decision.</p> <p><strong>Segment your pages in RUM.</strong> <a href="https://support.speedcurve.com/docs/rum-page-labels">Add RUM page labels that segment your pages</a> in a way that makes sense for your business and prevents confusion where you have too many unique values when trying to dissect performance issues.</p> <p><strong>Label your pages in synthetic.</strong> <a href="https://support.speedcurve.com/docs/synthetic-page-labels">Make sure your labels make sense</a>, but more important, ensure that the URLs you are monitoring are still valid. For example, last year's product link may no longer be relevant for a PDP page.</p> <p><strong>Don't forget to test your campaign landing pages... ideally <em>before</em> the promotion begins.</strong>&nbsp;Campaign landing pages are often outsourced to agencies that cannot (or do not) test with performance in mind. As a result, campaign pages can be the slowest pages on your site. Ensure you're monitoring current campaign landing pages early, before the promotion starts, in order to identify any performance gotchas during the main event.</p> <h2><strong>5. Establish a connection between metrics and business outcomes</strong></h2> <p><strong>Set a baseline for understanding the impact of performance on your customers (and your business metrics).</strong> Using the metrics you&rsquo;ve already identified, <a href="https://support.speedcurve.com/docs/create-correlation-charts">create correlation charts</a>&nbsp;(like the one below) that show you the relationship between your performance metrics and business metrics, such as conversion rate. This will help you understand what your performance budgets should be as you move into peak.&nbsp;</p> <p><img class="blog-img" src="https://blog-img.speedcurve.com/img/523/worlds-best-correlation-chart.gif?auto=format,compress&amp;fit=max&amp;w=2000" alt="" /></p> <p><strong>Benchmark your site against your competitors.</strong> Setting up a <a href="https://support.speedcurve.com/docs/competitive-benchmarking">competitive benchmarking dashboard</a>&nbsp;&ndash; which is easy to do with synthetic monitoring &ndash; is an effective way to see who's delivering a good UX and who isn't.</p> <p><img class="blog-img" src="https://blog-img.speedcurve.com/img/523/benchmarks.png?auto=format,compress&amp;fit=max&amp;w=2000" alt="" /></p> <p>Check out <a href="https://app.speedcurve.com/benchmarks/">these industry benchmarks</a> for a current snapshot of how leading sites perform across a number of industries, including retail, travel, media, and more.</p> <h2><strong>6. Set up reporting early</strong></h2> <p><strong>Set up reports.</strong> Be proactive in reporting to stakeholders. Consider setting up <a href="https://support.speedcurve.com/docs/reports">automated weekly reports</a> for different stakeholder groups.&nbsp;Make sure people have visibility into the metrics&nbsp;<em>they</em>&nbsp;care about.&nbsp;</p> <p><img class="blog-img" src="https://blog-img.speedcurve.com/img/523/report.png?auto=format,compress&amp;fit=max&amp;w=2000" alt="" /></p> <p><strong>Set up reporting ahead of time so key stakeholders know what to expect.</strong> Reach out to them proactively to make sure they don't have any questions about the data they are receiving and what the metrics mean. (Need help explaining what the difference page speed metrics mean and why they matter? Check out this <a href="https://www.speedcurve.com/web-performance-guide/glossary-of-web-performance-metrics/">glossary of common web performance metrics</a>.)</p> <h2><strong>7. Create performance budgets and set up just-right alerting</strong></h2> <p><strong>Performance budgets are a crucial tool for fighting regressions as quickly as possible.&nbsp;</strong>A performance budget is a threshold that you apply to the metrics you care about the most. You can then configure your monitoring tools to send you alerts &ndash; or even break the build, if you're testing in your staging environment &ndash; when your budgets are violated.&nbsp;</p> <p><img class="blog-img" src="https://blog-img.speedcurve.com/img/523/budget.png?auto=format,compress&amp;fit=max&amp;w=2000" alt="" /></p> <p><a href="https://www.speedcurve.com/web-performance-guide/complete-guide-performance-budgets/">This guide</a> goes into much more detail about how performance budgets work and how to set them up, but here are the key points:</p> <ul> <li>Establish budgets for your key metrics</li> <li>Create budgets for render-blocking third parties and third parties that are known to have Long Tasks</li> <li>Set up alerting, but be wary of creating alert fatigue</li> <li>Again, make sure that alerts go to the right people</li> </ul> <h1>Holiday post-mortem</h1> <p>It's common for people to put more effort into preparation. It's also common for the holiday season to take it's toll. We highly encourage taking some well-deserved time to yourself after the holiday crunch is over &ndash; but before you do, here are a few things that will help you unload after the holidays, and put you in a great position to hit the ground running in the new year.</p> <h2><strong>8. Look at your historical data</strong></h2> <p><strong>Identify each anomaly and drill down into your data to understand why it happened.</strong> Post-mortems shouldn't be about finger pointing. Identifying issues that could have been prevented ensures you are ready next time.</p> <p><strong>Report issues to third-party vendors.</strong> If you experienced issues with any of your third parties, share your data with the provider and work with them to improve.</p> <h2><strong>9. Improve your monitoring and testing</strong></h2> <p><strong>Identify changes in user behavior.</strong> Use your RUM data to identify how user behavior may have changed during the holiday period. Make note of heavily trafficked pages that you were not monitoring synthetically. Your users should help dictate what you are monitoring. Were you prepared for changes to traffic patterns? Can what you observed potentially help with scalability testing?</p> <p><strong>Use the data you're gathered above to refine your synthetic testing.</strong> Update URLs, browsers, devices, geolocations, etc. to align with what you've learned about your users via your RUM data.</p> <h2><strong>10. Celebrate wins!</strong></h2> <p><strong>Acknowledge the great work that got you through the holidays.</strong> The long hours. The attention to detail. The collaborative cross-functional team spirit that all went into creating a great user experience. We see you!</p> <p>Send out a fun post-holiday card across your org, using your data to celebrate wins such as:</p> <ul> <li><strong>Uptime</strong> &ndash; Was your site available 99% of the time or more? That's a win!</li> <li><strong>Key performance metrics</strong> &ndash; Did you stay within your regression thresholds for important metrics like backend time, start render, and Core Web Vitals? That's fantastic and definitely worth sharing.</li> <li><strong>Third parties</strong> &ndash; Were your third-party scripts performant throughout the holidays? Shout it from the rooftops!</li> <li><strong>Business metrics</strong> &ndash; Do your correlation charts show that you delivered a speedy experience to a significant amount of your converted traffic? Huge win!</li> </ul> <p><img class="blog-img" src="https://blog-img.speedcurve.com/img/523/dog-party.jpg?auto=format,compress&amp;fit=max&amp;w=2000" alt="" /></p> <h2><strong>It's not too late!</strong></h2> <p>If you're like me and this season has crept up on you, fear not! There's still a lot you can do to keep your site fast &ndash; and your users happy &ndash; through the holidays and beyond.&nbsp;</p> <p><strong>If you're already a SpeedCurve user</strong> and you have questions about any of these strategies, send us a note at support@speedcurve.com and we'll be happy to help!</p> <p><strong>If you're not using SpeedCurve yet</strong>, <a href="https://www.speedcurve.com/signup/">start your free trial</a> and send us your questions at support@speedcurve.com.</p> <p><a href="https://www.speedcurve.com/signup/?utm_source=blog&amp;utm_medium=blog&amp;utm_campaign=blog-trials"><img class="blog-img" src="https://blog-img.speedcurve.com/img/523/customer-logos-free-trial-banner.png?auto=format,compress&amp;fit=max&amp;w=2000" alt="" /></a></p> Wed, 30 Oct 2024 00:00:00 +1300 NEW: Vitals dashboard updates and filter improvements https://www.speedcurve.com/blog/new-core-web-vitals-updates <p><span class="large-para">Our development team recently emerged from an offsite with two wonderful improvements to SpeedCurve. The team tackled a project to unify our filtering, and then they over-delivered with a re-Vital-ized dashboard that I'm finding to be one of the most useful views in the product. </span></p> <p><img class="blog-img" src="https://blog-img.speedcurve.com/img/522/product-vitals-dashboard-oct2024-hero.png?auto=format,compress&amp;fit=max&amp;w=2000" alt="" /></p> <p>Take a look at the recent updates &ndash; and a big thank you to our amazing team for putting so much love into SpeedCurve!</p><h2>Start simple, go deep...</h2> <p>Performance is hard, complex, and riddled with nuance. There is a sea of data collected by SpeedCurve and endless ways to interpret that data.</p> <p>New users of the product crave good design and simplicity in an effort to make sense of this firehose of performance information.</p> <p>Power users desire diagnostic capabilities that require extensive use of the latest and greatest browser APIs.</p> <p>Sometimes it's hard to do both and still provide meaningful information to both audiences. We embrace this challenge and, wherever possible, adopt the principle of starting with a simplistic overview and progressing into meaningful, actionable data.</p> <h2>Vitals dashboard improvements</h2> <p>When we first launched the Vitals dashboard back in December of 2020, we focused on keeping it simple. Core Web Vitals were still a new concept, and educating folks was the primary goal.</p> <p>In the last four years, a lot has changed:</p> <ul> <li>First Input Delay (FID) <a href="https://www.speedcurve.com/blog/interaction-to-next-paint-core-web-vitals/">was given the boot</a> in favor of <a href="https://www.speedcurve.com/blog/check-core-web-vitals-inp/">Interaction to Next Paint (INP)</a>.</li> <li>Chrome exposed browser APIs providing attribution of element selectors and timing subparts for LCP and INP.</li> <li>Finally, we heard from many of you who wanted to expand the scope of the dashboard to include other meaningful metrics that were not technically considered Core Web Vitals.&nbsp;</li> </ul> <h3>More metrics: Backend Time and First Contentful Paint</h3> <p>We've added Backend Time and First Contentful Paint (FCP) to the Vitals dashboard. We also continue to show Total Blocking Time (TBT).</p> <p>Those three metrics tell us a lot about potential causes of a poor user experience:</p> <ul> <li><strong>Backend Time</strong> <a href="https://www.speedcurve.com/web-performance-guide/diagnose-time-to-first-byte/">isn't always a black box</a>. RUM can tell you where that time is being spent, whether its network related or due to CDN or origin issues.</li> <li><strong>First Contentful Paint</strong> tells us when the page begins to render and effectively&nbsp;become consumable by an end user.</li> <li><strong>Total Blocking Time</strong> gives us clues around CPU-intensive tasks that block rendering and interactivity with the page.</li> </ul> <h3>Vitals Dashboard walkthrough</h3> <p><em>The following assumes you are leveraging both Synthetic and RUM. If you aren't using our RUM, you'll still get a look at your synthetic data. (If you'd like to add RUM to your monitoring, contact us at support@speedcurve.com and we'll set you up with a free trial!)</em></p> <p>Focusing on Largest Contentful Paint (LCP), let's walk through an example of how to leverage your Vitals dashboard to find and fix issues with your Vitals.</p> <p><strong>1. Review the color-coded tabs to see which metric needs attention</strong></p> <p>Beginning with the overview at the top of the dashboard, you can look at the tab for each metric to see what needs attention. Each tab is color-coded so you can see if it's Good (green), Needs Improvement (orange), or Poor (red). These thresholds are aligned with Google's recommended <a href="https://web.dev/articles/vitals">thresholds</a>.&nbsp;</p> <p><strong>2. Select a tab to drill down into a metric</strong></p> <p>Selecting the LCP tab lets us know just where we sit for the population we are investigating. We've also included badges to make it clear which browsers support each metric. (That's right &ndash; Safari doesn't support LCP, so you can't track performance for your iPhone users.)</p> <p><img class="blog-img" src="https://blog-img.speedcurve.com/img/522/vitals-tab-overview.gif?auto=format,compress&amp;fit=max&amp;w=2000" alt="Vitals overview with summary number" /></p> <p><strong>3. View historical performance</strong></p> <p>Further down the dashboard, a time series chart provides a historical look at the metric, with added context around volume (for RUM customers only). If your LCP is poor in the middle of the night, should you care? Maybe!</p> <p><img class="blog-img" src="https://blog-img.speedcurve.com/img/522/vitals-time-series.gif?auto=format,compress&amp;fit=max&amp;w=2000" alt="LCP time series showing poor performance during off peak times" /></p> <p><strong>4. Get a high-level view of historical performance for Good, Needs Improvement, and Poor cohorts</strong></p> <p>For added context, the distribution charts show a historical view of the experience of a population &ndash; and, of course, a histogram representing the entire population of experiences for LCP.</p> <p><img class="blog-img" src="https://blog-img.speedcurve.com/img/522/vitals-distributions.gif?auto=format,compress&amp;fit=max&amp;w=2000" alt="distribution charts showing a time series distribution and histogram" /></p> <p>Clearly there's room to improve LCP. Now what?</p> <p><strong>5. Identify problem pages</strong></p> <p>Seeing tabular data for LCP (below) allows us to identity problematic pages that need attention.</p> <p>In this case, Home seems to be the only page getting a 'poor' rating for LCP. It's also the most popular page by volume, as indicated by the % of page views.<br /><br /><img class="blog-img" src="https://blog-img.speedcurve.com/img/522/vitals-by-page-home.gif?auto=format,compress&amp;fit=max&amp;w=2000" alt="Table showing LCP and subparts by page" /></p> <p><strong>6. Identify the most problematic elements on the page</strong></p> <p>After re-filtering the dashboard to the home page, the updated heat map (below) shows the most problematic LCP elements on the page. Surprise, there are many!</p> <p>The LCP element is not necessarily going to be consistent across experiences, even for the same page. As shown, the text element for the cookie consent dialog is the biggest offender, but this might not always be the case (when users are already opted-in, for example).</p> <p><img class="blog-img" src="https://blog-img.speedcurve.com/img/522/vitals-by-selector.gif?auto=format,compress&amp;fit=max&amp;w=2000" alt="Table showing LCP and subparts by element selector" /></p> <p><strong>7. View data for subparts</strong></p> <p>The subparts data isn't necessarily relevant for the text element identified above, but for other elements, such as images, we can see how each subpart is trending over time to identify any regressions that may have been introduced by a recent change.</p> <p><img class="blog-img" src="https://blog-img.speedcurve.com/img/522/vitals-subparts.gif?auto=format,compress&amp;fit=max&amp;w=2000" alt="LCP subparts over time" /></p> <p><strong>8. See visualizations of problem areas on the page</strong></p> <p>Our synthetic data gives us even more diagnostic detail, including visual identification of the LCP element, framed in red below.</p> <p><img class="blog-img" src="https://blog-img.speedcurve.com/img/522/vitals-element-render.gif?auto=format,compress&amp;fit=max&amp;w=2000" alt="Screenshots before and after LCP element is painted" /></p> <p><strong>9. Get detailed diagnostics, so you know HOW to fix issues</strong></p> <p>Finally, the improvements specific to LCP for this page are shown. Maybe there is some low-hanging fruit here. (I'm looking at you, lazy-loaded LCP image!) This list of optimization suggestions &ndash; each of which can be expanded to get more information &ndash; is a good jumping-off point for making improvements.</p> <p><img class="blog-img" src="https://blog-img.speedcurve.com/img/522/vitals-recommendations.gif?auto=format,compress&amp;fit=max&amp;w=2000" alt="Recommendations for improving LCP from Lighthouse" /></p> <h2>Unified filtering</h2> <p><em>&ldquo;Consistency is one of the most powerful usability principles: when things always behave the same, users don&rsquo;t have to worry about what will happen.&rdquo; - Jakob Nielson</em></p> <p>SpeedCurve is now eleven years old. One of the things we love so much about our product is how it's evolved over time. However, in some cases, parts of the UI didn't come along for the ride. This was the case with our dashboard filters. This has been a nagging 'to-do' that we've finally checked off our list, courtesy of our awesome dev team.&nbsp;</p> <p>You'll find that our filters now work the same way across ALL of your dashboards.&nbsp;</p> <p><img class="blog-img" src="https://blog-img.speedcurve.com/img/522/filters.gif?auto=format,compress&amp;fit=max&amp;w=2000" alt="Main filter with dropdown of available options" /></p> <p>As a VERY big bonus, you'll find more options available on most dashboards, including Favorites.</p> <p>There have been many user requests for filter option updates to specific dashboards. We <em>think</em> we've hit them all, but if we missed anything, <a href="mailto:support@speedcurve.com">let us know!</a></p> <p>We hope you enjoy the latest updates. Keep the feedback coming &ndash; and go hug a developer today!</p> <p><a href="https://www.speedcurve.com/signup/"><img class="blog-img" src="https://blog-img.speedcurve.com/img/522/customer-logos-free-trial-banner.png?auto=format,compress&amp;fit=max&amp;w=2000" alt="" /></a></p> Tue, 15 Oct 2024 00:00:00 +1300