useOptimistic in React 19: The Spinner I Finally Deleted
React 19's useOptimistic hook replaced my hand-rolled optimistic update code. The before and after, the rollback I deleted, and the two gotchas that bit me.
React 19's useOptimistic hook replaced my hand-rolled optimistic update code. The before and after, the rollback I deleted, and the two gotchas that bit me.
React 19 and the compiler quietly killed half the hooks advice I used to give. Here's what I dropped, what I kept, and the code…
I deleted about 200 lines of loading state using React 19 Suspense and use(). What worked, the caching bug I hit, and where to put…
React 19 turns ref into a regular prop, so forwardRef is on its way out. Here's how I migrate components, plus the codemod gaps and…
I moved nearly every mutation in two production Next.js apps onto Server Actions. Here is what got deleted, what useActionState fixed, and what still bites.
Eight months running React Server Components in production. The boundary patterns that worked, the bugs I shipped, and when I still pick client components.
useOptimistic in React 19 is the first optimistic UI API I actually shipped. Six months of production lessons: where it fits, where it doesn't, what…
I spent a Sunday turning on the React Compiler in a real Next.js app. Here's what I deleted, what bit me, and the eslint rule…
I avoided React Suspense for two years and was wrong. Six months in, here are the patterns that actually saved me, and where I still…
Six weeks with useActionState in React 19: where it kills useReducer, the error-handling pattern I use, and when I still reach for the old way.