|Methods

Why We Stopped Using Monorepos

Monorepos promised simplicity. For our team size and deployment cadence, they delivered the opposite. Here's what we switched to and why.

Every startup guide says monorepos are the way. One repo, one source of truth, shared tooling. We bought in completely.

What went wrong

The problem wasn't the monorepo itself. It was the mismatch between monorepo assumptions and how a four-person team actually ships.

CI times ballooned. A one-line copy change triggered a full rebuild. Our deploy pipeline couldn't distinguish between a marketing site tweak and an API change.

The breaking point

We shipped a bug to production because a seemingly unrelated package change broke a shared utility. The blast radius of every commit was the entire product.

What we do now

Each service gets its own repo. Shared code lives in a private npm registry. Deploys are isolated. CI runs in under two minutes.

The tradeoff

We lost atomic cross-service commits. That's real. But we gained deploy confidence, faster feedback loops, and the ability to ship without coordinating with the entire team.

The right repo strategy depends on your team size, deploy frequency, and tolerance for coordination overhead. For us, smaller repos won.