Your build succeeded. Your app still shows NOT_FOUND. Here is the actual cause, and the one change that prevents it from ever happening.
An overlay appears directly on top of Supabase and Lovable. No tab switching, no re-reading docs.
Copy your Project URL
Find the Project URL field below and click the copy icon. We will use this in Lovable’s environment settings.
Stylized preview. The real guide is interactive, not a screenshot.
If Vercel's build log shows a successful build, but opening your live app returns a 404 page reading NOT_FOUND, this is almost always the same root cause: a TanStack Start app needs one extra setting to run correctly on Vercel's serverless functions.
This file controls how your app is built. It already exists in your Lovable project, you are just adding a couple of lines to it, not creating anything new.
Update the config so Nitro turns on specifically when the VERCEL environment variable is present, and point the TanStack Start server entry at server. The actual change: export default defineConfig({ nitro: process.env.VERCEL ? true : false, tanstackStart: { server: { entry: "server" } } });
Vercel only rebuilds when it receives a new commit or you trigger a manual redeploy. If you already hit the 404, push this change and redeploy, do not just refresh the broken page.
MissionForge's own build flow adds this exact config change as a step before deploying for the first time, specifically so students never see the 404 at all.
Locally, your app can run its own small server however it likes. On Vercel, TanStack Start apps run as serverless functions instead, and Nitro is what packages your server code into a format Vercel's functions can actually execute. Without it enabled, Vercel serves your static files correctly but has nowhere to send requests that need the server, which is what shows up as a 404.
It is easy to read a 404 as something broken in your app's code. Here it usually means the opposite: your static build succeeded, but the routing layer on Vercel has no matching server function to hand the request to. Once Nitro is enabled for Vercel specifically, that routing gap closes and the error stops appearing on every subsequent deploy.
Want to build this for real instead of just reading about it?
A successful build means your files compiled correctly, it does not mean Vercel knows how to route requests to your app's server logic. TanStack Start apps need Nitro enabled specifically for Vercel, otherwise Vercel has no server function to send the request to, which shows up as NOT_FOUND.
Nitro packages your app's server code into a format that hosting platforms like Vercel can run as serverless functions. Without it, Vercel only serves your static assets, so any route that needs the server layer returns a 404.
This specific fix applies to TanStack Start apps deployed on Vercel. Other frameworks handle server rendering differently, so the same NOT_FOUND symptom on a different stack usually has a different cause.
Yes. Update your vite.config.ts the same way, then push the change or trigger a manual redeploy. The fix only takes effect on the next deploy, refreshing the broken page will not do anything.
No. The config checks for the VERCEL environment variable, which is only present on Vercel's infrastructure, so local development keeps running exactly as it did before.
Open your live app link after the new deploy finishes. If it loads instead of showing NOT_FOUND, the fix took. You can also check that the latest deploy's build log reflects the commit containing your vite.config.ts change.
Only enable it when process.env.VERCEL is present, so local development and other hosting providers are not affected.
Vercel needs a fresh build to pick up config changes. Saving the file by itself does not trigger a new deploy.
Confirm the latest deploy actually includes your vite.config.ts change before troubleshooting further.
The mission handles this proactively. Adding it after a live 404 just costs one extra redeploy instead of preventing the error entirely.
You're not the problem. The format is. Here's what changes when you switch to an interactive mission.
Looking for the next thing to build? Browse every mission and find one that matches what you are trying to ship.
Browse all missions