unstale

npm / turbo

turbo

What changed in turbo 2, from its official release notes, upgrade guides and advisories. Sources checked 2026-10-18.

19 breaking32 security7 deprecations80 new APIs and options33 performance88 behavior and defaults29 tooling253 fixes and other

See which of these apply to your code, ranked, in your agent:

npx @unstale/cli init

@unstale/cli 0.1.1 on npm

turbo 2541 changes

Breaking changes 19

  • Managed setup refuses to run on Windows arm64 hosts, including when x64 turbo runs under emulation.

    2.11.9release notes

  • The fallback now rejects local sources that are not workspace members.

    2.11.8release notes

  • Empty tokens are rejected when reading token files.

    2.11.5release notes

  • Go tasks now follow Go's default binary output paths.

    2.11.0release notes

  • Incremental task caching is removed.

    2.11.0release notes

  • Unsupported Cargo local packages are rejected.

    2.10.5release notes

  • Cargo workspace packages must declare a name.

    2.10.5release notes

  • Output paths that traverse directories are rejected.

    2.10.5release notes

  • Web UI mode is removed.

    2.9.18release notes

  • Rejects OTEL endpoints that contain userinfo.

    2.9.10release notes

  • Unix parent death watchdogs were removed, changing how Turbo processes respond to the death of their parent process.

    2.9.9release notes

  • Using --filter with filterUsingTasks no longer pulls dependents into the task graph.

    2.9.4release notes

  • The configuration uses object maps rather than arrays.

    2.9.0release notes

  • Platform binaries are published under @turbo/ scoped packages.

    2.9.0release notes

  • The root package.json is no longer treated as a global trigger for --affected.

    2.8.21release notes

  • turbo run no longer uses the daemon; daemon flags and configuration are deprecated.

    2.8.11release notesrelease notes

  • The daemon is removed from turbo run, changing how the command executes.

    2.8.11release notes

  • Removes the abandoned turbo clone command.

    2.8.3release notesrelease notes

  • Turbo now validates that the version in a lockfile is a semver string.

    2.7.6release notes

Security 32

Deprecations 7

