This is expected behavior with monorepos on Vercel. Even if a build is skipped, it still counts toward your deployment limit because Vercel has to spin up the process long enough to decide whether the build should be skipped in the first place.
One way to reduce unnecessary deployments is to use a custom ignored build step in your vercel.json, for example:
{ "ignoreCommand": "npx turbo-ignore" }
This gives you more control than relying on the default skip logic, and you can even write your own script if you want to check changes only in certain workspaces.
If you're using Turborepo, turbo-ignore is built exactly for this scenario and can help cut down on needless deploys. Another option is git-based path filtering, where you tell Vercel which directories should and shouldn’t trigger deployments. For example:
That said, there’s no way on the Hobby plan to prevent skipped deploys from counting entirely. If you’re regularly hitting the 100-deployment cap, upgrading to Pro (6,000 deployments/month) might be the practical long-term fix.
Resources if you need them: