Jacob "kurtextrem" Groß

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.

886 followers362 following105 posts

Jacob "kurtextrem" Groß reposted

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

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

Jacob "kurtextrem" Groß reposted

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.

Jacob "kurtextrem" Groß reposted

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

Jacob "kurtextrem" Groß reposted

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

perfnow.nlperformance.now(); 30th and 31st of October, AmsterdamOn 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.

Jacob "kurtextrem" Groß reposted

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

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

An easy way to figure out if this might make sense to add for you: Open Chrome DevTools -> 3 dots -> More tools -> Coverage. The files with the least amount of unused functions right after a page load, will gain the most from this.

The "Performance" tab of DevTools shows compilation & parsing here - important: disable caching to avoid v8's byte cache! The compile hint changes how early the compilation happens. If the main thread stalls while waiting for compilation to finish, the compile hint can have positive impact.

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

kurtextrem.deHow 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.

Part 2 of my "How to improve INP" series is for library authors and devs working on React codebases. We'll take a look at how to: ✨ Ensure great INP & UX after user interactions 🚀 Make hydration concurrent 💡 Get non-blocking useEffects, always so that... your site outperforms jQuery instead.

Jacob "kurtextrem" Groß reposted

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

npmjs.cominverse-subsetA 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...

Jacob "kurtextrem" Groß reposted

You are up to date.