Project: pipeflow-crm (team smac5), Next.js 16.3.0, Turbopack (default bundler).
Symptom: The statically pre-rendered "/" route serves an HTML page referencing a CSS chunk (/_next/static/chunks/*.css) that returns 404 — the file doesn't exist in that same deployment's static output. Buttons/theme render with wrong fallback styles as a result.
What I've ruled out, with evidence:
- Not client/CDN cache — tested via direct curl, incognito tabs, and the deployment-specific
.vercel.appURL (not the aliased custom domain), all with the same result. - Not the Vercel Edge cache — did a full "Purge Cache" (CDN, ISR, and Image Cache, "All content") from Settings > CDN > Caches; problem persisted immediately after, with
X-Vercel-Cache: PRERENDER(not HIT) on the response. - Not build cache reuse — did a manual Redeploy with "Use existing Build Cache" unchecked. Build logs confirmed:
Skipping build cache, deployment was triggered without cache.Problem persisted on that exact deployment's unique URL. - Not a hash-salt/reuse quirk — added
outputHashSalt(new in Next 16.3) tonext.config.mjsand redeployed clean. The referenced CSS hash did change (proving it's a genuinely fresh build), but the new hash also 404s. - Not a Middleware/Proxy issue — my
proxy.tsmatcher already excludes_next/staticentirely; a request to that path should never reach the proxy handler regardless. - Not the source code — a local build of the exact same commit (
npm run build) produces a CSS chunk whose filename is always consistent between the pre-rendered HTML and the actual.next/static/chunks/output. No mismatch locally, ever.
So across 3 separate deployments (different CSS hashes each time, confirming freshness), the pattern is 100% consistent: whatever CSS filename Vercel's build embeds into the "/" route's pre-rendered HTML, that exact file is missing from _next/static/chunks/ in the deployed output. This looks like a genuine mismatch between Turbopack's prerender manifest and the static assets actually uploaded/served for that deployment.
I opened a support case via the Vercel Agent tool, which reproduced/confirmed the pattern across my tests but couldn't inspect the deployment's file artifacts directly, and the case couldn't be escalated further on the Hobby plan (no engineering ticket support).
Question: has anyone else hit this specific Turbopack + Next 16 chunk-manifest-vs-output mismatch on Vercel? Is there a known workaround besides falling back to next build --webpack? I'd like to avoid switching bundlers if possible since Turbopack is otherwise working fine (build succeeds, dynamic routes work normally — it's specifically the static "/" route's CSS reference that's broken).
Deployment IDs for reference: BV3UBds1S (commit 0f19216), 9ysEVYoPi (commit 6dea0e0, with outputHashSalt applied).