Matt Turley, Continuum. Updated November 5, 2026.
For founders whose app works on a laptop and on a preview URL, then shows nothing at all on the real domain.
A white screen means the browser got HTML but the JavaScript threw before anything rendered, or its files failed to load. Open the browser console and the Network tab first. A red error names the cause, and a 404 on a /_next/static file points to a deploy or cache mismatch. The most common cause is a missing Production environment variable.
A white page is not an error message; it is the absence of one. The server returned a document, and then the client-side code either crashed while starting, or never started. Both leave the same blank screen, and both leave evidence in the browser console and, for server-side failures, in the Vercel runtime logs.
The reason it works locally is that a local machine quietly supplies things production does not: a .env.local file, a different Node version, a case-insensitive file system and a database that already has your tables. Production gets only what you configured for it.
AI builders make this worse by writing code that reads an environment variable at the top of a file and assumes it exists. When it does not, the whole page fails at import time instead of showing a useful error.
How to tell Console errors such as "supabaseUrl is required", "Invalid URL" or "Cannot read properties of undefined". Vercel keeps separate Production, Preview and Development values, so a variable you added once may exist for Preview only.
The fix Add the variable under the Production environment in the project settings, then redeploy. Variables prefixed NEXT_PUBLIC_ are inlined at build time, so changing one requires a new build, not just a restart.
How to tell The page says "Application error: a server-side exception has occurred" and shows a digest value. The real message is not shown to visitors on purpose.
The fix Search the Vercel runtime logs for the digest to find the actual stack trace. Typical causes are a failed database query in a server component or a missing secret read on the server.
How to tell Console messages such as "window is not defined" or "Hydration failed because the initial UI does not match". Code reads window, localStorage or the current time while rendering, so the server HTML and the client disagree.
The fix Move browser-only reads into an effect, or into a client component loaded without server rendering, and make values that differ between server and client (dates, random ids) stable.
How to tell Network tab shows 404 on a file under /_next/static, or the console shows "ChunkLoadError". An open tab from the previous deploy asks for chunks that no longer exist, or a service worker is serving an old shell.
The fix A hard refresh confirms it. Remove any stale service worker, and look at your host's skew protection setting so old tabs keep their matching assets during a rollout.
How to tell The project config sets ignoreBuildErrors or ignores lint during builds, so a type error or a bad import shipped. Build logs show warnings that nobody read.
The fix Run next build and next start locally with the production environment variables. Treat build errors as errors again, and fix what they reveal.
How to tell The tab spins, then the browser reports too many redirects, or the page is blank. Often only the production domain loops because a cookie is set for a different host (www versus apex) than the one being checked.
The fix Use one canonical host, make sure the middleware matcher excludes the login and callback routes, and check that the session cookie domain matches the live domain.
If the console shows a single clear error and it names a variable or a file, you can fix it yourself in a few minutes, and an AI assistant given the exact error is a good first try. Come to us when the page is still blank after the environment is correct, or when the app is live and every minute of the outage costs you users.
The Leak Check is free and tells you in under a minute whether the live site is reachable, loads over SSL and exposes anything it should not. If the page is up but the app is unstable, a Ship Check reads the code for what will break next.
free Leak Check: Paste your live URL. It runs seven surface checks (reachability, SSL, auth flow, payment path, exposed secrets in the client bundle, Supabase exposure, broken links and performance) and returns a green, yellow or red for each. It is a surface scan, not a full security audit. Or: Get a Ship Check, $299.