VVibeFix

Guide

404 on Vercel right after deployment

Updated

A deployment on Vercel can show Ready and still return 404, because Ready only confirms the build succeeded. If your .vercel.app URL works and only your custom domain 404s, the problem is DNS or domain configuration. If both URLs 404, the problem is in the build output or the routing manifest. This applies to apps deployed on Vercel.

Get it fixed: a free check first confirms the problem on your live app, usually in 4 to 10 minutes.

Free. No account needed. It usually takes 4 to 10 minutes.

Want it fixed? Our AI agent fixes it in your code and tests your live app again. See pricing.

Fixed in your code, then tested live. Check my app free

Why it happens

Vercel routes from metadata generated at build time, not from a live filesystem, so a request can 404 before any file lookup runs. A Ready status confirms the build succeeded and the deployment exists, but it does not confirm that routing works. Local Next.js development (next dev and next start) routes from the filesystem, so it never exercises that metadata.

Possible causes

Official fix steps

  1. Run the two-URL test: check whether the .vercel.app URL serves your content, and if it does while the custom domain 404s, look at DNS. (vercel.com)
  2. Check the Output tab on the deployment's details page for the expected files, to separate a build problem from a routing problem. (vercel.com)
  3. Check Runtime Logs filtered for 404s, and look for missing function invocations on dynamic routes. (vercel.com)
  4. Open Project Settings, then Build and Deployment, go to Framework Settings, select the correct framework, and redeploy. (vercel.com)
  5. Confirm in Project Settings that the Output Directory matches the actual build output. (vercel.com)
  6. For a single-page app, add a catch-all rewrite in vercel.json at the repository root and commit it to Git. (vercel.com)
  7. For Next.js, configure rewrites in next.config.js and remove them from vercel.json so the two do not conflict. (vercel.com)
  8. For Next.js dynamic routes that 404, make sure the route is configured for dynamic rendering, or that generateStaticParams is paired with dynamicParams set to true. Forcing dynamic rendering means a function runs on every request, so use it only where the route needs per-request data. (vercel.com)
  9. For a custom domain that 404s, make sure the A record (apex domain) or CNAME record (subdomain) matches exactly what Vercel shows under Domains in Project Settings, and remove outdated records from a previous host. (vercel.com)
  10. If an external CDN or proxy sits in front of Vercel, disable caching there and point it at the current production deployment. (vercel.com)

You can't see it yourself

You're signed in, your customers aren't. Local Next.js development routes from the filesystem rather than from the routing metadata the CDN uses. The routing manifest is generated during the build, so local success tells you nothing about whether that manifest exists.

Get it fixed: a free check first confirms the problem on your live app, usually in 4 to 10 minutes.

Free. No account needed. It usually takes 4 to 10 minutes.

Want it fixed? Our AI agent fixes it in your code and tests your live app again. See pricing.

What to do next

App broke after you published it? Our AI agent fixes it in your code, then tests your live app again so you see the result yourself. The first check is free.

Fixed in your code, then tested live. Check my app free

Related: Works in the preview but not after publishing · "Page not found" on refresh or a shared link · Blank page after publish: causes and how to fix it

Sources

VibeFix's free check can show this on your live app: our AI agent tries your live app like a new user and shows you what breaks. On request, it reviews your code independently (VibeFix isn't part of any app builder), fixes it in your code and re-checks it live.

Last checked: 6 November 2026, against the sources listed above.

VibeFix is independent. Lovable, Bolt, Replit, Base44, v0 and Supabase are trademarks of their owners.

Want it fixed?

Our AI agent fixes it in your code and tests your live app again. See pricing.

It starts with a free check that confirms the problem on your live app, no account needed.

Check my app free

More guides