New APIs and options 80

  • Setup now allows native package manager configuration.

    2.11.9release notes

  • Adds an uninstall mode; the installer no longer automatically installs the Unix shell hook.

    2.11.9release notes

  • Adds shell-hook support for activating managed tools in bash, zsh, fish, and PowerShell, and exporting managed runtime variables.

    2.11.9release notes

  • Adds a command surface for running commands with the managed environment.

    2.11.9release notes

  • Adds managed setup for resolving, locking, installing, and activating repository toolchains and dependencies, including JavaScript package managers, Go, Rust, Python, and additional tools.

    2.11.9release notes

  • Supports setup without lock writes, records trusted setup roots for no-lock installs, and activates and hashes no-lock selections during plain turbo run.

    2.11.9release notes

  • Adds controls for skipping dependency lifecycle scripts through repository policy and the CLI.

    2.11.9release notes

  • Allows setup downloads to use credential-free mirror overrides, with mirrors configurable in the root setup policy.

    2.11.9release notes

  • Adds root-only setup policy configuration for declaring repository tools and applying setup policy.

    2.11.9release notes

  • An experimental future flag for setup was added.

    2.11.8release notes

  • An experimental setup command surface can create and reconcile local setup locks, resolve and install managed Node.js and package-manager tools, and check, refresh, or force-reinstall locked tools.

    2.11.8release notes

  • Tasks can now have tags, with configuration inheritance.

    2.11.6release notes

  • The CLI can now filter tasks by tags.

    2.11.6release notes

  • Query results now expose task and package tags.

    2.11.6release notes

  • Query can now filter tasks and packages by tags.

    2.11.6release notes

  • Adds standalone installer URLs for curl-pipe-bash installation.

    2.11.5release notes

  • The package adds affected query APIs.

    2.11.4release notes

  • Turborepo adds experimental native Go workspace support, including workspace graphs, task tables, input and output contracts, external resolution fingerprints, toolchain environment fingerprints, change observations, and prune planning.

    2.11.0release notes

  • Framework inference now supports Remix and the NUXT_ENV_* wildcard.

    2.11.0release notes

  • Static repository discovery and safe affected candidates are exposed.

    2.11.0release notes

  • turbo query now exposes compact task planning.

    2.11.0release notes

  • Cargo root packages are supported, allowing Turborepo to include root-level Cargo packages in its workspace handling.

    2.10.13release notesrelease notes

  • Adds an experimental foundation for Go workspace graphs.

    2.10.13release notes

  • Adds a NUXT_ENV_* wildcard for environment variable inference.

    2.10.13release notes

  • Turborepo now detects package-level turbo.jsonc files.

    2.10.13release notesrelease notes

  • Adds Remix framework inference.

    2.10.13release notes

  • Workspace.find adds skipPackageGraph, allowing callers to skip package graph construction.

    2.10.13release notesrelease notes

  • Affectedness calculations can span different toolchains.

    2.10.10release notesrelease notes

  • Turborepo supports nub.lock files.

    2.10.10release notesrelease notes

  • Remote base refs can be resolved in GitHub Actions behind a future flag.

    2.10.8release notesrelease notes

  • Adds selection of runnable task entrypoints.

    2.10.7release notes

  • Turborepo supports repositories containing only Cargo projects.

    2.10.6release notesrelease notes

  • The Remote Cache can serve as an sccache backend for Cargo tasks, with sccache embedded so no separate installation is needed.

    2.10.5release notesrelease notes

  • Adds the no-op experimentalCargoWorkspaces future flag.

    2.10.4release notesrelease notes

  • turbo query exposes resolved experimentalCI task configuration.

    2.10.4release notesrelease notes

  • Adds nub to the package manager options available in create-turbo.

    2.10.3release notes

  • Users can toggle between the TUI and streamed logs.

    2.10.3release notesrelease notes

  • Adds a --production flag to turbo prune.

    2.10.3release notesrelease notes

  • Turborepo recognizes package manager declarations in devEngines.packageManager, including declarations in workspaces.

    2.10.1release notesrelease notes

  • Adds circular package dependency detection to boundaries.

    2.10.0release notes

  • Adds JIT task input hashing and deferred hashing for task inputs, allowing hashes to be computed later in task execution.

    2.10.0release notes

  • Adds JIT task input hashing.

    2.9.17release notes

  • Supports P-521 ECDSA certificate chains over rustls.

    2.9.17release notes

  • Adds heap allocation profiling for investigating memory use.

    2.9.15release notesrelease notes

  • Adds incremental task caching.

    2.9.4release notesrelease notes

  • Adds cacheMaxAge to configure local cache eviction based on age.

    2.9.1release notesrelease notes

  • Adds cacheMaxSize to configure local cache eviction based on size.

    2.9.1release notesrelease notes

  • The turbo.json task configuration accepts the experimentalCI key.

    2.9.0release notes

  • Adds experimentalObservability with an OpenTelemetry backend.

    2.9.0release notes

  • FORCE_COLOR and NO_COLOR are included in the built-in passthrough environment variables.

    2.9.0release notes

  • Prune can include globalDependencies behind a future flag.

    2.9.0release notes

  • Experimental structured logging is available with --json and --log-file.

    2.9.0release notes

  • Experimental structured logging is available with --log-file and --json.

    2.9.0release notes

  • The global configuration key can be included in prune behind futureFlags.globalConfiguration.

    2.9.0release notes

  • A global configuration key is added behind futureFlags.globalConfiguration.

    2.8.21release notesrelease notes

  • Adds a flag for experimental structured logging.

    2.8.21release notes

  • Adds a flag for experimental structured logging.

    2.8.21release notes

  • Adds a NAPI binding that exposes packages from a lockfile.

    2.8.21release notesrelease notes

  • The command uses query internals, and turbo query ls is added as a shorthand.

    2.8.21release notesrelease notes

  • This future flag enables task-level resolution for --filter.

    2.8.18release notesrelease notes

  • Pruning can include globalDependencies behind a future flag.

    2.8.18release notes

  • A CLI shorthand is available for the affected query.

    2.8.18release notesrelease notes

  • Adds a future flag for task-level --affected detection using task inputs.

    2.8.17release notesrelease notes

  • A new query detects changes at the task level.

    2.8.15release notesrelease notes

  • Adds telemetry for detecting AI coding agents.

    2.8.14release notesrelease notes

  • Adds FORCE_COLOR to the builtin passthrough environment variables.

    2.8.14release notesrelease notes

  • This OTel metrics configuration controls cardinality.

    2.8.14release notesrelease notesrelease notes

  • Adds experimental OpenTelemetry observability configuration using object maps rather than arrays.

    2.8.13release notes

  • The turbo.json schema now permits comments and trailing commas.

    2.8.2release notesrelease notes

  • An agent skill was added to Turbo.

    2.7.6release notes

  • Task definitions can include an optional description field.

    2.7.5release notes

  • Adds the errorsOnlyShowHash future flag.

    2.7.5release notes

  • Adds a docs subcommand for searching documentation.

    2.7.5release notes

  • Turbo adds support for Git worktrees.

    2.7.4release notes

  • Provides a query for external dependencies.

    2.7.1release notes

  • Root-level microfrontends.json configuration is allowed for @vercel/microfrontends.

    2.7.0release notes

  • Tasks can use an extends field in turbo.json.

    2.7.0release notes

  • Adds microfrontends support, including configuration through microfrontends.json.

    2.6.0release notes

  • Adds support for custom microfrontends.json naming.

    2.6.0release notes

  • Lets users search the TUI task list by pressing /.

    2.6.0release notes

Performance 33

  • The dry-run HEAD fallback is parallelized.

    2.11.9release notes

  • Nested .gitignore discovery now skips ignored directories.

    2.11.8release notes

  • Avoids formatting Bun lockfiles during parsing.

    2.11.5release notes

  • Parses character classes without compiling a regex.

    2.11.5release notes

  • Serves a static GraphiQL page.

    2.11.5release notes

  • Reduces TUI allocations by upgrading Ratatui.

    2.11.5release notes

  • Reduces CLI size by upgrading serde_json.

    2.11.5release notes

  • Cache analytics are sent in larger batches.

    2.11.4release notes

  • Dry-run remote cache existence checks are batched.

    2.11.4release notes

  • Reuses the parsed lockfile during lazy graph loading.

    2.11.3release notes

  • Remote-cache transfers now bound memory use instead of retaining whole artifacts.

    2.11.0release notes

  • Memory usage is bounded while task output is streamed.

    2.11.0release notes

  • Turborepo skips unused Package Configuration stat calls, reducing unnecessary filesystem work.

    2.10.12release notes

  • Same-prefix tree-wildcard globs are merged into one directory walk.

    2.10.12release notes

  • Native uv tool tasks are cached.

    2.10.11release notesrelease notes

  • Pruning walks the repository once, improving the pruning process.

    2.10.10release notes

  • Simple include globs are evaluated without wax compilation, improving their evaluation performance.

    2.10.5release notes

  • Reduces hash memory spikes while running watch.

    2.9.8release notes

  • Boundaries checking is parallelized with Rayon, and DFS traversals are cached.

    2.9.5release notes

  • Increases remote cache upload chunk size from 8KB to 256KB.

    2.9.5release notesrelease notes

  • Skips irrelevant packages when using package#task syntax, improving task selection performance.

    2.8.14release notesrelease notes

  • Streams file contents during hashing and reduces allocations in file hash computation to lower memory usage.

    2.8.13release notes

  • Replaces SWC with oxc for JavaScript and TypeScript parsing.

    2.8.13release notes

  • Optimizes the npm lockfile parser.

    2.8.13release notes

  • Eliminates per-directory stat system calls during untracked file detection.

    2.8.13release notes

  • The hot path is optimized through parallelization and reduced allocations.

    2.8.11release notes

  • Replaces twox-hash with xxhash-rust and optimizes file hashing.

    2.8.10release notes

  • Batches per-package git subprocess calls into a repo-wide index.

    2.8.10release notes

  • Reduces allocations in globwalk.

    2.8.10release notes

  • Optimizes hot-path hash computation by avoiding clones and using unstable sorts.

    2.8.10release notes

  • Replaces O(V³) Floyd-Warshall with O(V+E) DFS in watch mode subgraph creation.

    2.8.10release notes

  • Finding tasks impacted by packages is faster.

    2.7.0release notes

  • Makes an ESLint rule approximately 8.6 times faster.

    2.6.0release notes

