Sign in

Barry Pollard

@tunetheweb.com
3K followers 440 following 1.5K posts

Web Performance Developer Advocate at Google Chrome helping to make the web go faster! All opinions my own.

PostsRepliesMedia
Barry Pollard @tunetheweb.com · 16/09/2026
Sure, but a few bytes more and AVIF is clearly better. IMHO a first render at <7kb is effectively a tie, and then it comes down to what's in that first render. But the bigger point is that JPEG-XL progressiveness was a key selling point. And that argument is now in question in my mind...
Same image as previous post but with just 500 bytes (or half a kilobyte) more allows AVIF to render with a clearly better first render than the blurry JPEG-XL first render for the same number of bytes.
100
Barry Pollard @tunetheweb.com · 16/09/2026
Yes! While the announcement concentrated heavily on the metrics and CrUX, somewhat buried in the docs is the excellent DevTools support that was added to help debug these: developer.chrome.com/docs/ads/det...
Chrome DevTools Application panel with the Ads sidebar menu open, focusing on a checked box labeled 'Highlight ads'. A sample web page containing an ad highlighted in red is also shown to demonstrate the effect of checking the 'Highlight ads' box.
110
Barry Pollard @tunetheweb.com · 15/09/2026
That maybe-not-so-obvious little star button menu is the key:
Screenshot of CrUX Vis in mobile view where the navigation is available under a little Star menu button.
110
Barry Pollard @tunetheweb.com · 14/09/2026
But man this demo is telling for the progressive use case people have been banging on about! jpegxl.info/resources/pr... Not to mention the decoding stats (another key argument against AVIF I kept hearing and why JPEG-XL was absolutely needed).
Screenshot of a comparison tool comparing progressive rendering of AVIF with JPEG-XL after 8,58 bytes. For AVID it's clear what the image is even if it;s still kinda low res. For JPEG-XL it's a blurry mess.
130
Barry Pollard @tunetheweb.com · 10/09/2026
Now with added Firefox support! developer.mozilla.org/en-US/docs/W...
MDN compat table showing Firefox 154 supports No-Vary-Search for the HTTP Cache!
000
Barry Pollard @tunetheweb.com · 08/09/2026
@brucel.bsky.social does Vivalidi disable Prerendering via Speculation Rules API? Demo page: chrome.dev/prerender-de... DevTools shows speculative loading is disabled. Weirdly, it works for prefetch so not all speculative loading is disabled just prerender: chrome.dev/prerender-de...
DevTools Application Panel showing Speculative loading is disabled and 3 prerender failures
100
Barry Pollard @tunetheweb.com · 02/09/2026
Finally all got there!
MDN now had a fully populated compatibility table, showing this is Chromium-only for now.Can I use also displays compatibility dataThe developer.chrome.com soft navigation docs have a "Browser support" compatibility widgetAnd finally the MDN docs show the Baseline status of "Limited availability"
031
Barry Pollard @tunetheweb.com · 04/08/2026
Technology, like time, cannot be stopped in it's relentless march forward. Much as us old timers would like to slow down one or the other just a little bit… In light of that, Chrome 153 will come with an updated list of modern devices for emulation mode—with nice categorisation—thanks to @jackf.io
An updated list of modern devices DevTools can emulate now nicely categorised into Mobile, Foldables, Tablets & Desktops, and Smart Displays.
1493
Barry Pollard @tunetheweb.com · 29/07/2026
"You're absolutely right Daniel, I did promise to disclose I was an AI agent when opening a PR and failed to do that. I promise to fail to do it next time too."
A few moments later
1440
Barry Pollard @tunetheweb.com · 11/07/2026
West Cork ain’t bad in the summer…
Barleycove beach under a beautiful bright blue sky.
1180
Barry Pollard @tunetheweb.com · 26/06/2026
Seems about right to me... britmonkey.com/2020s-politi...
Your Results
73% Woke - 27% Chud
53% Techbro - 47% Neo-Luddite
78% Hopepilled - 22% Doomer
83% Davos - 17% Dubai
Your Closest Match: Mark Carney
010
Barry Pollard @tunetheweb.com · 21/05/2026
You mean this? Yeah this is nice rather than giving blanket access.
Firefox’s serial permission prompt picker. Asking the user which Serial Port to give access to.
130
Barry Pollard @tunetheweb.com · 29/04/2026
This seems like something AI could be good at. Though worth double checking it's answers!
What does rolldown's `minModuleSize` option do?

