i keep burning evenings on deploys that fail after a clean local build. same repo, same commit, red only after i push. these are the checks that actually catch it for me.
import case
your laptop often ignores letter case. vercel runs linux, and it does not. Button.tsx imported as button.tsx will pass locally and die on vercel. look at new files and every import that points at them.env vars that never left your machine
next dev happily reads .env.local. vercel does not get that file. if a build or a server file reads a key that exists only on your laptop, the deploy fails or the page comes back empty. copy the names into the project env settings, then redeploy.lint that next build treats as a hard fail
next dev can feel fine while next build stops on eslint errors. vercel runs the production build. run next build at home before you push, not just the dev server.server-only code that slipped into the client bundle
a file that uses fs, path, or a secret imported from a client component will blow up on vercel even if the local dev server looked okay. keep those imports on the server side.files that are not actually in git
a component that exists on disk but is gitignored, or a rename that git did not pick up, will be missing on vercel. git status before you push saves that one.
if you want a faster pass: paste a public github repo into this preflight and it checks those breakers before you push. one free scan a day. private repos and extra scans are $2 for 24 hours.
https://deploydoctor.nyttolabs.com
curious what your first check is when local is green and vercel is not.