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.
https://community.vercel.com/t/debugging-404-errors/437
A human should be around soon to offer more advice. But you can also get helpful information quickly by asking v0.
Hi Checkpc2012,
First, I’d edit the post and remove the project ID, deployment IDs, team name, and commit hash. They are not API keys, but they are still internal project/account identifiers that usually do not need to be public.
For the issue itself, the useful distinction is:
Generated deployment URL -> 401 because Deployment Protection is enabledStable production alias -> 404 NOT_FOUND at Vercel edge
That does make it look more like alias/routing state than a Next.js route problem, especially if the app build completed and the deployment is Ready.
I’d run these from the same Vercel scope:
vercel switchvercel alias ls --limit 100vercel inspect dpl_2B8FZLfK1UXNASiY8JjnpfHXcJGR
Then check whether 3t-app-staging.vercel.app appears exactly once and points to the current deployment. If there are old/stale aliases for the same project, remove the stale one and assign the alias again:
vercel alias rm 3t-app-staging.vercel.appvercel alias set dpl_2B8FZLfK1UXNASiY8JjnpfHXcJGR 3t-app-staging.vercel.app
If the CLI already shows the alias correctly assigned after re-setting it, but the public URL still returns:
X-Vercel-Error: NOT_FOUND
then I don’t think more app-code debugging will help much. At that point the useful public evidence is just:
Alias: 3t-app-staging.vercel.appDeployment state: ReadyAlias shown on deployment: yesPublic alias response: 404 NOT_FOUNDLatest X-Vercel-Id: gru1::82srb-1781564125375-b149eb9c7ef8Timestamp: 2026-06-15T22:55:24ZGenerated deployment URL returns 401 due to Deployment Protection
That should be enough for Vercel to check whether the alias exists in the control plane but has not propagated correctly to the edge routing layer.