Home › Guides

How to stop Vercel building on every push

Vercel builds every connected project for every commit you push, on every branch: production on the production branch, a preview everywhere else. To build less, skip previews nobody looks at, skip projects a commit did not touch, and let one deploy cover many commits instead of one build per push.

Last updated · by Patrick Schmetzer, author of Deploy Center

1. See what is building

Open the project's Deployments tab and filter by Preview. Look for the patterns that cost the most: bot branches (Dependabot, Renovate), agent branches, and several projects building from one push to the same repository.

# the last deployments of a project, with branch and state
vercel ls my-project

2. Skip previews for bot and agent branches

Add this as the Ignored Build Step (Settings → Git, or ignoreCommand in vercel.json). Exit 0 skips, exit 1 builds.

bash -c 'case "$VERCEL_GIT_COMMIT_REF" in dependabot/*|renovate/*|claude/*|cursor/*) exit 0;; *) exit 1;; esac'

Change the branch prefixes to the ones your tools use. Previews for those branches stop; pull requests from people still get one.

3. Skip projects a commit did not touch

In a monorepo one push builds every project connected to the repository. Two ways to skip the ones that did not change:

4. Skip on demand with a commit message

bash -c 'echo "$VERCEL_GIT_COMMIT_MESSAGE" | grep -qiF "[skip deploy]" && exit 0 || exit 1'

A commit with [skip deploy] in its message then builds nothing. Only the newest commit of a push is checked.

5. Push less often

Commit as often as you like and push when a piece of work is done. Every push is a build per project; every commit is not. This is hard to keep up with AI coding agents, which push after each step: see Your agent pushes 40 times. You deploy once.

6. Deploy production on your schedule

The steps above cut previews. For production, turn off auto-deploy and deploy once when you are ready, for example at the end of the day. The disable auto-deploy guide has three ways; Deploy Center does it for every project at once and then deploys only what changed:

deploys vercel autodeploy-off --all
deploys deploy-changed --yes

Trade-offs. Fewer previews means fewer links to click in review. Deploying by hand means a fix is not live until you deploy it. Keep previews where people review, and skip them where nobody does.

Questions

Why does one push start several builds?

Every Vercel project connected to the repository builds on a push. A monorepo with a web app, docs and an admin app builds three times, even if only the docs changed.

Does Vercel support [skip ci]?

Do not rely on it. An Ignored Build Step that checks VERCEL_GIT_COMMIT_MESSAGE, as shown above, works on every plan and you control the phrase.

Do skipped builds cost money?

A skipped build is cancelled before the build command runs. Check your usage page to see how your plan counts it; it is far less than a full build.

How much can I save?

That depends on your pushes, projects and cost per build. The build cost calculator works it out with your numbers.

Do it for every project in one click.

Deploy Center is a free, open-source Mac app. It turns off auto-deploy on Vercel, Render, Netlify, Cloudflare Pages and more, shows the commits and PRs waiting to go live, and deploys what changed when you decide.