Preview deployments return 404 on every path (including static assets) despite successful builds

Project: vendor-itc-recovery-agent (team: flawlessfocus-projects)

Symptom: Every Preview deployment in this project builds successfully (“Ready”), but every request to it — including /favicon.ico, a static asset that touches no application code — returns Vercel’s own generic routing-layer 404 ("The page could not be found / NOT_FOUND", plain text, not a Next.js 404 page). Production deployments (branch main) on this same project route correctly and reach the application.

Ruled out on our end:

  • Application code — tested with a middleware/proxy file present and with it completely removed; identical 404 both times, even on paths unrelated to that file.
  • Build cache — redeployed with cache disabled; identical result.
  • Deployment Protection — turned off “Vercel Authentication,” retested in a normal browser and incognito; identical result, no auth screen ever shown.
  • No vercel.json or custom routing config in the repo.

Evidence — branch fix/proxy-node-runtime:

Commit URL Result
2c26123 vendor-itc-recovery-agent-a4ggr4kvz-flawlessfocus-projects.vercel.app 404 on every path
a2a7e02 vendor-itc-recovery-agent-6at6lwljc-flawlessfocus-projects.vercel.app 404 on every path

Sample request IDs: yul1::jhf4m-1785391930681-882e3cea21bb, yul1::lv976-1785391949988-c62c5dc0b65a, yul1::h22jm-1785391950069-e99bbdb9fb13, yul1::bw2nl-1785391768160-ebfc17684b7f, yul1::nj9jp-1785391930760-a63c960d092f

Build cache IDs: BwQsWD5BoXjd36DNvQJeRMpQQNYu, 53ZxcrTNxoqLo7DK2R9kQPufeoZL

Runtime Logs show zero entries for these Preview deployments when the URL is requested.

Question: Does this look like a corrupted/misconfigured internal routing state specific to Preview deployments on this project? Is it fixable without deleting and re-importing the project?

There’s another community post with 404 debugging tips that might be helpful. Please give these solutions a try and let us know how it goes.

A human should be around soon to offer more advice. But you can also get helpful information quickly by asking v0.

There are a lot of possible causes. I hope you were already able to solve it using the tips shared by the bot. If not, it would be helpful to see the site and code to get a better understanding of what’s going wrong in this case.

Are you able to share a minimal reproducible example or a publicly accessible URL for the site?