Monorepo Pros and Cons

Greg Foster
Greg Foster
Graphite software engineer


Note

This guide explains this concept in vanilla Git. For Graphite documentation, see our CLI docs.


The decision to use a monorepo involves weighing its advantages against the potential drawbacks. Here's an objective look at both sides of the coin, illustrated with real-world scenarios.

Pros of Using a Monorepo

  • Centralized Configuration: All configurations and tests are stored in one place, which simplifies the setup for CI/CD and bundling. This centralization allows for reusing configurations to build all packages, thus simplifying the pipeline process​​.

  • Atomic Commits: Refactoring and global feature updates are easier with atomic commits. Instead of multiple pull requests across repositories, a single atomic pull request can encompass all related changes​​.

  • Simplified Package Publishing: A monorepo can streamline the process of building and publishing packages, as everything is located in one repository​​.

Cons of Using a Monorepo

  • Complexity and Risk: The risk of things going awry can be high, although cleanup in a monorepo can be more straightforward compared to multi-repo setups. The context, such as project complexity and team communication, plays a key role in managing these risks​​.

  • Potential for Silos: Large teams may inadvertently create silos within a monorepo, leading to inconsistent coding styles, frameworks, and testing practices. This can complicate the integration of various components into a single cohesive product​​.

Real-World Scenarios

Companies like Uber have faced challenges with multi-repo setups leading to silos and dependency management issues. Their shift back to a monorepo, with a renewed focus on tooling and workflows, exemplifies how large companies can leverage monorepos to feel like small, nimble organizations​​.

Conclusion

Whether a monorepo is the right choice depends on the specific needs of your team and project. It requires the right tools and workflows to be in place and, like any architectural decision, comes with trade-offs that need to be carefully considered.

On this page
Git inspired
Graphite's CLI and VS Code extension make working with Git effortless.
Learn more

Graphite
Git stacked on GitHub

Stacked pull requests are easier to read, easier to write, and easier to manage.
Teams that stack ship better software, faster.

Or install our CLI.
Product Screenshot 1
Product Screenshot 2