A Monorepo Decision Guide for 2026 — Five Variables
The monorepo / polyrepo debate isn't unanswerable. It's *conditionally* answered. Five variables decide it. The pattern across seven cases.
"Monorepo is better / polyrepo is better" looks like an unanswerable debate. It isn't. There's a conditional answer. Five variables decide it.
This post is the pattern from seven customer projects and our own.
Variable 1 — number of teams
1–3 teams: monorepo nearly always wins
4–10 teams: inflection — other variables decide
11+ teams: polyrepo nearly always wins (unless you're Google/Meta with *heavy monorepo tooling investment*)This variable alone settles 50% of decisions. Small teams using polyrepo always pay integration cost greater than the isolation value.
Variable 2 — build infrastructure investment
Monorepo's fatal weakness is build time. Past a certain codebase size, small changes trigger whole-repo builds. To fix this you need incremental builds + caching + distributed builds.
Bazel / Buck / Nx / Turborepo exist, but adoption and maintenance need one or two dedicated engineers. Without that investment, the monorepo's first six months are good and afterwards build time grows exponentially.
Variable 3 — language diversity
1–2 languages: monorepo OK
3–5 languages: inflection — verify your build tools cover them all
6+ languages: prefer polyrepo (each language has its own ecosystem)Each added language reduces the fit of common build tooling. Rust + Go + Python + TypeScript is fine for Bazel. Past that, costs spike.
Variable 4 — deploy unit coupling
Do services deploy together or deploy separately?
Together → monorepo natural. Separately → polyrepo natural. Mixed — some together, some separately — is the hardest case. This is the territory of decomposable monorepo or coordinated polyrepo.
Variable 5 — external collaboration plans
If the repo will accept external contributions (open source, partner companies), that subset should be polyrepo. Mixing internal code with open-source code in one monorepo turns license, contribution, and release policy into hell.
Combining the five — decision matrix
Variable | Monorepo bias score
───────────────────────┼─────────────────────
Teams 1–3 | +3
Teams 4–10 | 0
Teams 11+ | −3
Build investment YES | +2
Build investment NO | −3
Languages 1–2 | +2
Languages 3–5 | 0
Languages 6+ | −2
Deploy together | +2
Deploy separately | −2
Mixed | 0
No external collab | +1
External collab | −1Sum:
- ≥ +5 → monorepo
- −2 to +4 → inflection, organizational culture variables decide
- ≤ −3 → polyrepo
Seven case scores
Case | Score | Decision | Outcome 1–2 years later
──────┼───────┼───────────┼─────────────────────────
A | +8 | Monorepo | Satisfied
B | +6 | Monorepo | Satisfied
C | +3 | Monorepo | Started splitting parts after 1 year
D | +1 | Polyrepo | Satisfied
E | −2 | Monorepo | *Regretted* (build time)
F | −4 | Polyrepo | Satisfied
G | −6 | Polyrepo | SatisfiedCase E is interesting. Six teams + no build investment + four languages + mixed deploys + no external collab — they chose monorepo. A year later, builds had grown from 15 minutes to 47. They started a partial polyrepo migration. Reading the matrix at the start would have made polyrepo cheaper from the beginning.
The most-frequently-wrong call
People overestimate build investment capability. "If we're disciplined we can adopt Bazel without much trouble." In reality, the dedicated time is at least one person for six months, and that time has to come out of the product. Without an explicit view of this trade-off, monorepo adoption usually leads to regret.
If you're an engineering lead about to choose between monorepo and polyrepo, start by scoring the five variables yourself. A sum in the −2 to +4 inflection band means delaying the decision by six months is also worth considering — team count and language count can shift in that time.
Related posts
When a Product Manager Ships Code, Who Owns the Outage?
In organizations where product managers write code with AI and several agents work at once, who checks what before a change reaches production? A role design for verification, approval, and recovery that is independent of the author, grounded in NIST SSDF, SLSA provenance, and the Google SRE postmortem culture.
John Baek
An Eclipse Plugin for the Agent Era — Task Context Was Already the Problem 20 Years Ago
The problem Mylyn set out to solve in the mid-2000s is the agent context problem. What changed is that the thing reading that context is no longer only a person.
Yeongsang Kim
A VS Code Extension for the Agent Era — What Developers Look At Now
Once writing code got cheap, a developer's time moved to judging and approving. Here is why those jobs cannot live outside the editor, and the choices behind the CollabOps VS Code extension.
Seungbaek Lee