ForgeFX
ForgeFX · Deployment · 11 August 2026

One setting, 39 apps,
and 95 minutes a push

Every app we own was queueing behind a single build machine. Not because of a plan limit or a bill — because one checkbox had never been ticked.

Before
98 min
typical push to live
After
3 min
typical push to live
Builds at once
1 → 39
observed, not configured
Cost
~$250/mo
vetoed for months at $3–6k

The cause

A push to our shared codebase wakes every app that might be affected. With one build machine, those builds ran one after another. So a release didn't cost one build — it cost all of them, in a line. Touch a file near the top of the repo and you woke 39 apps; the last one finished an hour and a half later.

The tell was hiding in plain sight: the actual building took about three minutes. Eighty-two to eighty-eight percent of the wait was queueing — and most of that was a push waiting on its own sibling builds. No amount of making builds faster could touch it.

Nine previous attempts missed it. They inherited a note saying build concurrency would cost $3,100–6,200 a month, and none re-checked. The real rate is $0.014 per build minute — about $250 a month at our volume. The veto was wrong by a factor of twelve to twenty-five, and it was the only thing standing in front of the fix.


The fix, in the Vercel dashboard

It is one radio button, per project.

Where to find it

  1. Open the project, e.g. vercel.com/forgefx/wm
  2. Settings → Build and Deployment
  3. Scroll past Build Machine to On-Demand Concurrent Builds

Direct link: vercel.com/forgefx/<project>/settings/build-and-deployment

What the panel looks like

Project Settings  /  Build and Deployment

On-Demand Concurrent Builds

Skip the build queue and build deployments immediately. Usage costs apply per build minute.
Run all builds immediately what we set
Skip the queue for all builds
Run up to one build per branch
New deployments within a branch are queued
Disable on-demand concurrent builds what it was
Builds are queued, maximum of one at a time

Panel redrawn from the live dashboard — wording and states are exact, but this is a drawing, not a screen capture. Open the link above to see the real one.

The bottom option — “Builds are queued, maximum of one at a time” — is what all 39 projects were on. Nothing in the interface warns you what that costs across a shared codebase.


Three things that made it hard to find

So it now defends itself


What is still not fixed

Queueing is solved — the wait for a machine is now about one second. But the tail is not clean. Downloading the codebase before a build normally takes 58 seconds; during US business hours it sometimes collapses to a crawl and takes 21 minutes, on identical files. Same commit, machines starting seconds apart: one app finished in 53 seconds while another took 34 minutes.

Overnight it never happens — 137 consecutive clean builds. It is congestion upstream, not our repository being large: the biggest checkout of the day produced the fastest downloads. A controlled experiment is queued to settle whether size matters at all before we spend another week assuming it does.

Measured over full paginated deployment history, 2,865 records across 24 hours, clone times read from build logs rather than inferred. Before/after figures are median push-to-live. Written 2026-08-11.