In the context of Rolldown (the Rust-based bundler used by Vite), the minModuleSize option is a strategy used to prevent the creation of many tiny, inefficient files during the code-splitting process.

It effectively sets a minimum threshold (in bytes) for how large a module must be to qualify for being split into its own independent chunk.

How it Works
When a bundler analyzes your dependency graph, it often identifies shared code that is used by multiple entry points. Usually, it would pull that shared code into a separate "vendor" or "shared" chunk.

However, if that shared piece of code is extremely small (e.g., a 100-byte utility function), the overhead of the browser making an extra HTTP request to fetch that tiny file often outweighs the benefit of caching it separately.

Below the threshold: If a module's size is less than minModuleSize, Rolldown will likely "inline" or merge that module into a larger chunk rather than letting it sit alone.

Above the threshold: The module is allowed to be split into its own chunk if other conditions (like minChunks) are met.Why use it?
Performance: Fewer HTTP requests. While HTTP/2 and HTTP/3 handle multiple requests better than HTTP/1.1, there is still a "request waterfall" and parsing overhead for every single script tag.

Compression Efficiency: Modern compression algorithms (like Gzip or Brotli) work much better on one 50KB file than on fifty 1KB files. Larger files provide a better "dictionary" for the algorithm to find patterns.

Cleanliness: It prevents your dist folder from being cluttered with hundreds of tiny .js files that only contain a single export.

Relationship to minSize
While minModuleSize looks at the individual module level, some bundlers (and specific Rolldown plugins) also use a minSize parameter. The distinction is usually that minModuleSize refers to the raw source/transformed size of the modules going into a chunk, whereas minSize often refers to the final size of the generated chunk after bundling.

Do you have a specific project where you're seeing a high number of tiny files, or are you just tuning your Vite/Rolldown config for the first time?
110
Barry Pollard @tunetheweb.com · 24/03/2026
We just added a Core Web Vitals geographic breakdown to the Core Web Vitals tech report when looking at a single technology httparchive.org/reports/tech... Many thanks to @alonko.bsky.social for contributing this!
Table of Core Web Vitals geographic breakdown ordered by number of origins showing how Core Web Vitals differ by country for a particular technology. For many technologies countries like Japan Germany, and the UK have much better Core Web Vitals than other countries like India and Brazil.
1115
Barry Pollard @tunetheweb.com · 24/03/2026
Look what landed in DevTools in Chrome Canary! A Request # column, allowing you to: - More easily return to the page load sort order - More quickly identify when important resources are loaded late (LCP resource as request number 59? No thank you!) Thanks to Helmut Januschka for implementing!!
Screenshot of Chrome DevTools with a "Request #" column added
3212
Barry Pollard @tunetheweb.com · 12/03/2026
This!!! It's usually easy to add another dependency, and polyfills are great to allow you to use something sooner, rather than later, but there's almost always [performance|security|maintenance] cost to them. And those costs add up with each one you add. So plan on removing them at some point...
A slide with title: What's the future?
And underneath: If you use a polyfill, do you have a removal strategy when the feature becomes part of your Baseline? If using an experimental feature, how are you tracking potential changes to it?
192
Barry Pollard @tunetheweb.com · 27/02/2026
Equally depressing for such a drastic cut given the reported financials:
Block announced the layoffs in conjunction with its fourth-quarter earnings results.

The payments company reported adjusted earnings per share of 65 cents on revenue of $6.25 billion, while analysts estimated 65 cents per share and $6.24 billion, according to LSEG.

Gross profit increased 24% from a year earlier to $2.87 billion.

