Monorepos became the default for companies with multiple related packages or applications in 2022-2025. The tooling to make them efficient — particularly remote caching and incremental builds — matured significantly in the same period.
Turborepo (Vercel, open-source) is the fastest-growing monorepo tool. It focuses on one thing: building a task graph and running tasks in optimal parallel order with caching. Define your pipeline in turbo.json (which tasks depend on which, what outputs to cache), and Turborepo handles incremental execution. Changed only the UI package? It rebuilds only that package and anything that depends on it. The remote cache (Vercel Remote Cache, or self-hosted options) means consecutive CI builds skip unchanged work entirely. Build times drop 70-90% for large monorepos. Turborepo is intentionally thin — it doesn't scaffold, doesn't enforce architecture, doesn't provide code generators. For teams who want fast builds and minimal opinions, Turborepo is the right pick.
Nx (Nrwl, open-source) is more comprehensive. It includes project scaffolding, code generation, enforced architecture boundaries (using module boundary rules), affected analysis (determine exactly which projects are affected by a diff), and a rich plugin ecosystem for Angular, React, Next.js, Node.js, and many others. Nx Cloud provides remote caching with a generous free tier (500 minutes/month). For enterprises with multiple apps, shared libraries, and teams that want guardrails on inter-package imports, Nx's module boundary enforcement is valuable. The tradeoff: more configuration and a steeper learning curve than Turborepo.
pnpm workspaces (with pnpm as the package manager) is the zero-tools baseline. pnpm's content-addressed storage deduplicates node_modules across packages, reducing disk usage by 60-80%. Workspace protocol (workspace:*) manages local package references. Without Turborepo or Nx, you lose incremental builds and remote caching, but many small monorepos work fine with just pnpm workspaces and no additional tooling.
Bazel (Google, open-source) is the nuclear option — a hermetic, language-agnostic build system used at Google, Uber, and other large engineering orgs. Bazel is extremely powerful (true hermeticity, artifact caching, arbitrary language support) and extremely complex to configure. The JavaScript/TypeScript rules (rules_js, rules_ts) are maintained by Aspect.build but require dedicated platform engineering. Bazel is worth the investment at 1,000+ engineers; it's overkill below that.
Practical guidance: pnpm workspaces for small monorepos (under 10 packages), Turborepo for fast incremental builds with minimal configuration, Nx for large teams needing code generation and architecture enforcement, Bazel for organizations with polyglot repos and dedicated build engineers.