Behavior and default changes 88

  • Activates managed tools and resolves native task commands through managed binaries during task execution.

    2.11.9release notes

  • The check mode activates locked Go and checks its readiness; setup plans and checks also report locked dependency actions.

    2.11.9release notes

  • Agent guidance is disabled by default.

    2.11.8release notes

  • Artifact requests are coordinated after rate limiting.

    2.11.4release notes

  • Remote caching is disabled after unrecoverable forbidden responses.

    2.11.4release notes

  • The version is included in JSON output instead of appearing in a separate banner.

    2.11.4release notes

  • Cargo and uv affectedness can now be inferred from static package inputs.

    2.11.0release notes

  • Go workspace packages now receive derived short names.

    2.11.0release notes

  • Native tasks are now shown in task listings.

    2.11.0release notes

  • Package queries and pruning now account for tasks.

    2.11.0release notes

  • Rust builds are more stable on macOS.

    2.11.0release notes

  • Raw output retention is bounded independently of scrollback.

    2.11.0release notes

  • experimentalCI is now included in task hashes, so changes to this setting affect cache keys.

    2.10.13release notesrelease notes

  • LOCALAPPDATA is now passed through by default.

    2.10.13release notesrelease notes

  • Next.js framework inference now recognizes NEXT_DEPLOYMENT_ID.

    2.10.13release notesrelease notes

  • Turborepo uses uv workspace metadata when working with uv projects.

    2.10.13release notes

  • Affected queries now include virtual tasks.

    2.10.12release notes

  • Dry-run JSON output is streamed, improving how the command produces its output.

    2.10.12release notes

  • The EXPERIMENTAL label moves from the ls command to the --output flag.

    2.10.10release notes

  • Dependencies for aggregate native tasks are composed, and aggregate task overrides are respected.

    2.10.9release notesrelease notes

  • Unresolved Cargo artifacts are no longer cached.

    2.10.6release notes

  • Cargo cache is isolated by host platform, requires current lockfiles for caching, and hashes Cargo build environment inputs.

    2.10.5release notes

  • Cargo run tasks are no longer cached.

    2.10.5release notes

  • Outputs outside package roots are allowed.

    2.10.5release notes

  • Turborepo parses and validates the task command field and can resolve and execute command overrides.

    2.10.5release notesrelease notes

  • Toolchain tasks appear in the TUI and are not run in silence.

    2.10.5release notes

  • Turbo discovers Cargo crates as packages in a workspace.

    2.10.4release notes

  • Turbo hashes Cargo external dependencies per crate.

    2.10.4release notes

  • turbo prune becomes Cargo-aware.

    2.10.4release notesrelease notes

  • turbo watch becomes Cargo-aware.

    2.10.4release notesrelease notes

  • Turborepo accepts Bun lockfile version 2.

    2.10.3release notesrelease notes

  • TUI selection is automatically copied to the clipboard when the mouse is released.

    2.10.3release notesrelease notes

  • Tasks can be selected by clicking rows in the TUI task list.

    2.10.3release notesrelease notes

  • Adds graceful shutdown and preserves exit codes and PTY semantics while keeping the Node wrapper alive during shutdown.

    2.10.0release notes

  • Adds HTTP timeouts for auth requests.

    2.9.17release notes

  • Defers hashes for JIT task dependents.

    2.9.17release notes

  • LSP diagnostics now allow transit nodes.

    2.9.12release notes

  • Graceful shutdown now preserves exit codes and PTY semantics, keeps the Node wrapper alive, and ignores SIGINT in the shim after spawning local turbo.

    2.9.7release notes

  • Vercel authentication moves to standard OAuth/device flows while retaining legacy compatibility and recovering tokens across login flows.

    2.9.7release notesrelease notes

  • The fast webpki-only HTTP client now loads custom CA certificates.

    2.9.6release notes

  • Boundaries checking now detects circular package dependencies.

    2.9.5release notes

  • Scaffolded README files now use replacement package manager commands.

    2.9.5release notes

  • Telemetry alerts are suppressed when running on Vercel.

    2.9.5release notes

  • Allows --affected and --filter to be combined when selecting tasks.

    2.9.4release notesrelease notes

  • Nested OTEL configuration is deep-merged across priority sources.

    2.9.4release notes

  • Preflight handling now treats * as a wildcard in Access-Control-Allow-Headers.

    2.9.2release notes

  • The filename is now optional for --profile and --anon-profile.

    2.9.0release notes

  • Pruning supports pnpm per-workspace lockfiles.

    2.9.0release notes

  • Watch mode no longer uses the daemon.

    2.9.0release notes

  • NixOS environment variables are added to the default passthroughs.

    2.8.21release notes

  • Git SHA and dirty hash are sent to the remote cache.

    2.8.21release notes

  • The run summary is shown after the TUI exits.

    2.8.21release notes

  • The query command is promoted from experimental to stable.

    2.8.21release notesrelease notes

  • Watch is supported in single-package workspaces.

    2.8.21release notesrelease notes

  • The Node.js shim now supports legacy unscoped binary package names.

    2.8.19release notes

  • Cache metadata now includes the Git SHA and dirty hash.

    2.8.18release notes

  • Uninstalled package managers are now sorted to the bottom of the package manager selection.

    2.8.18release notes

  • Cyclic package graphs are allowed; validation is performed only at the task graph level.

    2.8.18release notes

  • The run prelude displays richer remote cache status.

    2.8.18release notes

  • The Run Summary now surfaces cache SCM metadata.

    2.8.18release notes

  • Workspace copying now supports private GitHub repositories.

    2.8.18release notes

  • TURBO_* environment variables are passed through to child processes in Strict Mode.

    2.8.18release notesrelease notes

  • Includes the Node.js version in the command output.

    2.8.17release notes

  • Watch uses the task graph.

    2.8.17release notesrelease notes

  • Treats Bun runtime modules as builtins when checking boundaries.

    2.8.14release notesrelease notes

  • Includes version, platform, and CPU count in Chrome trace profiles.

    2.8.14release notesrelease notes

  • Adds NO_COLOR to the builtin passthrough environment variables.

    2.8.14release notesrelease notes

  • OTel metrics export uses delta temporality.

    2.8.14release notes

  • Telemetry and analytics HTTP flushes are fire-and-forget during shutdown.

    2.8.14release notes

  • Single-package mode also checks devDependencies when inferring the framework.

    2.8.13release notesrelease notes

  • OTel metrics are sent without requiring the --summarize flag.

    2.8.13release notesrelease notes

  • The filename is now optional.

    2.8.10release notes

  • Profile trace output now includes LLM-friendly Markdown.

    2.8.10release notesrelease notes

  • The filename is now optional.

    2.8.10release notes

  • The docs markdown endpoint now includes the Vary: Accept header, affecting how responses are cached based on the Accept header.

    2.8.5release notes

  • Microfrontends JSONC files now support trailing commas.

    2.8.1release notesrelease notes

  • Turbo version validation now uses the lockfile for all package managers.

    2.8.1release notes

  • Removes the requirement for a root app package to support polyrepos.

    2.7.5release notes

  • Wildcards now exclude framework-inferred environment variables.

    2.7.2release notes

  • Packages are now allowed to import themselves.

    2.7.1release notes

  • Tasks are composed when turbo.json files are composed.

    2.7.0release notes

  • Task restarts in watch mode are fine-grained and interruptible.

    2.7.0release notes

  • A GitHub Actions environment variable is now included in the default passthrough.

    2.6.3release notes

  • A Windows-specific environment variable is added to the default passthroughs.

    2.6.2release notesrelease notes

  • The selected task highlight uses reverse video to improve accessibility.

    2.6.2release notes

  • Padding is added to task names and icons in the TUI.

    2.6.2release notes

  • Some Linux variables are added to the default passthrough environment variables.

    2.6.1release notes

  • The icon is moved to the left side in the terminal user interface.

    2.6.1release notes

