Sign in

Jacob "kurtextrem" Groß

@kurtextrem.de
885 followers 362 following 103 posts

Staff Performance Engineer @Framer · webperf/UX/AI and the Core Web Vital INP are my interests. ex. gamer · @kurtextrem on other platforms.

PostsRepliesMedia
Jacob "kurtextrem" Groß @kurtextrem.de · 6h
I'll forward (plus my blog post kurtextrem.de/posts/replay...)
kurtextrem.de
Great React UX: Replay input after hydration
How to replay user input that happened before React hydration: preserving filter state, firing onChange, and keeping URL query params in sync.
120
Reposted by Jacob "kurtextrem" Groß
IntentToShip @intenttoship.dev · 14/09/2026
Blink: Intent to Ship: Deferred imports evaluation ("import defer")
groups.google.com
Blink: Intent to Ship: Deferred imports evaluation ("import defer")
Blink: Intent to Ship: Deferred imports evaluation ("import defer")
0104
Jacob "kurtextrem" Groß @kurtextrem.de · 25/08/2026
Not sure if you've seen this: x.com/i/status/208.... You may 'like' it too.
x.com
110
Jacob "kurtextrem" Groß @kurtextrem.de · 20/08/2026
Your blog posts makes one appreciate your human English. It is sometimes a bit harder to digest for non-natives, but at least it doesn't scream AI (no hard feelings towards Marko ... but his text reads like Claude output to me)
100
Jacob "kurtextrem" Groß @kurtextrem.de · 27/07/2026
brain.exe make TS faster make no mistakes
static.klipy.com
Tkt Smart Meme: Think Smart
ALT: Tkt Smart Meme: Think Smart
011
Reposted by Jacob "kurtextrem" Groß
Jake Bailey @jakebailey.dev · 27/07/2026
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
4673
Jacob "kurtextrem" Groß @kurtextrem.de · 24/07/2026
And the other good reason: marvinh.dev/blog/speedin... web perf, of course
marvinh.dev
Speeding up the JavaScript ecosystem - The barrel file debacle
Many projects are littered with files that just re-export other files. These so called "barrel files" are one of the key reasons why JavaScript tooling is slow in bigger projects.
010
Jacob "kurtextrem" Groß @kurtextrem.de · 24/07/2026
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.
100
Reposted by Jacob "kurtextrem" Groß
Alex Russell @infrequently.org · 14/07/2026
A long, long, long road, but `clip-path` animations are about to be GPU accelerated in Chromium: issues.chromium.org/issues/40503...
issues.chromium.org
Chromium
3498
Jacob "kurtextrem" Groß @kurtextrem.de · 29/06/2026
thank you, I appreciate your response!!
100
Jacob "kurtextrem" Groß @kurtextrem.de · 29/06/2026
@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?
x.com
Fabio Spampinato (@fabiospampinato) on X
@kurtextrem tsgo is even slower somehow https://t.co/bymHJCfEMz
120
Jacob "kurtextrem" Groß @kurtextrem.de · 27/06/2026
that's funny, I thought Germany is the only country that has never thought about installing ACs in the past 100 years and now everyone needs one 😀 apparently Australia and Germany are closer than I anticipated
110
Jacob "kurtextrem" Groß @kurtextrem.de · 27/06/2026
yesss, exactly. It's the sweet spot between a permanently installed one and a portable one. Got one last year and haven't looked back
110
Jacob "kurtextrem" Groß @kurtextrem.de · 27/06/2026
I can recommend Midea PortaSplit :)
220
Jacob "kurtextrem" Groß @kurtextrem.de · 27/06/2026
Would be interesting for Framer websites (and I assume for Wix and similar too), because website builders share underlying libs. And of course React etc
020
Jacob "kurtextrem" Groß @kurtextrem.de · 15/06/2026
Images in JS were a mistake and I'm sad it hasn't changed to this date (I wrote kurtextrem.de/posts/svg-in... in 2023)
kurtextrem.de
Breaking Up with SVG-in-JS
Why you don't want SVGs in your JavaScript bundle and better performante-oriented techniques for using SVGs in JSX.
150
Jacob "kurtextrem" Groß @kurtextrem.de · 14/06/2026
I love that jQuery + jQuery UI (lol) are loaded additionally. What even is in those 12MB (I vaguely remember you talked about this before?)
100
Jacob "kurtextrem" Groß @kurtextrem.de · 14/06/2026
Time to use Mythos (once it's back) to write a userscript that fixes this 😂
100
Jacob "kurtextrem" Groß @kurtextrem.de · 01/06/2026
Downside is, with uSES you'll have to be very careful not to break concurrent hydration: kurtextrem.de/posts/react-...
kurtextrem.de
Concurrent Hydration with useSyncExternalStore
Pair useSyncExternalStore with useDeferredValue and memoization to keep hydration concurrent and INP friendly.
110
Jacob "kurtextrem" Groß @kurtextrem.de · 01/06/2026
Interesting solution. I think an inline script that cleans those nodes up before react loads is more performant than this, but comes with more edge-cases (like cleaning up suspense comments too) - this solution doesn't have that problem
100
Jacob "kurtextrem" Groß @kurtextrem.de · 21/05/2026
(I'm not saying suspending during hydration doesn't work in this case, but I was under the impression you no longer think that's a good pattern after seeing the X discussions; hence why I asked if your stance changed because you also mentioned suspending in the post I replied to today)
100
Jacob "kurtextrem" Groß @kurtextrem.de · 21/05/2026
I do think I explain it here: bsky.app/profile/kurt.... Of course you could say "make it less expensive" but as a website generator that's not always simple (admittedly that is probably not a situation most react devs are facing)
100
Jacob "kurtextrem" Groß @kurtextrem.de · 21/05/2026
did your stance on this change? asking because of x.com/i/status/205...
x.com
100
Jacob "kurtextrem" Groß @kurtextrem.de · 17/05/2026
great write-up!
020
Reposted by Jacob "kurtextrem" Groß
Marvin Hagemeister @marvinh.dev · 17/05/2026
Speeding up the JS ecosystem OXC edition 🚀 We made both oxfmt and oxlint 50% faster on projects with >50k directories. marvinh.dev/blog/speedin...
marvinh.dev
Speeding up the JavaScript ecosystem - oxlint and oxfmt
Future versions of oxlint and oxfmt will be ~50% faster on projecs with many (>=20k) directories.
618024
Jacob "kurtextrem" Groß @kurtextrem.de · 05/05/2026
Ah, we're not using that (yet)
010
Jacob "kurtextrem" Groß @kurtextrem.de · 04/05/2026
Oxlint moved very fast. Initially we picked Biome because Oxlint supported fewer rules, but it caught up very quickly and exceeds it today. Even more so with the eslint rule compatibility & typed rules. In our codebase all eslint plugins just work.
050
Jacob "kurtextrem" Groß @kurtextrem.de · 03/05/2026
Will check tomorrow. Yes, we use oxlints native type rule integration
100
Jacob "kurtextrem" Groß @kurtextrem.de · 03/05/2026
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
3230
Jacob "kurtextrem" Groß @kurtextrem.de · 01/05/2026
Chrome will soon have a way to cache the compilation result of inline scripts (bytecode). Wow! chromestatus.com/feature/5132...
chromestatus.com
Chrome Platform Status
010
Jacob "kurtextrem" Groß @kurtextrem.de · 23/04/2026
Glad it helped, thanks for the shout-out!!
110
Jacob "kurtextrem" Groß @kurtextrem.de · 11/04/2026
It's always been a dream for me to build a JS bundle analyzer that highlights those things. Also how much CSS is in the JS bundle and how much HTML (/ SVGs) for no good reason. Maybe AI can do that now
020
Jacob "kurtextrem" Groß @kurtextrem.de · 04/03/2026
I remember us talking about this 2 or maybe 3 years by now after PerfNow? Really exciting to hear this might be something the public can play with soon-ish 👀
050
Reposted by Jacob "kurtextrem" Groß
IntentToShip @intenttoship.dev · 05/02/2026
Blink: Intent to Prototype: Lazy loading for video and audio elements
groups.google.com
Blink: Intent to Prototype: Lazy loading for video and audio elements
Blink: Intent to Prototype: Lazy loading for video and audio elements
02813
Jacob "kurtextrem" Groß @kurtextrem.de · 02/01/2026
(because if you haven't looked at every scenario/specifics, how do you know you got the full picture / the right answer and not just the most obvious one?)
020
Jacob "kurtextrem" Groß @kurtextrem.de · 02/01/2026
> Everyone pays it, regardless of whether they check out. Agreed personally (the argument is similar like only optimizing for wealthy regions), but as money is often the primary driver of eCom, I'm looking for comparison data to understand specific behavior and not only "the" one median N.
100
Jacob "kurtextrem" Groß @kurtextrem.de · 02/01/2026
That's what I was trying to point out: a median eCom shop likely doesn't have the same characteristics as the median of the web. So looking at the median of all the web gives us a great impression of the web, but a bad specific one (e.g. for eCom)
200
Jacob "kurtextrem" Groß @kurtextrem.de · 02/01/2026
I'd say that's not the same as looking at users that buy stuff from your website. Unless you have the checkout on the same page as your product page, users will have to navigate at least twice. So it's certainly interesting to look at unsuccessful vs successful navs
100
Jacob "kurtextrem" Groß @kurtextrem.de · 01/01/2026
When I looked at Framer data, I was similarly surprised. It's over N=2 for us, but still ... surprising. I wonder if N is higher for eCom shops (especially if you filter for successful checkout sessions)?
120
Jacob "kurtextrem" Groß @kurtextrem.de · 30/12/2025
We're on the same page with that: kurtextrem.de/posts/improv.... The difference is, I think React has good parts, while your take is, it's solely bad.
kurtextrem.de
How To Improve INP: React⚛️
All-in-one guide for improving Interaction-to-Next-Paint (INP) React applications. Introduces the useAfterPaintEffect hook.
100
Jacob "kurtextrem" Groß @kurtextrem.de · 30/12/2025
Good question. For my part, I always try to consider the "good" parts of "bad" things and find this, at least to some degree, valuable to do. I heard your pain & success stories of moving away, but my concern was to still consider some of its good pieces (like OOO streaming).
100
Jacob "kurtextrem" Groß @kurtextrem.de · 29/12/2025
Fair point. I'm trying to stay optimistic, but I can see why you don't
110
Jacob "kurtextrem" Groß @kurtextrem.de · 29/12/2025
In any case, I don't want to derail this, but the React team also has adopted view transitions. And the chrome devtools extensibility API. Both aren't legacy APIs. I don't know what happens in the future, e.g. if they adopt moveBefore(), but that at least shows they might care a bit more nowadays.
100
Jacob "kurtextrem" Groß @kurtextrem.de · 29/12/2025
The point I was trying to make was, React has shipped out of order streaming many years ago. That in turn brought broader attention to the topic in the first place (because mako is majorly less known).
100
Jacob "kurtextrem" Groß @kurtextrem.de · 28/12/2025
In any case, I’d rather use <template> over a WC because of the upcoming declarative partial updates: github.com/WICG/declara....
github.com
100
Jacob "kurtextrem" Groß @kurtextrem.de · 28/12/2025
So it’s <template> streamed out of order + 1kb runtime inline script to replace the suspense placeholders (marked with an HTML comment) with the final output that is streamed in. I see + agree with the 50kb point, but is “hostage” really true with (true) concurrent hydration?
200
Jacob "kurtextrem" Groß @kurtextrem.de · 28/12/2025
I personally would count a `<template>` as “parser integration”, what makes you think different? To get us on the same page, this is basically (simplified) what React does: 1) gal.hagever.com/posts/out-of... 2) Kitajs has adopted the “$RC” runtime React established: github.com/kitajs/html/...
gal.hagever.com
Out of Order Streaming from Scratch
Streaming is inevitable. Out of order streaming is an underrated tech breakthrough.
100
Jacob "kurtextrem" Groß @kurtextrem.de · 28/12/2025
It's certainly a well written article! ... and I hate to be this guy: React (likely other major frameworks too that I don't know?) has enabled this exact pattern by using Suspense on the backend for many years now.
120
Reposted by Jacob "kurtextrem" Groß
Alex Russell @infrequently.org · 21/11/2025
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
22410
Jacob "kurtextrem" Groß @kurtextrem.de · 18/11/2025
can't wait for the update - it's my favorite read of every year 😄
000