forwardRef in React 19: Why I Stopped Writing It
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…
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…
Tailwind v4 dropped the darkMode config key. Here is how dark mode works now: one CSS custom-variant line, the theme-flash fix, and a real system…
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.
I shipped the same marketing site in Next.js and then in Astro, then kept score. Here's when I actually reach for each, with bundle numbers…
Tailwind v4 ships container queries in core. Here's the rewrite that stopped my product cards from breaking in sidebars, and where I still avoid them.
Why I stopped writing useEffect-for-data-fetching and what TanStack Query actually replaces in 2026, with real before/after code from production.
I shipped chat UIs the hard way before Vercel AI SDK existed. Here's what useChat, streamText, and tools v5 actually replaced in my production apps.
Pages Router in Next.js isn't legacy in 2026. Here's when I still reach for it instead of App Router on real production projects, with code…
I migrated five apps between monorepo and polyrepo three times in a year. Here's the framework that finally stuck, and the tools I actually pick…
Eight months running React Server Components in production. The boundary patterns that worked, the bugs I shipped, and when I still pick client components.