Tooling 29

  • Installs locked JavaScript dependencies in frozen or immutable modes, including npm, pnpm, Yarn, and Bun.

    2.11.9release notes

  • Supports offline setup from verified cached artifacts and reuses trusted installations and verified downloads.

    2.11.9release notes

  • Adds managed tool provisioning and activation on native Windows x64 for Node, pnpm, Go, Rust, Python, uv, Bun, and Yarn.

    2.11.9release notes

  • Records locked tool selections and artifacts for setup, including Go, Rust, Yarn, and Bun; setup can create or refresh these selections.

    2.11.9release notes

  • The npm package now bundles documentation, making the docs available in the package.

    2.11.5release notes

  • Turborepo discovers Cargo crates as packages, executes Cargo crate tasks, and derives task inputs, outputs, and per-crate external dependency hashes.

    2.11.0release notes

  • Turborepo recognizes nub as a package manager, supports its native lockfiles, and adds it to create-turbo options.

    2.11.0release notes

  • Turborepo now supports pnpm 6 single-package lockfiles.

    2.10.13release notesrelease notes

  • Turborepo adds support for Python virtual environments.

    2.10.13release notesrelease notes

  • Turborepo can discover pytest tasks.

    2.10.10release notesrelease notes

  • Turborepo parses Python quality tool declarations, resolves and synthesizes tasks, and hashes their inputs.

    2.10.9release notesrelease notes

  • Turborepo adds support for running on Android through Termux.

    2.10.8release notesrelease notes

  • Turborepo adds a native format task for Cargo projects.

    2.10.8release notesrelease notes

  • Turborepo can discover uv workspaces, run native uv tasks, hash lockfile closures, watch workspace changes, and prune workspaces.

    2.10.8release notesrelease notes

  • Turborepo can infer tasks for Cargo workspaces.

    2.10.6release notesrelease notes

  • Adds verification tasks scoped to individual Cargo crates.

    2.10.6release notesrelease notes

  • Run summaries report incremental cache reuse.

    2.10.5release notesrelease notes

  • Turbo executes Cargo crate tasks via Cargo.

    2.10.4release notes

  • Turbo derives input and output globs for Cargo tasks.

    2.10.4release notes

  • Turborepo adds package manager support for aube.

    2.10.3release notesrelease notes

  • Adds a sandbox helper, with fixes for npm registry access, stale bases, dotfile installation during base refresh, and sandbox startup.

    2.9.7release notes

  • Turbo surfaces an actionable message when remote cache is requested but not linked, helping developers resolve the configuration issue.

    2.9.6release notes

  • The concurrency error message now mentions turbo.json, helping developers identify where to configure concurrency.

    2.9.6release notes

  • The migration codemod now handles package manager catalogs.

    2.9.1release notesrelease notes

  • The post-hashing setup phase is instrumented for trace visibility.

    2.8.14release notes

  • A new transformer is available in @turbo/codemod to update versioned schema JSON.

    2.7.6release notes

  • Turborepo adds support for Yarn 4 catalogs.

    2.7.0release notes

  • The microfrontends port command is cross-platform.

    2.6.1release notes

  • Introduces a new OAuth flow for the Turborepo CLI with Vercel.

    2.6.0release notes

