
Hosting · · 9 min read
How to deploy apps from a monorepo in 2026
One project per app, a root directory each, and rules for which pushes rebuild what: how Vercel, Netlify, Cloudflare, Render, Railway and European platforms handle monorepos.
You deploy a monorepo by creating one project or service per app and pointing each at its own folder, usually called the root directory. The platforms differ on two things: whether code outside that folder, such as a shared packages/ui, is available to the build, and whether a push that only touches one app rebuilds all of them. Vercel, Netlify and Cloudflare handle JavaScript workspaces with shared packages; Render and Railway add path rules for what triggers a deploy; Eurobase, Clever Cloud and Scalingo deploy a chosen folder on European platforms and fit best when each app stands on its own.
Monorepo support at a glance
| Platform | Company | How you choose the app | Skips apps a push didn't touch | Code outside the app folder |
|---|---|---|---|---|
| Vercel | Vercel Inc., US | Root Directory per project | Yes, on GitHub with JS workspaces | Workspace packages supported |
| Netlify | Netlify, Inc., San Francisco | Package directory, base directory | Yes, by base directory or an ignore command | Builds from the repo root by default |
| Cloudflare | Cloudflare, Inc., San Francisco | Root directory per Worker | Build watch paths | Shared packages supported |
| Render | Render Inc., US | Root directory | Root directory and build filters | Only inside the root directory, unless you build from the repo root |
| Railway | Railway Corporation, San Francisco | Root directory, or filtered commands at the root | Watch paths | Shared monorepos build from the root |
| Eurobase | Warsaw, Poland | Root directory per project | No, every push deploys each linked project | Not available to container builds |
| Clever Cloud | Nantes, France | APP_FOLDER variable | Not documented | Not documented |
| Scalingo | Strasbourg, France | PROJECT_DIR variable | Not documented | Left out of the app image |
Details are from each provider's own documentation, checked on 10 November 2026.
What to check before you pick a platform
- Isolated or shared. A repo with a Python API in
backend/and a React site infrontend/works almost anywhere. A pnpm or npm workspace where three apps importpackages/sharedneeds a build that can see the whole repository. - What a push rebuilds. Without path rules, one commit to the docs site redeploys every app. That costs build minutes and, on some plans, counts against a daily deployment limit.
- Package manager. Some platforms accept every lockfile, others refuse some. Check yours before you move.
- Where the company sits. A European region on a US platform still leaves a US provider in charge. See EU region vs EU company.
1. Vercel
Vercel asks you to create a separate project for each directory you want to deploy, each with its own Root Directory. By default, every commit deploys every connected project. On GitHub repositories that use npm, Yarn, pnpm or Bun workspaces, it skips projects whose source, internal dependencies and relevant lockfile entries didn't change. Other setups can use the Ignored Build Step, though builds cancelled that way still count toward deployment and concurrent build limits. A filtered install such as pnpm install --filter web... installs only what one app needs.
- Best for: Next.js and Turborepo or Nx workspaces with many shared packages.
- What it lacks: an EU company behind it, and the number of projects per repository is capped by plan. See European Vercel alternatives.
2. Netlify
When you add a repository, Netlify scans it, lists the sites it finds and fills in the build command and publish directory for the one you pick. It sets the package directory and leaves the base directory at the repository root, so dependencies install from the top. Netlify skips a build when nothing in the base directory changed, which only helps once the base directory is narrower than the whole repository. An ignore command in netlify.toml overrides that: exit code 1 builds, exit code 0 stops.
- Best for: frontend sites in a JavaScript workspace.
- What it lacks: a European company. See European Netlify alternatives.
3. Cloudflare
Cloudflare Workers Builds connects the same repository to each Worker and sets a root directory where its Wrangler config lives. Each Worker can have its own build and deploy command, for example turbo deploy -F product-service. Build watch paths limit which changes start a build for each Worker, and its monorepo page treats shared packages through pnpm workspaces as a normal setup.
- Best for: several Workers that share types and utilities.
- What it lacks: an EU company. See European Cloudflare Workers alternatives.
4. Render
Setting a root directory on a Render service does two jobs: only changes under that folder trigger an autodeploy, and files outside it aren't available at build time or at runtime. Build filters add included and ignored path patterns on top. If your services share a folder, leave the root directory empty so the build sees the whole repository, and use build filters to decide which pushes redeploy each service.
- Best for: isolated services in one repo, such as an API and a worker in different languages.
- What it lacks: an EU company, and access to shared folders once a root directory is set. See European Render alternatives.
5. Railway
Railway separates the two cases. For an isolated monorepo you set a root directory and Railway only pulls that folder. For a shared one, every service builds from the repository root with its own command, such as pnpm --filter backend build. Importing a JavaScript monorepo stages one service per deployable package, with watch paths set to the package folder. A railway.toml needs its absolute path, because the config file doesn't follow the root directory.
- Best for: mixed stacks where some services share code and some don't.
- What it lacks: an EU company. See European Railway alternatives.
6. Eurobase
Eurobase deploys from GitHub, GitLab, Codeberg, Forgejo or Gitea. You create one project per app and choose its root directory when you connect the repository. For container apps, it lists candidate folders up to 6 levels deep. JavaScript frameworks such as Next.js, Nuxt and Astro run on V8 isolates; set the root directory to the app, because a workspace root isn't built that way. Servers in Node.js, Python, Go, Java, Ruby, PHP and .NET run as containers, and for those only the root directory is sent to the build, so a shared package elsewhere in the repo isn't there. A container root directory can hold up to 50,000 files and folders from GitHub, or 1,000 from GitLab, Forgejo or the CLI. Every push to the branch deploys each project linked to it, and each one counts toward the daily limit of 20, 100 or 500 deployments by plan.
- Best for: repos where each app builds on its own, run by a business registered in Poland on European infrastructure run by Scaleway, a French provider.
- Price: a Free plan, then €10 or €20 a month + VAT per workspace. There are no usage charges today: work over a limit is refused, apps on V8 isolates and Functions stop until the monthly reset, and containers and static sites keep serving.
- What it lacks: path rules that skip unchanged apps, shared packages for container builds, preview deployments, Dockerfile builds and managed Postgres. It holds neither ISO 27001 nor SOC 2 yet; both are in progress. Connecting GitHub or GitLab adds a US subprocessor, GitHub or GitLab Inc.
7. Clever Cloud
Clever Cloud reads an APP_FOLDER environment variable that names the folder holding the application inside the Git repository. Since the variable holds one folder, each app in the repository becomes its own Clever Cloud application.
- Best for: separate apps in one repository that also need a managed database from a French company.
- What it lacks: documented path rules for skipping builds.
8. Scalingo
On Scalingo you set PROJECT_DIR to the app's folder. The build moves into it, picks a buildpack from what it finds there and puts only that folder in the final image, so parent and sibling folders aren't present at runtime.
- Best for: a backend and a frontend in separate folders, each as its own Scalingo app.
- What it lacks: sibling folders at runtime, and documented path rules for skipping builds.
How to choose
- Shared packages across several JavaScript apps: Vercel, Netlify or Cloudflare, or a pre-build step that copies what each app needs into its folder.
- Independent apps and you want an EU company: Eurobase for frontend apps and servers that build from their own folder, at a flat price, Clever Cloud or Scalingo when you also need a managed database.
- Many apps and a busy repo: favour a platform with watch paths or build filters, so one commit doesn't rebuild everything.
Frequently asked questions
Do I need one project per app in a monorepo?
On every platform here, yes. Each app gets its own project or service pointing at its own folder, with its own variables, domain and deploy history.
Why does my monorepo build fail with "module not found"?
The app imports a workspace package that the build can't see. That happens when the platform sends only the app's folder, as Render does once a root directory is set, and as Scalingo and Eurobase containers do. Either build from the repository root on a platform that allows it, or make the app folder self-contained.
How do I stop every push from redeploying every app?
Use the platform's path rules: Vercel skips unaffected projects, Netlify compares the base directory, Cloudflare has build watch paths, Render has build filters and Railway has watch paths. Eurobase deploys every linked project on each push.
Can I deploy a pnpm monorepo in Europe?
On Eurobase, apps on V8 isolates accept a pnpm-lock.yaml, but container builds take only npm or Yarn 1. Point the root directory at the app, not the workspace root. See Node.js hosting in Europe for server options.
Sources
- Vercel monorepos and Vercel with Turborepo
- Netlify monorepos and Netlify ignore builds
- Cloudflare Workers Builds advanced setups
- Render monorepo support
- Railway monorepo guide
- Clever Cloud environment variables reference
- Scalingo monorepo deployment
- Eurobase getting started, Eurobase Workers, Eurobase containers, Eurobase plans and Eurobase subprocessors
Keep reading
Where to host n8n in Europe in 2026n8n Cloud, Sliplane, PikaPods, Scalingo and Coolify on Hetzner compared for running n8n in Europe, with prices, databases and the license rule that limits resale.Frameworks9 min read
European alternatives to Neon serverless Postgres in 2026Postgres from European companies that scales to zero or bills by use: Scaleway Serverless SQL, Aiven, Scalingo, Clever Cloud, or Neon kept in Frankfurt.Databases8 min read
