Skip to content
Blog

Monorepo vs Multiple Repos: When a Monorepo Isn't Worth It

Google's monorepo runs on decades of in-house tooling. With public tools, a monorepo can add overhead to smaller teams. When it pays off and what to do instead.

Development3 min read
AlejandroChief Technology Officer

The Appeal of the Monorepo

All code in one repository. Atomic changes that touch multiple packages. Internal dependencies always in sync. Trivial code reuse.

It sounds elegant. And for teams that need it, it is.

Why It Works for the Big Players

Google has internal tooling developed over decades. Thousands of engineers have refined build, testing, and deploy systems specifically for their scale.

When Google says monorepo works, they're talking about their monorepo with their tooling. Not the same concept applied with generic tools.

The Reality of Public Tooling

Turborepo, Nx, Lerna, pnpm workspaces. There are many options, and each has tradeoffs.

Setting up a functional monorepo requires significant effort. Build complexity increases. CI/CD needs optimizations to avoid running everything on every commit.

For a small team, that overhead can outweigh the benefits.

When Monorepo Adds Value

Multiple applications that share significant code. An internal SDK, UI components, common business logic. If you're copying code between repos, monorepo eliminates that duplication.

Frequent changes that cross package boundaries. If every feature requires modifying three repos and coordinating releases, monorepo simplifies the workflow.

A team that works across the entire stack. If the same people touch frontend, backend, and shared libraries, monorepo reduces friction.

When Monorepo Adds Complexity Without Value

Independent projects that happen to belong to the same organization. A blog and an e-commerce app don't need to be together.

Separate teams with different release cycles. The benefit of atomic changes disappears if teams don't coordinate.

Projects with very different technical stacks. A Go backend and a TypeScript frontend share little. Monorepo doesn't provide reuse.

The Testing Problem

In a monorepo, a change in a shared package can affect everything that depends on it. Testing systems must be smart enough to detect what to test.

Without that tooling, every change runs all tests. Or worse, it doesn't run the necessary tests and bugs reach production.

The Pragmatic Alternative

Separate repos with published packages. More ceremony to update shared dependencies, but less tooling complexity.

For small teams, the friction of maintaining versions may be less than the friction of setting up and maintaining a monorepo.

The Right Question

It's not "should I use monorepo?". It's "what problems do I have and does monorepo solve them better than the alternatives?".

If the answer is honest, many teams would discover that their real problems aren't the ones monorepo solves.

Keep reading

Related articles

Next step

Do you have a project in mind?

If this article was useful and you want to know how we can help, we are here to listen.