Change8

v2.10.0

📦 turborepoView on GitHub →
11 features🐛 31 fixes🔧 8 symbols

Summary

This release introduces incremental task caching, improved graceful shutdown, and new configuration options for local cache eviction (`cacheMaxAge`, `cacheMaxSize`). It also includes numerous fixes related to lockfile pruning, filtering logic, and Vercel authentication flows.

Migration Steps

  1. If you use the codemod, note that it now handles package manager catalogs.
  2. If you rely on local cache eviction, you may need to configure `cacheMaxAge` and `cacheMaxSize`.
  3. If you use Vercel authentication, note the move to standard OAuth/device flows.

✨ New Features

  • Replaced package manager commands in scaffolded README files within create-turbo.
  • Added support for package manager catalogs in the migration codemod (@turbo/codemod).
  • Added `cacheMaxAge` and `cacheMaxSize` options for local cache eviction in @turbo/repository.
  • Added Next.js + Elysia full-stack starter template to examples.
  • Added incremental task caching.
  • Allowed `--affected` and `--filter` flags to be combined.
  • Added circular package dependency detection to boundaries.
  • Increased remote cache upload chunk size from 8KB to 256KB.
  • Parallelized `boundaries` checking with Rayon and cache DFS traversals.
  • Added graceful shutdown support.
  • Moved Vercel authentication to standard OAuth/device flows.

🐛 Bug Fixes

  • Ensured `$schema` URL is always updated to a versioned format during migration.
  • Added support for `turbo.jsonc` in codemod transforms.
  • Preserved prerelease info in schema URL during codemod migration.
  • Suppressed telemetry alert when running on Vercel.
  • Added missing `@types/node` to `with-svelte` example apps.
  • Resolved correct nested bun lockfile versions during prune.
  • Reverted change to avoid `setsid()` in PTY spawn.
  • Unblocked `watch` loop so interruptible persistent tasks restart on file changes.
  • Treated `*` as wildcard in preflight Access-Control-Allow-Headers.
  • Backfilled missing pnpm workspace importer entries during prune.
  • Included transitive dependencies in engine graph pruning for affected paths using Task Graph.
  • Updated AI-generated response disclaimer to include human attribution.
  • Preserved shallow install strategy during npm lockfile pruning.
  • Preserved per-workspace lockfiles during pnpm pruning.
  • Prevented `filterUsingTasks` `--filter` from pulling dependents into Task Graph.
  • Only enforced signature key length for keys that exist.
  • Validated engine concurrency after task-level filtering.
  • Retained microfrontend proxy tasks when using `filterUsingTasks`.
  • Fixed Bun workspace lockfile pruning producing invalid output.
  • Respected dirty `.gitignore` patterns during task input hashing.
  • Added actionable message when remote cache is requested but not linked.
  • Loaded custom CA certificates in fast webpki-only HTTP client.
  • Aligned Markdown docs routing with docs/md endpoints.
  • Supported two-dot git ranges in filter selectors.
  • Ignored `SIGINT` in shim after spawning local `turbo`.
  • Supported pnpm v11 multi-document lockfiles.
  • Preserved graceful shutdown exit code.
  • Kept Node wrapper alive during graceful shutdown.
  • Preserved PTY graceful shutdown semantics.
  • Preserved legacy Vercel auth compatibility.
  • Recovered Vercel auth tokens across login flows.

Affected Symbols