TanStack Query in 2026: What I Reach For Instead of useEffect
Why I stopped writing useEffect-for-data-fetching and what TanStack Query actually replaces in 2026, with real before/after code from production.
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.
After 4 years with Tailwind, I extract components way later than guides suggest. Here's what earns a real component, what stays inline, and why my…
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 sat on the Tailwind v4 upgrade for three months. Here's what actually broke when I migrated a production Next.js app, and what I'd do…
Stage 3 decorators in TypeScript 5+ are finally something I use without flinching. Here is when they earn their keep, and four times I still…
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…