the worst part about talks is writing talks the best part about writing talks is finding all the oopsies in the code being talked about and thus, I now have PRs to make the TS AST 2% smaller, the parser 10% faster, the binder 1.5% faster
Jacob "kurtextrem" Groß
@kurtextrem.de
Staff Performance Engineer @Framer · webperf/UX/AI and the Core Web Vital INP are my interests. ex. gamer · @kurtextrem on other platforms.
Turns out there is another reason to get rid of barrel files in web dev: Agents waste time & tokens reading those modem.dev/blog/how-cod... No better time to remove barrel files than now.
A long, long, long road, but `clip-path` animations are about to be GPU accelerated in Chromium: issues.chromium.org/issues/40503...
Chromium
issues.chromium.org
@jakebailey.dev On X @fabiospampinato.bsky.social found a case where tsgo is slower than TS in a specific case: x.com/i/status/207..., is that interesting for you?
Fabio Spampinato (@fabiospampinato) on X
@kurtextrem tsgo is even slower somehow https://t.co/bymHJCfEMz
x.com
Speeding up the JS ecosystem OXC edition 🚀 We made both oxfmt and oxlint 50% faster on projects with >50k directories. marvinh.dev/blog/speedin...
Speeding up the JavaScript ecosystem - oxlint and oxfmt
Future versions of oxlint and oxfmt will be ~50% faster on projecs with many (>=20k) directories.
marvinh.dev
I started migrating the main monorepo at @framer.com to @voidzero.dev's oxlint. Speed difference is day and night. For 420 enabled rules (including typescript-eslint rules), without cache: eslint: 3m58s | 21 GB RAM oxlint: 0m46s | 4.6 GB RAM (oxlint) + 6 GB tsgo 🚀5x faster, 2x less RAM usage
Chrome will soon have a way to cache the compilation result of inline scripts (bytecode). Wow! chromestatus.com/feature/5132...
Chrome Platform Status
chromestatus.com
Blink: Intent to Prototype: cachehint attribute of script element
Blink: Intent to Prototype: Lazy loading for video and audio elements
Blink: Intent to Prototype: Lazy loading for video and audio elements
Blink: Intent to Prototype: Lazy loading for video and audio elements
groups.google.com
How's the mobile CPU landscape evolving? Thanks to process node improvements, a mid-range Android from 2025 is (finally!) as fast as 2017's iPhone 8, but a low-end (~$100) smartphone isn't yet as speedy as a decade-old iPhone 6s.
@ricky.fm When you have multiple (unrelated) expensive components running transitions to update, how could you "flush" some transitions individually instead of batching? (apart from making each comp faster to render)
💫 When performance experts choose WebPerformance Report to simplify and share their insights, it reinforces our mission to make data more actionable for everyone. Thank you, Jacob @kurtextrem.de, for trusting WPR to bring clarity to web performance. ⚡ 👉 webperformancereport.com#Testimonials #webperf
#PerfNow has incredibly interesting talks. Anyone who's serious about performance should join. Proud that we at @framer.com are sponsors.
Belated hi from @perfnow.nl! Come talk to us (me & @kurtextrem.de) about React performance, Framer sites, LCP/INP and more :D
Senior performance engineer @kurtextrem.de talks about Framer's journey to adopting Rolldown and the chunking configurations used in production. Full video in comments⏬
⚛️ReactConf once again mentioned concurrent stores. What if I tell you, we have concurrent external stores today? (kinda) My latest blog post explains: 👉 How to to pair `useSyncExternalStore` with `useDeferredValue` (and `useMemo`) ⚡ Why this can improve UX & INP during hydration
My first big stage & first LinkedIn live stream appearance is today, 10:55 @ ViteConf. I'll talk about how Framer integrated VoidZero's new web bundler Rolldown. Plus, some things about performance and why you should still bundle in 2025. Tune in (free): www.linkedin.com/events/73138...
LinkedIn Login, Sign in | LinkedIn
Login to LinkedIn to keep in touch with people you know, share ideas, and build your career.
linkedin.com
ICYMI, I keep updated recommendations for low-spec testing devices here: infrequently.org/links/#hardw...
Links, Resources, and Humans of Note - Infrequently Noted
Alex Russell on browsers, standards, and the process of progress.
infrequently.org
PSA: There's an open bug in React 19.1 that emits a `<link rel="preload">` for every single `<img>` tag on a page when you SSR: github.com/facebook/rea.... This can result in *tons* of preloads that are bad for LCP and also wastes network bandwidth/data.
The semver library used in npm, yarn and pnpm could be made 33x faster. Ran into that while wondering why running `npm install` takes so long on the Preact repo. marvinh.dev/blog/speedin...
Speeding up the JavaScript ecosystem - Semver
During the installation process, package managers run a bunch of semver comparisons. The semver library used in npm, yarn and pnpm can be made around 33x faster.
marvinh.dev
performance.now(), the web performance conference, 30th and 31st of October, Amsterdam. Single track, the best speakers in the industry, plenty of your performance-mad peers around to have fascinating conversations. What's not to like? Let's introduce our speakers ... perfnow.nl
performance.now(); 30th and 31st of October, Amsterdam
On 30th and 31st of October, 2025, the sixth edition of performance.now() will take place in Amsterdam—a single track conference, covering today’s most important web performance insights.
perfnow.nl
⚡ Lighthouse (incorrectly) punishes preloading If you’re like me, you probably struggled with Lighthouse scores at least once. “I already optimized everything; why is my score still yellow?” Often, the cause is there’s more to optimize. But sometimes, it’s Lighthouse itself.
How To Improve INP: Yield Patterns kurtextrem.de/posts/improv... by @kurtextrem.de #WebPerf #Performance #INP
How To Improve INP: Yield Patterns
Detailed insights into patterns like await-interaction-response, yieldToMain, yieldUnlessUrgent & tips for faster Interaction-to-Next-Paint (INP).
kurtextrem.de
Chrome 136+ ships a new V8 version that supports a "compile hint", which makes V8 parse and compile all functions in that file eagerly. Great for entry points – where you know all functions will very likely be used. Less so as 'one weird trick to make all your JS faster'.
Did you know that jQuery outperforms React, what? 😳 Sounds like clickbait, but is reality. The HTTP Archive shows 82% of sites that use jQuery have good INP on mobile📱, while only 67% do when they use React⚛️. Not just sites, also libraries. Let's fix that👇#webperf kurtextrem.de/posts/improv...
How To Improve INP: React⚛️
All-in-one guide for improving Interaction-to-Next-Paint (INP) Core Web Vital in React applications. Introduces the useAfterPaintEffect hook.
kurtextrem.de
Say hello to `inverse-subset`! The idea is from a conversation with @andydavies.me at #perfnow. When you have a complete font and a subset e.g. Latin, generate another subset consisting of everything not in the original subset. E.g. all characters that are NOT Latin. npmjs.com/package/inverse-subset
inverse-subset
A CLI tool to generate inverse subset fonts using a complete font and a subset font.. Latest version: 1.0.1, last published: 4 minutes ago. Start using inverse-subset in your project by running `npm i...
npmjs.com
is this still true, even for script type=module? 🤯 cc: @chromium.social … can’t for the life of me find the message but thank you to the person at @perfnow.bsky.social who sent this my way ❤️ web.dev/learn/perfor...
"Everyone experiences P99" - @anniesullie.bsky.social ... at subway stations, or flaky internet. Understanding & monitoring that experience can make sense. blog.chromium.org/2021/04/digg... #PerfNow
Closing talk day 2 @ #PerfNow: @anniesullie.bsky.social showing how much time improving CWVs saved. I like how Alex's great talk at the closing of day 1 was a wake-up call and now we get to see the positive side of things as contrast.
@kurtextrem.de shares thoughts on communicating performance to your boss. Thanks for the @speedcurve.bsky.social shoutouts! #performance.sync() @perfnow.bsky.social
The all new performance chapter of the 2024 Web Almanac written by Jevgenija Zigisova and @inesakrap.bsky.social almanac.httparchive.org/en/2024/perf...
Performance | 2024 | The Web Almanac by HTTP Archive
Performance chapter of the 2024 Web Almanac covering Core Web Vitals, with deep dives into the Largest Contentful Paint, Cumulative Layout Shift, and Interaction to Next Paint metrics and their diagno...
almanac.httparchive.org