For the full year, the company said it sees adjusted earnings per share of $3.66. Analysts anticipated $3.22 per share, according to LSEG.
010
Barry Pollard @tunetheweb.com · 24/02/2026
Missed this one but thanks to @stefanjudis.com 's weekly newsletter (you should sign up btw) I saw his own post on how to identify render-blocking resources in Chrome: www.stefanjudis.com/blog/how-to-... Try it in the console now! (code in Alt text)
// get all resources
window.performance.getEntriesByType('resource')
  // only consider the blocking ones
  .filter(({renderBlockingStatus}) => 
      renderBlockingStatus === 'blocking')
  // log their names
  .forEach(({name}) => console.log(name))

// Logs: https://your-site.com/styles.css
1150
Barry Pollard @tunetheweb.com · 04/02/2026
From Chrome 145 (on general release next week!), DevTools we will start to show so called "soft" navigations and "Soft LCP" in the Performance Panel traces. These are for SPAs which don't do a full page load, but instead "fake it" by updating the current page and pushing a new history entry. 1/5 🧵
Screenshot of a performance trace in Chrome DevTools with a few additional "Nav*" and "LCP*" markers. Hovering over the "LCP*" shows this is a "Soft LCP" and in the Summary panel when you click on it you see "Soft Largest Contentful Paint" and a "Learn more about Soft Largest Contentful Paint" link.
24512
Barry Pollard @tunetheweb.com · 23/01/2026
Yeah! Just noticed the (sometimes useful) split view option well be in it's better IMHO second-place position in the right-click context menu form the next version of Chrome—Chrome 145 rolling out in the next few weeks. That'll stop me getting frustrated by accidentally open in split view!
Open Link in New Tab is now the 1st option again, the new Open Link in Split View is 2nd as sometimes you do want to see pages side by side to compare, and the rarer options of New Window and Incognito are 3rd and 4th respectively. As it should be.
271
Barry Pollard @tunetheweb.com · 16/01/2026
Yeah measurement changes when we switched to larger URL sets. httparchive.org/reports/stat...
Screenshot from HTTP Archive graph with notes on major changes showing URL corpus changes.
030
Barry Pollard @tunetheweb.com · 13/01/2026
You forgot the next crucial piece of the announcement @nucliweb.net ! developer.chrome.com/docs/crux/re...
We usually see a high variability with the December data—we have seen the same every year since CrUX launched. Given the high variability it's difficult to attribute any of these moves to any particular causes and we expect most numbers to revert back next month (again as they mostly have in previous years). Therefore, we won't try to explain these movements this month.
120
Barry Pollard @tunetheweb.com · 16/12/2025
The 2025 State of HTML survey is out 2025.stateofhtml.com And I love the opening stat — Lazy Loading FTW! Built-in, simple to use, attributes and elements are HTML's super power. And you can see that reflect in other attributes with the largest increase (details/summary, dialog, fetchpriority!)
70% Proportion of respondents having used lazy loading, the most-used feature among those with the “Newly Available” Baseline status.Chart of the largest increased features including: lazy loading, srcset and sizes, <details> and <summary>, Content-Security-Policy, <dialog>, Defining Custom Properties with <template>, Shadow DOM, <search>, fetchpriority, details name.
5316
Barry Pollard @tunetheweb.com · 09/12/2025
The other thing I see is comparisons to game development which can render at the full speed of monitors—e.g. 120 fps, or even higher! That's nice, and browsers can get close for non-JS rendering. Check out this for a real cool example! (at 60fps): x.com/pushmatrix/s... 9/12
110
Barry Pollard @tunetheweb.com · 09/12/2025
But you can also see the "processing duration" of the largest INP interaction by hovering, and each one by expanding. But, as I say, input delay can be other JS running, and presentation delay can also be under the devs control—somewhat. Especially for things like typing. 8/12
Screenshot of Chrome DevTools performance panel with the 56ms INP event hovered showing the breakdown of that 56ms into 1ms Input Delay, 0ms processing duration, and 54ms presentation delay. Below, in the interactions log, you can expand any single interaction to see a similar breakdown.
100
Barry Pollard @tunetheweb.com · 04/12/2025
Did my own take on this. I love the way AI really enhances the product and makes it 10x more useful...
An AI-generated abomination of an ice lolly with a wrapper with the React logo and "Modern Web Development" written on it, covering a Neapolitan ice cream ice lolly, with the bottom chocolate layer leaking out to a gooey puddle with the letters "RSC" written in sprinkles on top of the puddle. 11 extra lollypops sticks with AI written on them, have been shoved in, seemingly at random and for no real purpose.
2120
Barry Pollard @tunetheweb.com · 29/11/2025
Oh I’ve spent my afternoon dealing with an ungodly amount of lights. And three very excitable young children who not so much decorated the tree as vomited Christmas decorations upon it.
A Christmas tree. With lights correctly placed on horizontally. And an ungodly amount of bubbles.
020
Barry Pollard @tunetheweb.com · 27/11/2025
These are in Chrome Canary already. Firefox and Safari Tech Preview have paintTime but not presentationTime. FF are working on it IIRC, but Safari's rendering pipeline is a bit different so even if they do add that, it'll likely be a bit earlier than when pixels actually hit the screen. 3/4
Chrome Canary includes paintTime and presentationTime are as part of LCP entriesFirefox has paintTime but not presentationTime (yet?)Safari also has paintTime but not presentationTime
100
Barry Pollard @tunetheweb.com · 27/11/2025
Weird!
Public transport option with Start and Save
110
Barry Pollard @tunetheweb.com · 18/11/2025
A quick check shows they are using AWS via Atlassian for me:
Cloudflare's system status page appears to be served by AtlassianEdge in Amazon cloudfront according to their HTTP Headers
040
Barry Pollard @tunetheweb.com · 18/11/2025
Chrome 143 will start rolling out today (most users get it next week). It includes a new set of options for your webperf traces — including saving sources & source maps: developer.chrome.com/docs/devtool... This makes it easier for those viewing traces outside of the page load to get more context.
Save performance trace options:
- Include annotations
- Include resource content
- Include script source maps
- Compress with gzip
1337
Barry Pollard @tunetheweb.com · 18/11/2025
Well I guess that at least answers my question.... downforeveryoneorjustme.com
https://downforeveryoneorjustme.com/ is unavilable
0313
Barry Pollard @tunetheweb.com · 18/11/2025
That makes me cry! Luckily it's fixed on Chrome Canary
Detail of the Chrome address bar with an AI Mode button that is rounded and it DOES match the padding of inline and block. Looks great.
040
Barry Pollard @tunetheweb.com · 01/11/2025
On a related note, have you seen full split browsing mode yet?
Chrome with a split tab of BlueSky and Example.com, along with additional tabs for Google and bbc news
130
Barry Pollard @tunetheweb.com · 31/10/2025
Q1. Yup. Hopefully you saw the NOT part of WHERE rules in my talk: developer.chrome.com/docs/web-pla... Q2. Yup. developer.chrome.com/docs/web-pla...
Chrome will also prevent speculations being used in certain conditions including:

