
Next.js on Vercel: instrumentation, after() and Lost Work
Why background work in a serverless function silently disappears, how after() keeps it alive, what instrumentation.ts is for, and making side effects reliable.
Writing
10 write-ups from production, newest first. Each one is a problem hit on a real project and how it was diagnosed and fixed.

Why background work in a serverless function silently disappears, how after() keeps it alive, what instrumentation.ts is for, and making side effects reliable.

Vercel Image Optimization returning 402 quota exceeded in production? Here is what triggers the cap and the config fix that stops the bill from rising.

Next.js 16 Link prefetch is blowing through your Vercel Edge request budget? Here is why hover-prefetch fires twice and the config that brings it back to sane.

Next.js Server Action throws 413 Content Too Large for file uploads after deploying to Vercel? Here is why the 4 MB body limit fires and how to fix it.

Vercel middleware doing geo redirects spiking TTFB to 800ms? Here is the runtime, header, and edge config fix that cuts it back under 100ms.

Next.js 16 instrumentation.ts register hook silent on Vercel after upgrade? Here is the runtime, location, and onRequestError fix that gets it firing again.

Next.js 16.2 Turbopack production build crashing with JavaScript heap out of memory on Vercel? Here is what changed and the build config that gets it green.

Next.js 16 ImageResponse route returning 500 in production but fine locally? Here is the font fetch, edge runtime, and cache fix that solves it for good.

Next.js 16.2 dynamic OG image returning 404 in production but working in dev? Here is why ImageResponse breaks on Vercel and the runtime fix that ships.

Next.js after() callback fires in dev but never runs in production on Vercel? Fix the cache directive, runtime, and proxy interaction with working code.