---
title: "Introducing the Enhanced Monorepo Experience on Netlify"
description: "Announcing several changes that make it easier for everyone to deploy monorepo-based sites on Netlify."
source: "https://www.netlify.com/blog/better-monorepos-on-netlify/"
last_updated: "2026-07-10T19:44:00.000Z"
---
Modern enterprises are increasingly gravitating towards monorepos, which is a testament to the efficiency and streamlined workflows that monorepos offer. With monorepo tooling like [Nx](https://nx.dev/), [Lerna](https://lerna.js.org/), or [Turborepo](https://turbo.build/) gaining more traction, the community is embracing this paradigm as well. Today, we’re excited to announce several changes that make it easier for everyone to deploy monorepo-based sites on Netlify.

> A monorepo, often referred to as a monolithic repository, is a single repository that contains multiple projects. These projects can be unrelated, loosely coupled, or tightly coupled. Typical implementations of monorepos include the use of tools like Nx, PNPM, or Yarn Workspaces.

## Improved setup flow for monorepos

Our revamped setup interface scans the linked git repository and identifies the package manager, the build system, and the frameworks the repository’s sites are using. The setup screen now displays deployable sites within a monorepo through a site picker and proposes a complete configuration for the site, so that all that’s left for you is to deploy.

Here’s how the setup screen looks like when Netlify has identified that the imported git repository is a monorepo: ![](https://cdn.sanity.io/images/o0o2tn5x/production/e62cc1aa7dab1adfb6780724942748dd558f50d3-2509x2890.png?auto=format)

In the example above, we’ve identified that the repository uses Nx, the sites that are included in the repo, and the optimal build settings for each of the sites. To deploy a different site, you can use the dropdown menu. ![](https://cdn.sanity.io/images/o0o2tn5x/production/fc094806c70bc555d2b53cfd92ac2adb6a019d9c-1268x1000.png?auto=format)

If the site isn’t automatically recognized, you can choose `Other (configure manually)` from the list, which allows for a **[manual set up of the site](https://docs.netlify.com/configure-builds/monorepos/#manual-configuration)**.

Beyond auto-populating the build command, we designate the Base directory (where dependency installation and build command execution occur) to the repository’s root.

Additionally, we identify a _Package directory_, which will be used to access configuration files such as `netlify.toml`, `_redirects`, or `_headers`. You can later inspect and edit these fields under **Site configuration > Build & deploy > Continuous deployment > Build settings** once your site setup is complete.

### Recommended settings for a monorepo

For those considering deploying multiple sites from a monorepo, we recommend housing the configuration files (`netlify.toml`, `_redirects` and `_headers`) within the Package directory, without changing the Base directory.

Here’s an example directory structure for a monorepo containing two separate sites:

```
repository-root/├─ apps/│  ├─ app-1/│  │  ├─ package.json│  │  ├─ **netlify.toml**│  ││  ├─ app-2/│  │  ├─ package.json│  │  ├─ **netlify.toml**│  │  ├─ **_redirects**│├─ packages/│  ├─ component-library/│  │  ├─ package.json│├─ package.json
```

For the example above, the **Package directory** can be configured within the UI to retrieve the associated configuration files from one of the two sites. We recommend leaving **Base directory** unset to ensure that both the build command execution and dependency installation run from the repository’s root.

![](https://cdn.sanity.io/images/o0o2tn5x/production/039475087732fe0854d016da5b99292e110b072e-1914x1196.png?auto=format)

### Netlify configuration files

Within the `netlify.toml` configuration file, all paths are set relative to the base directory, regardless of the location of the `netlify.toml` file. If the base directory is not set, it would point to the repository root, all the specified paths must be defined in relation to this root.

For instance, a configuration file located at `apps/app-1/netlify.toml` would now look as follows:

```
[build]publish = "apps/app-1/dist"edge_functions = "apps/app-1/custom-edge-functions-dir"
[functions]directory = "apps/app-1/my_functions"
# An example local build plugin[[plugins]]package = "apps/app-1/custom-build-plugin"
```

This configuration strategy streamlines scenarios where the `dist` directory resides at the repository root or when there’s a need to share a build plugin across multiple sites. In such instances, you can easily specify a straightforward path originating from the repository root.

## Improved local development for monorepos

Today, we’re also improving the local development experience for monorepos using the Netlify CLI. Previously, the need to switch directories when managing multiple sites, coupled with our build command detection’s lack of awareness of build tooling, often demanded extensive manual configuration.

Starting with version `16.0.0`, running `netlify dev` at the root of your monorepo will show a site selection prompt, which mirrors the site picker from the setup screen.

![](https://cdn.sanity.io/images/o0o2tn5x/production/d4372b60c82f169cb9ff7464236c299bddd58eb9-1840x454.png?auto=format)

We’ve also introduced a `--filter <site-name>` or `--filter <packagePath>` , allowing the CLI commands to target a specific site from the monorepo.

This allows allows commands like `dev` , `build`, `functions`, and others. to run from the repo root instead of changing the working directory. ![](https://cdn.sanity.io/images/o0o2tn5x/production/ae220cc6a23c31c3ca43adbfb8bff52fb04560a3-2246x912.png?auto=format)

Executing commands from the repository root is essential to emulate the production behavior of our build pipeline. This approach aligns with the absolute paths specified in the configuration file, which are now anchored to the repository root.

## Try it out today

You can learn more about how monorepos work on Netlify and interact with other features [in our docs](https://docs.netlify.com/configure-builds/monorepos/), and if you’d like a preview of the new settings, you can use our [monorepo example](https://github.com/netlify/netlify-nx-integrated). Please try it out today, and let us know what you think on [the forums](https://answers.netlify.com/c/features/50)!

### Share

-   [X (fka Twitter)](https://twitter.com/intent/tweet?text=Introducing the Enhanced Monorepo Experience on Netlify&url=https://www.netlify.com/blog/better-monorepos-on-netlify/)
-   [LinkedIn](https://www.linkedin.com/shareArticle?mini=true&url=https%3A%2F%2Fwww.netlify.com%2Fblog%2Fbetter-monorepos-on-netlify%2F)
-   [Facebook](https://www.facebook.com/sharer.php?u=https://www.netlify.com/blog/better-monorepos-on-netlify/)
-   [Bluesky](https://bsky.app/intent/compose?text=Introducing the Enhanced Monorepo Experience on Netlify+https://www.netlify.com/blog/better-monorepos-on-netlify/)

* * *

### Tags

-   [changelog](/blog/tags/changelog/)
-   [Build](/blog/tags/Build/)
-   [monorepo](/blog/tags/monorepo/)

## Keep reading

![](/images/blog-fallback-thumbnail.svg)

News & Announcements October 9, 2019

[

### Launching Monorepo support for Netlify sites

](/blog/2019/10/09/launching-monorepo-support-for-netlify-sites/)

-   ![Profile picture of Shayon Mukherjee](/_astro/074eaba8d71decf61c5742040d09646d8856472b-80x80_1dbi4T.webp)
    
    Shayon Mukherjee
    

![](/_astro/eb275ddb9290b947ba4c53ac30538c77b44edae9-720x405_1y2MXK.webp)

News & Announcements June 25, 2026

[

### Netlify Functions, designed for Agent Experience

](/blog/netlify-functions-designed-for-agent-experience)

-   ![Profile picture of Eduardo Bouças](/_astro/52958f21e8450baf6d8e60302341a984e220c0cd-512x512_13VDlu.webp)
    
    Eduardo Bouças
    

## Recent posts

News & Announcements June 25, 2026

[

### Netlify Functions, designed for Agent Experience

](/blog/netlify-functions-designed-for-agent-experience)

-   ![Profile picture of Eduardo Bouças](/_astro/52958f21e8450baf6d8e60302341a984e220c0cd-512x512_13VDlu.webp)
    
    Eduardo Bouças
    

News & Announcements June 24, 2026

[

### How we measure Netlify’s Agent Experience

](/blog/how-we-measure-netlify-agent-experience)

-   ![Profile picture of Sean Roberts](/_astro/bbf2243f8171dbddd80ab2103622106cef84d125-512x512_Z1d2LKE.webp)
    
    Sean Roberts
    

Guides & Tutorials May 15, 2026

[

### How to build a real-time AI chatbot in minutes with Netlify Agent Runners (no backend)

](/blog/how-to-build-a-real-time-ai-chatbot-in-minutes-with-netlify-agent-runners-no-backend)

-   ![Profile picture of Nahrin Jalal](/_astro/f0e7c8f227a03fe58340c99ef5439d5a896c0733-272x272_Z23kDpD.webp)
    
    Nahrin Jalal
    

![](/_astro/3f255b372fa958df35802666ee33b4609b2d71bd-1200x1586_1VtE2D.webp)

### How do the best dev and marketing teams work together?

[Access the report](https://www.netlify.com/reports/2024-leadership-trend-report/access/)