Welcome.
Making the web performant and accessible is my passion.
All of my content is tailored to performance, user experience (UX) &
security. See all of my principles.
My work experience and interests include Core Web Vitals, browser rendering
& JavaScript runtime performance, React, CSS, Node.js and micro‑frontends
(MFEs).
Right now, I work as a Senior Performance Engineer on thousands of websites
built with Framer.
To make the web better for everyone, I'm also an active participant of
the W3C Web Performance Working Group.
In the past, I've co-founded an eSports company and have created
multiple browser extensions for Google Chrome, used by >65.000 people
daily.
Blog Posts
-
Concurrent Hydration with useSyncExternalStore
Posted on: Oct 6, 2025Pair useSyncExternalStore with useDeferredValue and memoization to keep hydration concurrent and INP friendly.
-
How To Improve INP: React⚛️
Posted on: Dec 2, 2024All-in-one guide for improving Interaction-to-Next-Paint (INP) Core Web Vital in React applications. Introduces the useAfterPaintEffect hook.
-
How To Improve INP: Yield Patterns
Posted on: Jul 11, 2024Detailed insights into patterns like await-interaction-response, yieldToMain, yieldUnlessUrgent & tips for faster Interaction-to-Next-Paint (INP).
-
Fastest Way of Passing State to JavaScript, Re-visited
Posted on: Dec 8, 2023Re-visitting the most performant way of passing state to JavaScript. Contains microbenchmarks and a DevTools challenge.
-
Breaking Up with SVG-in-JS in 2023
Posted on: Jun 30, 2023Technical deep-dive on why you shouldn't have SVGs in your JS bundle and better techniques for JSX usage.
-
The modern way of serving images
Posted on: Jan 25, 2023Technical in-depth guide for the <picture> & <img> srcset and sizes attributes to create responsive & performant images.
Talks
-
Rolldown: Chunking in the wild
Posted on: Oct 9, 2025This talk deep-dives into research related to loading performance of JavaScript modules and why Framer switched from esbuild to Rolldown to improve chunking, held at ViteConf 2025.
-
Breaking Up with SVG-in-JS
Posted on: Apr 9, 2025Talk about how browsers execute JavaScript and why you want to keep SVGs out of your JavaScript bundle, held at Munich Frontend Developers Meetup.
-
Collecting UX-metrics your boss understands
Posted on: Nov 13, 2024Talk about thinking beyond the usual metrics to measure UX and how we do it at Framer, held at Mozilla's performance.sync().
🎥 View on YouTube -
INP – Yield Patterns to keep the UI smooth
Posted on: Sep 11, 2024Intro to INP, how yielding to the main thread works and how you can make use of different patterns to interact with browser scheduling, held at the MunichJS Meetup.
-
What React 18 does and how it impacts your INP
Posted on: Feb 7, 2024In-depth talk about optimistic UI & yielding to improve INP with React, held at the Munich Frontend Developers Meetup.