Turbo 2.11.7 vs Lage 2.17.0 on a 4-package diamond npm workspace (250k-iter build scripts): cold wall medians 1,974 ms vs 3,007 ms (~1.5x); Turbo warm 4/4 cache hits ~0.50 s; Lage warm ~1.49 s. Lage required git init.
4 min read
I timed Turbo 2.11.7 and Lage 2.17.0 on the same 4-package npm workspace with a diamond task graph: cold build wall medians were 1.97 s for Turbo and 3.01 s for Lage (about 1.5x). After Turbo populated its cache, warm runs hit 4/4 cached tasks in about 0.50 s; Lage warm runs stayed near 1.49 s on this box.
Short answer: pick Turbo if cold and warm local loops matter and you are fine with Turborepo's cache model. Stay on Lage if you already live in that Microsoft pipeline and your graph is git-backed. No affiliate links in this post.
| Metric | Turbo 2.11.7 | Lage 2.17.0 |
|---|---|---|
| Cold wall median (5 runs, caches wiped) | 1,974 ms | 3,007 ms |
| Tool-reported cold median | ~1.47 s | ~2.07 s |
| Warm wall after cache populate | ~0.50 s (4/4 cached) | ~1.49 s |
| Packages / graph | 4 / diamond | 4 / diamond |
On this fixture, yes for cold. Turbo's wall clock was about 1.5x lower. The work inside each package was identical, so the gap is orchestrator overhead plus scheduling, not the Math.sqrt loop alone.
For the other monorepo runner decision already on this site, see Turbo vs Nx. Recent Turbo point-release notes live in the Turborepo 2.11.7 post.
For day-to-day loops, yes. Once tasks were cached, Turbo returned in about half a second with 4/4 cache hits. Lage's warm series on this box stayed near 1.5 s. If you restart builds constantly while editing one leaf package, that warm number is what you feel.
Who should not treat warm cache as free: CI agents that wipe the workspace every job, or teams without a remote cache. Then you live on the cold ranking again.
| Situation | My pick |
|---|---|
| npm/pnpm workspace, want fast local cache hits | Turbo |
| Already on Turborepo remote cache / Vercel | Stay on Turbo |
| Pipeline already standardized on Lage + git hashes | Stay on Lage |
| Need a git repo just to run the task runner | Budget for Lage's git requirement |
| Comparing against Nx instead of Lage | Read Turbo vs Nx |
Bottom line: 1.97 s versus 3.01 s cold, plus ~0.50 s Turbo cache hits, is the decision pair for me. Who should not switch yet: large Lage shops where remote cache, custom pipelines, and team muscle memory dwarf a one-second cold gap. For install speed around either tool, see pnpm vs npm vs Bun; for bundler choices inside the packages, see Rspack vs webpack and Vite vs Parcel.
How this was made: I built a 4-package diamond workspace, installed Turbo and Lage on the ShopperCove test box, timed interleaved cold builds and warm cache runs, and kept the JSON; the write-up was drafted with AI help and checked against that output.
Lab evidence
Hands-on on ShopperCove box 5 Oct 2026 ~23:54-00:00 IST (8 vCPU Intel Xeon / 15 GB shared Linux, Node 20.19.2, npm 9.2.0). Fixture: /workspace/bench-turbo-lage/ — workspaces @bench/a,b,c,d diamond graph; each build writes dist/out.txt after 250k Math.sqrt. Tools: turbo 2.11.7, lage 2.17.0. Cold: wiped .turbo/.lage/dist; 5 interleaved pairs with turbo --force and lage --no-cache; wall medians 1974 ms vs 3007 ms (tool-reported ~1471/~2070 ms). Warm: Turbo 4/4 cached ~0.50 s; Lage ~1.49 s. Lage needed git repository. Raw: /workspace/bench-turbo-lage/res-turbo-lage.json. Not tested: remote cache, PnP, pnpm/Yarn, Windows/macOS, Nx (separate post), large affected filters. No affiliate.
Turborepo published turbo@2.11.7 on 2 October 2026: SDKROOT passthrough for repository tasks and quieter Vercel OIDC rotation in .env.local cache inputs, on top of 2.11.6 task tags. Upgrade checklist only; no affiliate.
Summary5 Oct 20264 min read
Hands-on6 Oct 20264 min read
Hands-on6 Oct 20264 min read