@erwinhofman.bsky.social
Google Developer Expert in web performance CTO @ RUMvision.com Also sharing over at https://linkedin.com/in/erwinhofman
If you're a web-dev and there's a web feature you like ( #CSS, #JS or an #API) but isn't cross-browser yet: this is your time to shine ✨ Every year, the Web Platform Interop project (collaboration between browsers) to decide on which features to support cross-browser: web.dev/blog/interop... 1/3
Submit your proposals for Interop 2027 | Blog | web.dev
It's time to let us know which web platform features should be part of Interop 2027.
web.dev
This weird UI icon glitch in ChatGPT that I only started seeing a few days ago now finally makes sense after your talk @una.im 😅
Spice start of the 2nd #CSSDay: "CSS is Eating #JavaScript" by @kevinpowell.co demonstrating what logic you can do with #CSS With a weather app as a demo. Can't have enough of those here in The Netherlands 😅 @cssday.nl
Awesome last talk by @jakearchibald.com at 1st day of @cssday.nl! The time travelling through (and crediting contributors to) different APIs to illustrate how custom select (including custom HTML + anchor positioning) came to life was a very nice touch! Can't wait for tomorrow's #CSSDay 🤩
@bram.us covering #ViewTransitions at @cssday.nl I've experimented with this on multiple sites already and it's a great (progressive enhancement) addition to the web! #CSSDay #webdev
On my way to @cssday.nl! 🤩 Gonna see many nice talks and will be having a lot of nerdy hallway conversations about #CSS, #Baseline, #ViewTransitions and dev-live (although it's in our favorite church again, so no real hallways I guess 😆)
For the web dev nerds: meet `containertiming`! That's right, just an attribute! 🧵👇 You might have heard of elementtiming (and maybe also Server-Timing, performance mark/measure etc) already. `elementtiming` can be used for tracking image and text nodes (p, h1 etc) paint timings. 1/6
Yes, I know it's Friday… but I deployed this anyway! 😎 We added the No-Vary-Search response header to a bunch of sites to ignore tracking parameters like `utm_*`, `gclid`, and `fbclid`. They’re consumed by third party tracking scripts, but they should not create .. 1/4
A fix is already here! That's fast 🚀 Thank you @webkitgtk.org Team! Hopefully already there in next Safari release 🤓 bugs.webkit.org/show_bug.cgi...
With #CoreWebVitals data, we usually help agencies and merchants improve their sites and shops. But sometimes the data helps browsers too. An example: We recently spotted very inflated INP numbers across many sites on mobile (P75) specifically for `back-forward-cache` aka #BFcache navigations. 1/5
With #CoreWebVitals data, we usually help agencies and merchants improve their sites and shops. But sometimes the data helps browsers too. An example: We recently spotted very inflated INP numbers across many sites on mobile (P75) specifically for `back-forward-cache` aka #BFcache navigations. 1/5
After implementing Compression Dictionaries back in December, I sat down with @yoav.ws and @patmeenan.com to discuss getting the most out of them and provide some visuals for those new to the concept. Check out the video below: youtu.be/YR2er3EiYnM / lessonsofacto.com/videos/032-c...
Compression Dictionaries: How Google & Shopify Are Bringing SPA Speed to MPA Websites
YouTube video by Lessons of a CTO
youtu.be
Using`preventDefault` within <dialog> close event causes mobile Chrome (but not Brave) to crash 😬 ``` document.body.addEventListener('command', (e) => { if (e.command === 'close') { e.preventDefault(); } }, { capture: true } ) ``` (crashing on v143 & 144 @ Android 13 & 16)
I learned this the hard way: the following works in #Chromium, but not in #FireFox ``` body *::scroll-button(*), body { display: none; } ``` Order of selector doesn´t matter. It seems like FireFox is tripping over it all together when encountering such selector @jakearchibald.com
Look at that 🤩 Safari now supports #LCP and #INP as well! And we can clearly see it in our data 💪 Dates: 🗓️ Nov 3rd: Safari rolled out support in their 26.2 beta release 🗓️ Dec 12th: Safari released it to the public Huge update from the WebKit team, and for #CoreWebVitals in general 👏 1/3
Big update: both #LCP and #INP metrics (part of #CoreWebVitals) for #Safari has landed with the 26.2 release! 🤓 Well done @webkitgtk.org team! Great timing too now that we got our #Elastic setup sorted 💪 (earlier) blogpost: www.rumvision.com/blog/safari-...
Safari catching up: INP and LCP support in the same 26.2 release
Real User Monitoring
rumvision.com
Growing pains and performance gains explained: Our RUMvision.com query response times were -quite ironically- not as fast as we wanted them to be. We reached out to @elastic.co and queries became up to 140x faster. Scatter chart and percentile tables included: www.rumvision.com/blog/faster-...
Whoops, @cloudflare.social outage. And we're seeing it quite clearly in our Real User Monitoring (RUM) data: 📅 top: Nov 17th 10:30 - 13:30 CET 📅 bottom: Nov 18th, 10:30 - 13:30 CET (i.e. ) 1/4
#LCP and #INP support in #Safari really coming close now (maybe even in 2025?) as Safari 26.2 Beta Release Notes includes: - support for the Event Timing API - Largest Contentful Paint metric Great work by the #Webkit team! A blogpost: www.rumvision.com/blog/safari-...
Safari catching up: INP and LCP support in the same beta release
Real User Monitoring
rumvision.com
#perfnow early morning performance session with @stuart-mcmillan.com (although he did a longer version 😅) Now on to the real event @ @perfnow.nl! 😍
@perfnow.nl Amsterdam weather update for those that haven't packed yet: Not too bad during the perf days as it will become slightly warmer + less rainy from Wednesday to Friday.
@andydavies.me need a LoAF image for your @perfnow.nl talk? I just ran into this at Schiphol 🤓😆 #LoAF #INP
Nerdy stuff! @mozilla.org #Firefox just enabled support for #INP with v144 🎉 I dived into our raw RUMvision data. And yep, can confirm that it works when using Google's web-vitals #JavaScript library 😍 (updated) article + chart + baseline badges in a blogpost: www.rumvision.com/blog/firefox...
Weekend! But also: looking back at quite the event, venue and community! I’ve only spoken to a purely #SEO audience a handful of times, but this one was truly energizing! A stable internet was needed to pull off the live quiz. Some attendees couldn’t even join in 😬 1/4
Aftermath sketch of our talk 🤩 Someone in the audience of which I thought was taking notes the old school way, appeared to have been making sketches 🤓 Huge thank you to Jeroen Heijmans for doing + sharing this! 1/2
First #Fronteers presentation was by @karlijnlowik.bsky.social and @erwinhofman.bsky.social, about web performance and RUM!
New speaking gig confirmed: #SEOBenelux 🤟 Happening next week in between my 2 other scheduled talks this month! But this edition and talk will be different: → pure #SEO audience → bringing me back at another SEO event → this time in #Antwerp, October 10th 1/2
Many people don't know this: you can help shape the web with just an upvote (But: Today is the last day!) When I started frontend dev 20+ years ago, browsers felt untouchable to me: everything is set in stone and decided already. But over time (and especially since 2021) I learned that: 1/4
Interop 2026: Key APIs for sitespeed & RUM
Real User Monitoring
rumvision.com