Every post so far has assumed nothing was cached. That was on purpose — you can't reason about an optimization until you understand the thing it optimizes. Now we turn it on.
My favorite way of organizing React codebases
Nine posts. One request.
The previous post argued that most of what people put in a global store was never client state — it was server data, or URL state, or form values, all miscategorised.
Post 3 established a fact in passing that's worth picking back up: useEffect does not run during the SSR pass. Your client component executes on the server, produces markup, and its effects never fire.
This series has spent several posts taking things away from the browser.
Functions can't cross the boundary. Not because React is fussy, but because the two sides never share a scope — there's no lexical environment on the client for a server closure to be captured from. Props go into a text payload. A function isn't text.
One question before we start.
A module path, a chunk, an export name. That's bundler output — the bundler assigned the ID and decided which file the module lives in.
Here's a test. Take this component:
Here’s a question I sat with for longer than I should have: if React’s Virtual DOM is supposed to make things faster, why does a complex React app sometimes feel slower than a simple jQuery one?
Rendering patterns are one of those topics where everyone nods along in standup and then quietly Googles “SSR vs SSG” for the fourth time that week.
Runtime CSS-in-JS has real costs, but runtime-capable systems can solve real composition problems. Their cost should be judged against what they enable.
How the browser event loop actually works — tasks, microtasks, Web APIs — and what async/await is really doing underneath the syntax sugar. Includes the edge cases that actually break in production.
No one ever got fired for picking React, but they're probably wasting a shit load of tokens.
Ramble about being constrained, I guess
code to video with React
When working with components, a use-case comes up often: computing an operation on component initial mount, and having it be fully stable across the entire lifetime of the component
@blocz/react-responsive v5.1 was just released. Let’s go through all the different features and changes added by this new minor version
@blocz/react-responsive v5.0 was just released. Let’s go through all the different features and changes added by this new major version
Sam Goodwin introduces Alchemy, a modern infrastructure-as-code tool built with Effect that challenges the tech debt of current solutions.
React製TUIライブラリInkをブラウザのxterm.js上で動かすInk Webの紹介です。
How portable is "use server" anyway?
Dev Log 50: 2026-04-15
Why className and style props make your life harder, not easier
Release Notes!
Redux maintainer Mark Erikson covers his journey maintaining Redux, building Redux Toolkit, and pioneering time-travel debugging at Replay.io.
Infinite Red founder Jamon Holmgren shares his coding journey, building a React Native consultancy, and creating his new game Into the Dawn.
Next.js Link prefetching quietly burned through 15 GB of bandwidth on my Vercel-hosted blog. Here's how I fixed it.
Next.js Link prefetching quietly burned through 15 GB of bandwidth on my Vercel-hosted blog. Here's how I fixed it.
Salma Alam-Naylor introduces Nordcraft's visual web framework and shares her evolution from music teacher to Head of Developer Education.
It's tradeoffs, all the way down.
Nadia Makarevich has some great numbers from a realistic benchmark. (h/t to Chris Coyier for putting it in my feed.) The whole writeup is worth reading, since it goes in-depth into several data-loading strategies. The summary is excellent:
Jeppe Reinhold from Chromatic reveals Storybook's transformation into a fast, modern development environment with Vite integration and AI-powered component discovery.
Dev Log 40: 2025-12-25
Open source doesn't work without good faith - and sometimes you need to patch a dependency to do your part.
Open source doesn't work without good faith - and sometimes you need to patch a dependency to do your part.
Learn how to fix aria-live regions that fail silently in modern SPAs. Discover why screen readers miss your announcements when frameworks recreate DOM elements, understand the difference between polite and assertive announcements, and implement two reliable patterns - local and global live regions - with concrete examples for Angular, Vue, and React applications.
Gabriel Nordeborn from the Rescript team showcases the OCaml-based language's superpowers including pattern matching and seamless React integration for frontend development.
Francois Best explains how Nuqs solves React URL state management challenges with elegant serialization and router adapter solutions.