Fixes and other changes 253

  • Attributes lockfile changes to the crates whose dependencies changed.

    2.11.9release notes

  • Fixes parsing JSX in JavaScript files.

    2.11.9release notes

  • Preserves task output after tasks exit with a non-zero status.

    2.11.9release notes

  • Activates managed tools when running turbo watch.

    2.11.9release notes

  • The codemod no longer generates duplicate package names.

    2.11.8release notes

  • Task graphs are now populated for affected and filtered listings.

    2.11.8release notes

  • Automatic Turbo downloads now use the repository's package manager.

    2.11.8release notes

  • Cargo lint task hashing now includes Clippy configuration.

    2.11.8release notes

  • Dry runs now report inferred framework environment variables for deferred tasks.

    2.11.8release notes

  • Go discovery remains stable when a repository is reached through a symlink.

    2.11.8release notes

  • Pruned workspaces now support npm patches.

    2.11.8release notes

  • Pruning now preserves unknown pnpm lockfile settings and removes unused catalog snapshots.

    2.11.8release notes

  • Optional npm peers are now excluded from pruned lockfiles.

    2.11.8release notes

  • uv tool configuration is now carried into pruned workspaces.

    2.11.8release notes

  • Vercel OIDC token rotation is ignored in .env.local cache inputs.

    2.11.7release notes

  • SDKROOT is passed through to repository tasks.

    2.11.7release notes

  • Production MFE negative lookaheads now match locally.

    2.11.6release notes

  • Query commands now infer single-package mode.

    2.11.6release notes

  • Standalone turbo is upgraded when the installer is rerun.

    2.11.6release notes

  • Task inputs are normalized consistently for affected detection and hashing.

    2.11.6release notes

  • Prune now keeps Yarn patch resolutions that use npm protocol selectors.

    2.11.6release notes

  • Query metadata is completed for non-script entrypoints.

    2.11.6release notes

  • Adds path context to globwatch errors.

    2.11.5release notes

  • Resolves LSP task references with a JSONC AST.

    2.11.5release notes

  • Reports source paths for package manager errors.

    2.11.5release notes

  • Stabilizes pnpm per-workspace lockfile hashes.

    2.11.5release notes

  • Formats pnpm v5 package names correctly.

    2.11.5release notes

  • Remote artifact requests back off during outages, avoiding repeated requests while the remote service is unavailable.

    2.11.5release notes

  • Validates glob bases in scope selectors.

    2.11.5release notes

  • Restores log streaming in the TUI after the Ratatui upgrade.

    2.11.5release notes

  • Waits for watcher setup to complete.

    2.11.5release notes

  • Affected detection now respects negated global dependencies.

    2.11.4release notes

  • Only secondary go.work files that Go reads for workspace members are rejected.

    2.11.4release notes

  • Concurrent remote-cache token recovery is shared.

    2.11.4release notes

  • Normalizes input globs used to determine affected tasks.

    2.11.3release notes

  • Root internal dependency changes are treated as global changes when determining affected tasks.

    2.11.3release notes

  • Gitignored files are ignored when checking boundaries.

    2.11.3release notes

  • Avoids microfrontend polyrepo warnings.

    2.11.3release notes

  • Stops tasks when their parent exits.

    2.11.3release notes

  • Stabilizes the order of boundary tags in prune output.

    2.11.3release notes

  • Repeatable CLI flags are restored, so developers can pass the same flag multiple times again.

    2.11.2release notes

  • esbuild builds are now allowed for pnpm generators.

    2.11.1release notes

  • Invalid affected-task globs are shown to the user.

    2.11.0release notes

  • Affected-task queries include virtual tasks and compose correctly with package filters.

    2.11.0release notes

  • Pruning preserves Bun overrides, trusted dependencies, workspace bins, and git integrity, and accepts lockfile version 3.

    2.11.0release notes

  • Manual hashing applies nested parent gitignore patterns and respects gitignore rules even without Git metadata.

    2.11.0release notes

  • Affectedness from uv lockfile changes is scoped appropriately.

    2.11.0release notes

  • Leading flags are again accepted for implicit run commands.

    2.10.13release notesrelease notes

  • Berry lockfile identifiers are parsed with hand-written parsers instead of regex captures.

    2.10.12release notes

  • Berry lockfile resolution overrides are indexed by dependency name.

    2.10.12release notes

  • Turborepo now respects gitignore rules even when git metadata is absent.

    2.10.11release notes

  • Turborepo now tolerates transient input files.

    2.10.11release notes

  • Manual hashing now applies nested parent gitignore patterns.

    2.10.10release notes

  • Bun pruning preserves overrides objects, trustedDependencies, workspace bins, and git integrity, and accepts lockfileVersion 3.

    2.10.10release notes

  • Affected tasks are now composed with package filters.

    2.10.9release notes

  • Prunes Bun wildcard workspace development dependencies.

    2.10.9release notes

  • Invalidates only when Git ignore sources change.

    2.10.9release notes

  • File watching falls back to polling on macOS.

    2.10.8release notes

  • The TUI task list can now be scrolled with the mouse wheel.

    2.10.8release notes

  • Supports multiple file watch roots on macOS.

    2.10.7release notes

  • Preserves pnpm root dependencies during pruning.

    2.10.7release notes

  • Preserves pnpm aliased dependencies during pruning.

    2.10.7release notes

  • JIT inputs are matched for affected tasks.

    2.10.6release notes

  • Dynamic imports are checked in boundaries.

    2.10.6release notes

  • Cargo profile outputs are resolved exactly.

    2.10.6release notes

  • Cargo target output layouts are resolved.

    2.10.6release notes

  • Git failures are surfaced by create-turbo.

    2.10.6release notes

  • Pruning preserves pnpm node@runtime: lockfile entries.

    2.10.6release notes

  • Shutdown signals are retained when force exiting.

    2.10.6release notes

  • Colors are preserved in TUI output.

    2.10.6release notes

  • Pruning a Bun production workspace excludes development dependencies.

    2.10.6release notes

  • The turbo watch behavior is refactored.

    2.10.6release notes

  • Pruning preserves the Yarn Babel extension.

    2.10.6release notes

  • Project Yarn package extensions are preserved.

    2.10.6release notes

  • Pruning removes extraneous entries from bun.lock.

    2.10.5release notes

  • npm prune rehoisting is made deterministic and complete.

    2.10.5release notes

  • Pruning preserves pnpm patches that use version range keys.

    2.10.5release notes

  • Fixes make the compile cache actually cache, avoid ambient CARGO_INCREMENTAL suppressing cache injection, and prevent storage failures from failing builds.

    2.10.5release notes

  • Task inputs preserve watch rerun semantics.

    2.10.5release notes

  • Pruning preserves Yarn package extension ranges.

    2.10.5release notes

  • Relative imports resolving into node_modules are no longer flagged.

    2.10.4release notes

  • Ancestor-scoped Bun dependencies remain resolvable after prune renames.

    2.10.4release notes

  • Input exclusion globs are now applied during the filesystem walk.

    2.10.4release notes

  • Resolves Bun scoped package dependencies that share a name with a dependency.

    2.10.3release notes

  • The version field accepts semver ranges.

    2.10.3release notesrelease notesrelease notes

  • Reports malformed JSON parse errors instead of panicking.

    2.10.3release notes

  • Skips node_modules in boundaries checks.

    2.10.3release notes

  • Adds support for nub native lockfiles.

    2.10.3release notes

  • Normalizes the displayed package manager version.

    2.10.3release notes

  • Normalizes package manager versions.

    2.10.3release notes

  • Uses the singular form “workspace” in package resolution errors.

    2.10.3release notes

  • Improves error messaging when a platform binary is missing.

    2.10.3release notes

  • Adds recovery guidance for token exchange errors.

    2.10.3release notes

  • Hardens terminal restoration during TUI shutdown.

    2.10.3release notes

  • Recovers from slow initial hashing instead of timing out.

    2.10.3release notes

  • Avoids following nested symlinked cache outputs.

    2.10.2release notes

  • Preserves three-level nested Bun lockfile entries during pruning.

    2.10.2release notes

  • Turborepo supports Corepack packageManager integrity hashes, fixing package manager detection for configurations that include them.

    2.10.1release notes

  • XDG_DATA_* environment variables are included in the environment variables passed through by Turborepo.

    2.10.1release notes

  • Re-authenticates when a stored token loses access to its linked team.

    2.10.0release notes

  • Adds support for pnpm v11 multi-document lockfiles.

    2.10.0release notes

  • Fixes lockfile and workspace pruning across Bun, npm, pnpm, Yarn, and package.json workspaces, including preservation of install strategies and per-workspace lockfiles.

    2.10.0release notes

  • Respects the root gitignore during pruning and preserves package-manager dependency, patch, and override information in pruned workspaces.

    2.10.0release notes

  • Affected queries now respect SCM environment variables and include packages changed through lockfiles.

    2.10.0release notes

  • Keeps non-PTY stdin alive for persistent tasks and uses a PTY for interactive Windows tasks.

    2.10.0release notes

  • The watch loop restarts interruptible persistent tasks after file changes and avoids rerunning non-cacheable watch dependencies.

    2.10.0release notes

  • Special mode bits are stripped during cache restore.

    2.9.18release notes

  • The daemon path hash is normalized on Windows.

    2.9.18release notes

  • Bypasses the npm command shim on Windows.

    2.9.17release notes

  • Ignores peer dependencies when constructing the package graph.

    2.9.17release notesrelease notes

  • Keeps non-PTY stdin alive for persistent tasks.

    2.9.17release notes

  • Preserves pnpm override-resolved dependencies during pruning.

    2.9.17release notes

  • Keeps PTY stdin open for tasks.

    2.9.17release notes

  • Detects affected root tasks in query results.

    2.9.17release notesrelease notes

  • Waits for graceful shutdown on Windows.

    2.9.17release notes

  • Sends Ctrl+C to Windows PTY tasks.

    2.9.17release notes

  • Preserves nested dependency versions for Bun.

    2.9.16release notesrelease notes

  • No longer deletes an existing .git directory when used.

    2.9.16release notesrelease notes

  • Avoids hanging during PTY shutdown.

    2.9.16release notes

  • Packages changed in the lockfile are now included when determining affected tasks.

    2.9.15release notes

  • Berry lockfile errors are returned instead of causing a panic.

    2.9.15release notes

  • Bun alias child packages and nested workspace dependency versions are preserved.

    2.9.15release notes

  • Accepts experimentalCI as an object configuration.

    2.9.15release notesrelease notes

  • Pruning now correctly handles package.json workspaces.

    2.9.15release notes

  • pnpm injected peer package entries are now preserved.

    2.9.15release notes

  • Turborepo waits for process trees before task completion and prevents Windows process drain hangs.

    2.9.15release notes

  • Pruning now respects the root gitignore.

    2.9.15release notes

  • Restores task completion semantics.

    2.9.15release notesrelease notes

  • The language server now prefers an installed Turbo.

    2.9.11release notes

  • LSP diagnostics now allow $TURBO_EXTENDS$.

    2.9.11release notes

  • The VS Code extension now resolves relative turbo paths correctly.

    2.9.11release notes

  • Pruning now preserves nested Bun dependencies.

    2.9.11release notes

  • The extension starts the daemon itself, reducing setup friction for developers using the extension.

    2.9.11release notes

  • The extension now supports turbo.jsonc configuration files.

    2.9.11release notes

  • The extension now supports shimmed VS Code LSP probes.

    2.9.11release notes

  • Enforces filesystem boundaries for the cache.

    2.9.10release notes

  • Handles errors from clipboard exec operations.

    2.9.10release notes

  • Preserves FSEvents mount points for device-relative paths.

    2.9.10release notes

  • Retries requests that fail with HTTP status errors.

    2.9.10release notes

  • Filters environments passed through the microfrontend proxy.

    2.9.10release notes

  • Uses a random temporary path for repository downloads.

    2.9.10release notes

  • Respects SCM environment variables when determining affected packages.

    2.9.10release notes

  • Resolves TypeScript .js extension imports to .ts files in boundaries.

    2.9.10release notes

  • Keeps workspace configuration discovery inside the repository root.

    2.9.10release notes

  • Dry-run conversion now preserves lockfiles.

    2.9.9release notes

  • Repo index prefixes are scoped to the Git root.

    2.9.9release notes

  • Preserves concrete dependency precedence.

    2.9.8release notes

  • Keeps shell connections stable.

    2.9.8release notes

  • Creates bin stubs for Docker prune output.

    2.9.8release notes

  • Preserves Bun prune lockfile validity.

    2.9.8release notes

  • Resolves affected packages when using Yarn catalogs.

    2.9.8release notes

  • Filter selectors now support two-dot Git ranges.

    2.9.7release notesrelease notes

  • Turbo supports pnpm v11 multi-document and flat patch lockfiles.

    2.9.7release notes

  • Prune no longer overmatches gitignore entries.

    2.9.7release notes

  • Non-cacheable watch dependencies are no longer rerun.

    2.9.7release notes

  • Bun workspace lockfile pruning no longer produces invalid output.

    2.9.4release notes

  • Engine concurrency is validated after task-level filtering.

    2.9.4release notes

  • Microfrontend proxy tasks are retained when using filterUsingTasks.

    2.9.4release notes

  • Migration codemods update the schema URL to a versioned format and preserve prerelease information.

    2.9.4release notesrelease notes

  • Signature key length is enforced only for keys that exist.

    2.9.4release notes

  • Task input hashing now respects dirty .gitignore patterns.

    2.9.4release notesrelease notes

  • Codemod transforms now support turbo.jsonc configuration files.

    2.9.4release notesrelease notes

  • pnpm pruning now preserves per-workspace lockfiles.

    2.9.3release notes

  • turbo prune now preserves npm's shallow install strategy during lockfile pruning.

    2.9.2release notes

  • turbo prune now backfills missing pnpm workspace importer entries.

    2.9.2release notes

  • Engine graph pruning for affected paths now includes transitive dependencies when using the Task Graph.

    2.9.2release notes

  • Interruptible persistent tasks restart on file changes instead of leaving the watch loop blocked.

    2.9.2release notes

  • Keeps stdin alive for persistent tasks in stream mode.

    2.9.0release notes

  • Pruning preserves file: and link: protocol entries in Bun lockfiles.

    2.9.0release notes

  • Pruning retains injected workspace package entries in pnpm lockfiles.

    2.9.0release notes

  • Fixes incorrect git root resolution in linked worktrees by resolving to the worktree root.

    2.9.0release notes

  • Dry-run cache status now matches normal runs by checking caching guards.

    2.8.21release notes

  • Unix domain sockets and other special files are skipped during file hashing.

    2.8.21release notes

  • The eslint-plugin-turbo task-definition iteration now guards against missing tasks or pipeline.

    2.8.21release notes

  • Fixes missing dependencies after npm lockfile parsing.

    2.8.21release notes

  • Lockfile parsing now preserves dedupePeers and unknown pnpm settings.

    2.8.21release notes

  • Avoids setsid() during PTY spawn to prevent macOS Gatekeeper CPU spikes.

    2.8.21release notes

  • Generator name conflicts across workspaces are resolved.

    2.8.21release notes

  • Fixes a hang with mixed interruptible persistent tasks.

    2.8.21release notes

  • Prevents a panic with persistent tasks.

    2.8.21release notes

  • Prevents stdin from being dropped for persistent tasks in stream mode.

    2.8.20release notes

  • Local binary resolution now detects scoped @turbo/{platform} packages.

    2.8.19release notes

  • The codemod no longer silently renames existing packages.

    2.8.18release notes

  • Affected task query results no longer include phantom tasks.

    2.8.18release notes

  • Affected task detection now handles $TURBO_ROOT$ inputs when this option is used.

    2.8.18release notes

  • Pruning with pnpm patches now preserves package.json key order.

    2.8.18release notes

  • Task arguments are now always included in filtered packages.

    2.8.18release notes

  • Affected detection no longer matches unrelated root files.

    2.8.18release notes

  • Inlining PlopTypes fixes implicit any for consumers.

    2.8.18release notes

  • Pruning preserves all Bun lockfile overrides.

    2.8.18release notesrelease notes

  • Validates task names when --affected produces an empty package scope.

    2.8.17release notes

  • Aligns query affectedTasks behavior with run --affected for $TURBO_ROOT$ inputs.

    2.8.17release notes

  • Fixes root-level tasks not executing when using //# CLI syntax.

    2.8.17release notes

  • Improves the connectivity check and offline error messages, and removes a redundant online check.

    2.8.17release notes

  • Resolves package-name-shaped path aliases in tsconfig paths.

    2.8.17release notes

  • Initializes the TUI terminal even when all tasks hit cache.

    2.8.17release notes

  • Nested Bun lockfile entries are promoted when a hoisted version is pruned.

    2.8.16release notes

  • The clean-globs codemod now guards against a missing pipeline key.

    2.8.16release notes

  • The errors-only setting is now honored for non-cached tasks.

    2.8.16release notes

  • Resolves pnpm catalog: specifiers to workspace dependencies in the task graph.

    2.8.15release notes

  • Waits for dependsOn on the first run and no longer uses the daemon in watch mode.

    2.8.15release notes

  • Ensures the noUpdateNotifier setting in turbo.json is respected.

    2.8.14release notesrelease notes

  • Preserves deeply nested workspace dependencies during npm lockfile pruning.

    2.8.14release notesrelease notes

  • On its first run, turbo watch waits for dependsOn tasks to complete.

    2.8.14release notes

  • Corrects dependency iteration order so dependencies takes precedence over devDependencies.

    2.8.13release notes

  • Filters orphaned Yarn packageExtensions entries during lockfile pruning.

    2.8.13release notes

  • Merges with into the root configuration instead of replacing it.

    2.8.13release notes

  • The command no longer hangs when daemon file watching fails.

    2.8.13release notesrelease notes

  • Fixes pruning for pnpm per-workspace lockfiles, Berry patch overrides, injected pnpm workspace packages, and file: or link: protocol entries in Yarn v1 and Bun lockfiles.

    2.8.13release notes

  • Excludes peer dependencies from workspace external dependency resolution and treats npm: alias dependencies as external rather than workspace references.

    2.8.13release notes

  • turbo prune now resolves correct nested Bun lockfile versions.

    2.8.12release notesrelease notes

  • peerDependencies no longer overwrite concrete dependency specifiers.

    2.8.12release notes

  • Restores the daemon client in RunCache for turbo watch.

    2.8.11release notes

  • Moves node-plop to dependencies so PlopTypes resolves for consumers.

    2.8.10release notes

  • Avoided a panic in sandboxed environments by removing the system-configuration dependency.

    2.8.8release notes

  • Orphaned Windows child processes are cleaned up on shutdown.

    2.8.8release notes

  • Fixed a hang in the Windows TUI caused by portable-pty 0.9.0 ConPTY changes.

    2.8.8release notes

  • Keeps stdin alive for persistent tasks in stream mode.

    2.8.7release notes

  • Normalizes bare LF to CRLF to prevent garbled logs.

    2.8.7release notes

  • turbo boundaries now handles subpath package imports.

    2.8.7release notesrelease notes

  • Emits a space for empty vt100 cells to fix TUI repainting when switching tasks.

    2.8.6release notes

  • A directory filter no longer causes Turbo to inject a package name.

    2.7.6release notes

  • Enables mouse capture for all terminals to restore scroll functionality.

    2.7.5release notes

  • Improves behavior for tasks killed due to out-of-memory conditions.

    2.7.5release notes

  • Makes package inference deterministic for subdirectory filters.

    2.7.5release notes

  • Using the bun package manager no longer causes create-turbo to hang.

    2.7.4release notes

  • File watching now works for non-root volumes on macOS.

    2.7.4release notes

  • Mouse mode is properly disabled when the TUI exits or panics.

    2.7.4release notes

  • The pnpm turbo script no longer enters an infinite loop.

    2.7.4release notes

  • Text selection works correctly when the TUI sidebar is hidden.

    2.7.4release notes

  • Workspace globs with a leading ./ are normalized.

    2.7.4release notes

  • Bun support now includes GitHub and Git packages.

    2.7.3release notes

  • The TUI is now shown when using --output-logs=errors-only or --output-logs=none.

    2.7.3release notes

  • Loader UI states in create-turbo were fixed.

    2.7.2release notes

  • Transit nodes in Devtools were fixed.

    2.7.2release notes

  • The TUI no longer flashes on a >>> FULL TURBO.

    2.7.2release notes

  • Fixes overly aggressive path checking during microfrontends loading.

    2.7.1release notes

  • Correctly validates the workspace root as a package.

    2.7.1release notes

  • Exit codes are preserved in notifyUpdate functions.

    2.7.0release notes

  • Quoting in turbo-ignore commands is fixed.

    2.7.0release notes

  • A crash during column wrapping in the vt100 TUI was prevented.

    2.6.3release notes

  • Relative paths are resolved before validation, so valid relative values are handled correctly.

    2.6.2release notes

  • Git commands use the -z option to handle Unicode file paths.

    2.6.2release notes

  • The execa call uses the shell option on Windows.

    2.6.2release notes

  • Boundary analysis now parses import attributes.

    2.6.1release notes

  • Graceful shutdown behavior is more deterministic.

    2.6.1release notes

  • Bun lockfile pruning better matches the real Bun lockfile format, handles patchedDependencies, includes bunfig.toml among copied files, and improves version resolution.

    2.6.1release notes

  • Adds Linux environment variables to global passthroughs.

    2.6.0release notes

  • Exporting a graph to a .dot file no longer requires Graphviz to be installed.

    2.6.0release notes

  • Fixes the binary call used by the microfrontends proxy on Windows.

    2.6.0release notes

  • Fixes recursive transitive closure analysis in the npm lockfile parser.

    2.6.0release notes

  • Fixes handling of injectWorkspacePackages when pruning with pnpm.

    2.6.0release notes

  • Fixes a symlinking bug on Windows.

    2.6.0release notes