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.

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

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.

Geekbench 6 single-core scores over time at 4 price points:

 - fastest iOS
 - fastest Android
 - mid-tier Android
 - low-end Android

⚛️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

Bild

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.

Bild

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'.

In our experiment with popular web pages, 17 out of 20 showed improvements, and the average foreground parse and compile times reduction was 630 ms.

You can trigger eager compilation for the whole file by inserting the magic comment
```
//# allFunctionsCalledOnLoad
```
at the top of the file.

This feature should be used sparingly though - compiling too much will consume time and memory!

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