Skip to content

Turborepo 2.11

Friday, September 18th, 2026
Anthony Shew
Name
Anthony Shew
X
@anthonysheww

Turborepo 2.11 adds native support for more languages, faster startup, improved JavaScript ecosystem compatibility, and more control over your deployments:

In addition to these new features, this is the first release of Turborepo with zero known bugs.

Turborepo reaches 20 million weekly downloads with zero open GitHub issues

Upgrade or get started today.

Terminal
# Use the automated upgrade CLI
pnpm dlx @turbo/codemod migrate

# Start a new repository
pnpm dlx create-turbo@latest
Terminal
# Use the automated upgrade CLI
yarn dlx @turbo/codemod migrate

# Start a new repository
yarn dlx create-turbo@latest
Terminal
# Use the automated upgrade CLI
npx @turbo/codemod migrate

# Start a new repository
npx create-turbo@latest
Terminal
# Use the automated upgrade CLI
bunx @turbo/codemod migrate

# Start a new repository
bunx create-turbo@latest
Terminal
# Use the automated upgrade CLI
nubx @turbo/codemod migrate

# Start a new repository
nubx create-turbo@latest
Terminal
# Use the automated upgrade CLI
aubx @turbo/codemod migrate

# Start a new repository
aubx create-turbo@latest

Native support for Rust, Python, and Go (Experimental)

Turborepo can now discover packages and dependency relationships from Cargo, uv, and go.work workspaces, putting each language toolchain into the same Task Graph. This brings Turborepo's task scheduling, filtering, affectedness calculations, Watch Mode, and pruning to your Rust, Python, and Go projects. You get one CLI, turbo, to handle all the tasks in your monorepo.

You can use any of these languages on its own or combine JavaScript, Rust, Python, and Go into one unified execution graph. Turborepo runs tasks in parallel across languages while respecting their dependencies.

Turborepo commandTask execution
turbo run buildtsc build + cargo build + uv build + go build ./...
turbo run testvitest run + cargo test + uv run pytest + go test ./...
turbo run checktsc + cargo check + uv run mypy
turbo run linteslint + cargo clippy + uv run ruff check + go vet ./...
turbo run formatprettier + cargo fmt + uv run ruff format + go fmt ./...
turbo run build test check lint formatAll of the commands above run in parallel

You can also create cross-toolchain dependencies in turbo.json. For example, tests for a Python API server wait for a Rust core package to be built:

turbo.json
{
  "futureFlags": {
    "experimentalCargoWorkspaces": true,
    "experimentalPythonWorkspaces": true
  },
  "tasks": {
    "my-dango-api#test": {
      "dependsOn": ["rust-api-core#build"]
    }
  }
}

Once the Rust dependency is done building, the Django server will run its Python tests.

Native Rust, Python, and Go support is Experimental and subject to change. To learn more, visit the Rust, Python, and Go guides.

Share your feedback in GitHub Discussions.

Up to 4x faster startup

Time to First Task is the time between when you invoke turbo run and when your first task starts running. In Turborepo 2.9, we improved Time To First Task by up to 96%.

In 2.11, Time to First Task is up to 4x faster than 2.9.

Time to First Task

Vercel's backend monorepo (1037 packages)

45% faster

2.11

394ms

2.9

716ms

<2.9

8.1s

Vercel's frontend monorepo (132 packages)

43% faster

2.11

206ms

2.9

361ms

<2.9

1.9s

create-turbo (6 packages)

74% faster

2.11

34ms

2.9

132ms

<2.9

676ms

Benchmarked on Apple M4 Max, 36 GB RAM, macOS 15.7.1

Stacked on top of the Turborepo 2.9 gains, the largest repository we benchmarked now reaches its first task over 20x faster than it did before 2.9. As with 2.9, the improvement you see will depend on the size and complexity of your repository.

devEngines.packageManager support

Starting with this release, Turborepo respects the devEngines.packageManager field in your root package.json.

For JavaScript toolchains, the devEngines.packageManager field is the modern way to declare the package manager expected by your repository:

package.json
{
  "devEngines": {
    "packageManager": {
      "name": "pnpm",
      "version": "12.0.0"
    }
  }
}

In a future major version of Turborepo, the top-level packageManager field will stop being supported to align with the current and future direction of the JavaScript ecosystem. We encourage migrating your repository by removing the top-level packageManager field and replacing it with devEngines.packageManager.

Read the package manager documentation to learn more.

nub and aube support

Turborepo now recognizes nub and aube as JavaScript package managers.

Both of these package managers focus on improving security and speed for dependency installation in your repo. They use your existing npm, pnpm, Yarn, or Bun lockfile, making for easy migration.

Declare nub in your root package.json:

package.json
{
  "devEngines": {
    "packageManager": {
      "name": "nub",
      "version": "0.8.3"
    }
  }
}
package.json
{
  "devEngines": {
    "packageManager": {
      "name": "aube",
      "version": "2.2.9"
    }
  }
}

To try nub or aube, create a monorepo with create-turbo:

Terminal
# nub
nubx create-turbo -m nub

# aube
aubx create-turbo -m aube

Production pruning

When preparing a deployment from a monorepo, it can be tricky to right-size your Docker images. Turborepo's prune command solves this problem, trimming your monorepo to only the code that is needed for the application to deploy and run successfully.

Until today, Turborepo would include workspace packages referenced through both dependencies and development dependencies while calculating the pruning dependency closure. While this is a safe default, removing development-only workspace packages from the production image can optimize further.

In this release, we're giving you control to exclude workspace packages that are only reachable through devDependencies with the new --production flag for turbo prune:

Terminal
turbo prune web --production

This works across all natively supported languages, including the Experimental ones introduced in this release. Visit the turbo prune documentation to learn more.

All changes

Acknowledgments and community

Turborepo is the result of the combined work of all contributors, including our core team: Anthony and Tom.

We also thank everyone who contributed to this release of Turborepo: @abhiaagarwal, @akshat-OwO, @alexey-yunoshev-1, @ashusnapx, @BABTUNA, @bangseongbeom, @charpeni, @christopherkindl, @colinhacks, @cuishuang, @Divyansh151005, @dnukumamras, @DominikRusso, @floriansalihovic, @ghoullier, @gtbuchanan, @gwagjiug, @Jarred-Sumner, @lachieh, @latent-9, @louis-bompart, @lukesandberg, @markandrus, @molebox, @molofsky, @Nishant-Chaudhary5338, @Nixxx19, @ognevny, @okxint, @Pcmhacker-piro, @Sakshamm-Goyal, @smasato, @tajo, @timsnadden, @tsushanth, @XananasX7, @y-lakhdar.

Thank you for your continued support, feedback, and collaboration to make Turborepo your build tool of choice. To learn how to get involved, visit the Community page.