Keep AI services out of Client Components
This is not just a Next.js style preference. It is a security boundary. Cogweald keeps OpenAI,...
Tag archive
This is not just a Next.js style preference. It is a security boundary. Cogweald keeps OpenAI,...

What Is the Next.js App Router? The Next.js App Router is the modern routing system...
Vercel published v16.3.6 and v15.5.26 on the same day, September 22, 2026. I read both release notes on GitHub to see what goes into each branch and what it means for anyone who hasn't migrated to App Router 16 yet.
A 131-comment GitHub thread, three months, and two real fixes: what actually leaked memory in early App Router deployments, sourced from the issue itself.

global-error.tsx never renders in next dev — you see the red overlay instead. Documented, not a bug, with three checks to confirm it's wired right.
An onClick from a Server Component can't be passed as a prop — functions aren't serializable across the RSC boundary. Where "use client" goes.
The error names useState but fires for any hook in a Server Component tree. Where "use client" actually needs to go, and the mistake that hides it.
useRouter() throws this when it runs outside a real Pages Router tree — unit tests, Storybook, or an App Router migration. The three call-site fixes.
middleware.ts silently not running is almost always file location, a matcher excluding the route, or an Edge-incompatible import — checked in order.
Migrating Pages Router to App Router? Avoid cookies timing bugs, router.events removal, metadata conflicts, and auth middleware breaks.
I confused revalidatePath with revalidateTag on a small project and ended up invalidating pages that had nothing to do with the change. Here's the real difference between the two cache granularities in Next.js 16, with a decision checklist.
Next.js 15 made cookies() async — await cookies() in Server Components, Actions and Route Handlers. Covers the codemod and NEXT_STATIC_GEN_BAILOUT.