Save-Data.
Energy saver when enabled and on low battery.
Memory constraints.
When the "Preload pages" setting is turned off (which is also explicitly turned off by Chrome extensions such as uBlock Origin).
Pages opened in background tabs.
Chrome also does not render cross-origin iframes on prerendered pages until activation.

All of these conditions aim to reduce the impact of over-speculation when it would be detrimental to users.
010
Barry Pollard @tunetheweb.com · 16/10/2025
I also extracted the version out of curiosity (in the same sheet)
3.2.1 is far and away the most popular with 786,512 origins, way about the next version (2.8.0 with 40,819)
110
Barry Pollard @tunetheweb.com · 14/10/2025
We want to congratulate @firefox.com and @firefoxperformance.bsky.social for shipping the Event Timing API in Firefox 144, meaning both INP (which is calculated from Event Timing) and LCP (that they shipped previously) can be measured in that browser. More Core Web Vitals for all! 5/7
Firefox now supports PerformanceEventTiming.interactionId, allowing developers to group related input events. This enables support for the Interaction to Next Paint (INP) responsiveness metric.
152
Barry Pollard @tunetheweb.com · 12/10/2025
“Those who cannot remember the past are condemned to repeat it.” George Santayana
020
Barry Pollard @tunetheweb.com · 02/10/2025
React 19.2 has shipped including support for the DevTools Extensibility API so you can understand what React is doing when, and how that relates to the rest of the performance profile 🥳 🎉 react.dev/blog/2025/10...
Chrome DevTools performance trace showing some custom tracks. Scheduler Custom Track including Blocking, Transition, Suspense, and Idle sub tracks. And Components custom track.
1172
Barry Pollard @tunetheweb.com · 01/10/2025
Core Web Vitals mystery for ya: Why does Google Search Console same my LCP is bad, but every example URL has good LCP? I see developers asking: How can this happen? Is GSC wrong? (I'm willing to bet it is not!) What can you do about it? This is admittedly confusing so let's dive in... 🧵 1/12
Screenshot of Core Web Vitals graph in Google Search Console, with the URLs greyed out. The Group LCP is 2.6 seconds and so the group is in amber and saying there is an issue as it's longer than the 2.5 seconds "good" threshold. Yet all the examples have green LCPs of 1.7 seconds, 2.4 seconds, 1.2 seconds...etc. which is confusing.
1184
Barry Pollard @tunetheweb.com · 26/09/2025
Drew this today to explain where we are on the AI hype cycle at the moment. Feel free to use…
The Gartner Hype cycle staring with Technology trigger, quickly ramping up to the Peak of inflated expectations before crashing down in the Trough of disillusionment before raising back up in the Slope of enlightenment and then settling in a more realistic Plateau of productivity. We are here is marked WAY, WAY, WAY ABOVE the Peak of inflated expectations
3247
Barry Pollard @tunetheweb.com · 23/09/2025
And very amusing that “Friendly” option isn’t really an option 🤣
Spice level drop down with: “Friendly (Unavailable)”, “Irritated (Default)”, “Monty Python (Silly)”, and “Scathing (Nuclear)” options.
060
Barry Pollard @tunetheweb.com · 27/08/2025
I’d rather they were more honest and just said why they use cookies, why that’s needed, and offer Accept All, Reject All or Customize options. Kinda like this one:
Cookie banner which doesn’t claim they value my privacy but explains why they use cookies and offers “Accept All”, “Customize” and “Deny” buttons.
100
Barry Pollard @tunetheweb.com · 18/08/2025
Two pro webperf tips! Are you using Annotations in your performance traces? developer.chrome.com/docs/devtool... And even when not needing to annotate, Gemini AI auto-annotations can quickly give you an idea what a bit of the flame chart is doing without you needing to dig in yourself. Try it out!
1189
Barry Pollard @tunetheweb.com · 11/08/2025
🇮🇪 C(ORK) 🛫 LHR 🛬 PVG 🇨🇳 Barely home long enough to repack, I’m back at work and on the road again. This time I’m off to Shanghai for Google I/O Connect China 2025! Say hi if you’re going.
Join us in Google I/O Connect China white text on a black background with some imagery including a Panda and The Oriental Pearl Tower
110
Barry Pollard @tunetheweb.com · 08/08/2025
Staring at it right now! Sadly won’t have time as have ziplining booked and also a training booking later.
Voss Gondola
110
Barry Pollard @tunetheweb.com · 08/08/2025
Since you all seemed to appreciate the other photos, here some more from the Fjord cruise. Oh and btw kids are enjoying themselves! And I do get an occasional “wow” or “cool”. They’re just not quite as enthralled as I am by the views! 😀
Pretty little boat houses in FlåmAngry clouds over NærøyfjordUndredal village on the AurlandsfjordDyrdal - a tiny village on the Nærøyfjord
080
Barry Pollard @tunetheweb.com · 07/08/2025
And it only got better when we jumped off and detoured to Flåm for the night!
Snow on the mountains!One of the many waterfalls on the Flåm RailwayLady in red dancing by the waterfallRiver rapids out the train window…
6130
Barry Pollard @tunetheweb.com · 07/08/2025
The kids are not appreciating the majestic beauty of the Oslo-Bergen line so hopefully one of you all will…
View of green fields under a blue sky framed by a train window.A pretty red building over a rover reflecting the trees and sky overloading by rugged hills.A pale green lake under a white cloudy sky.Grey and white clouds over a green lake.
212217
Barry Pollard @tunetheweb.com · 02/08/2025
Worth it!
Nyhavn canal area in Copenhagen
060