Skip to content

fix: Refactor turbo watch - #13423

Merged
anthonyshew merged 2 commits into
mainfrom
shew/fix-watch-gitignored-bursts
Jul 21, 2026
Merged

anthonyshew merged 2 commits into
mainfrom
shew/fix-watch-gitignored-bursts

Conversation

@anthonyshew

Copy link
Copy Markdown
Contributor

Summary

  • replace the shared raw filesystem event broadcast with scoped, demand-driven subscriptions for package changes, hashing, outputs, discovery, cookies, devtools, and daemon root monitoring
  • model inherited and nested Git ignores, global excludes, tracked exceptions, dynamic Git controls, and explicit ignored input/output interests
  • prune ordinary ignored trees from Linux inotify coverage while preserving explicit coverage, and route non-mutating backends directly after readiness
  • add scoped recovery for backend rescans/errors and document the watcher architecture

Closes #13402

Validation

  • cargo test -p turborepo-filewatch --lib focused and platform-independent coverage
  • Linux all-feature filewatch test binary in Docker: 68/68 passed
  • cargo test -p turborepo-lib package_changes_watcher::test
  • cargo clippy -p turborepo-filewatch --all-targets --all-features -- -D warnings
  • cargo clippy -p turborepo-lib -p turborepo-daemon -p turborepo-devtools --all-targets -- -D warnings
  • cargo check -p turborepo-filewatch --target x86_64-pc-windows-gnu
  • original Linux reproduction with three repeated 100,000-file bursts: zero package/hash lag, one package build each, and one web-server start

Notes

Native macOS FSEvents stress was limited by local stream exhaustion after repeated test runs; focused FSEvents path/rescan tests and macOS compilation pass.

@anthonyshew
anthonyshew requested a review from a team as a code owner July 21, 2026 18:14
@anthonyshew
anthonyshew requested review from tknickman and removed request for a team July 21, 2026 18:14
@vercel

vercel Bot commented Jul 21, 2026 •

Copy link
Copy Markdown
Contributor

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
examples-basic-web Ready Ready Preview, Comment, Open in v0 Jul 21, 2026 6:44pm
examples-designsystem-docs Ready Ready Preview, Comment, Open in v0 Jul 21, 2026 6:44pm
examples-gatsby-web Ready Ready Preview, Comment, Open in v0 Jul 21, 2026 6:44pm
examples-kitchensink-blog Ready Ready Preview, Comment, Open in v0 Jul 21, 2026 6:44pm
examples-nonmonorepo Ready Ready Preview, Comment, Open in v0 Jul 21, 2026 6:44pm
examples-svelte-web Ready Ready Preview, Comment, Open in v0 Jul 21, 2026 6:44pm
examples-tailwind-web Ready Ready Preview, Comment, Open in v0 Jul 21, 2026 6:44pm
examples-vite-web Ready Ready Preview, Comment, Open in v0 Jul 21, 2026 6:44pm
turbo-site Ready Ready Preview, Comment, Open in v0 Jul 21, 2026 6:44pm
turborepo-eve-agent Ready Ready Preview, Comment, Open in v0 Jul 21, 2026 6:44pm

@anthonyshew anthonyshew changed the title fix: Prevent ignored file bursts from restarting watch tasks fix: Refactor turbo watch Jul 21, 2026
@anthonyshew
anthonyshew merged commit 328b99f into main Jul 21, 2026
51 checks passed
@anthonyshew
anthonyshew deleted the shew/fix-watch-gitignored-bursts branch July 21, 2026 19:01
anthonyshew pushed a commit that referenced this pull request Jul 21, 2026
## Release v2.10.6-canary.5

> [!CAUTION]
> Versioned docs aliasing FAILED. [View
logs](https://github.com/vercel/turborepo/actions/runs/29859795408)

### Changes

- docs: Update Geistdocs to 1.13.0 (#13412) (`b1d8c9f`)
- release(turborepo): 2.10.6-canary.4 (#13401) (`90eba05`)
- fix: Preserve pnpm `node@runtime:` lockfile entries (#13408)
(`4ac2f47`)
- chore: Fix typos in with-solid example and globwatch comment (#13416)
(`424cabd`)
- refactor: Remove unused public APIs found by Hawk (#13420) (`831990d`)
- fix: Check dynamic imports in boundaries (#13418) (`31be2b8`)
- refactor: Use regex! for static pattern compilation (#13419)
(`82cd34c`)
- fix: Refactor `turbo watch` (#13423) (`328b99f`)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
anthonyshew pushed a commit that referenced this pull request Jul 22, 2026
## Release v2.10.6

> [!CAUTION]
> Versioned docs aliasing FAILED. [View
logs](https://github.com/vercel/turborepo/actions/runs/29930611207)

### Changes

- release(turborepo): 2.10.5 (#13368) (`a6a563a`)
- fix: Disable unresolved Cargo artifact caching (#13362) (`d76aa27`)
- fix: Surface create-turbo Git failures (#13371) (`8a8b133`)
- fix: Resolve exact cargo profile outputs (#13366) (`0e6a99b`)
- fix: Prune Bun production workspace dev dependencies (#13369)
(`fee6b66`)
- fix: Resolve Cargo target output layouts (#13370) (`8c097cd`)
- release(turborepo): 2.10.6-canary.1 (#13374) (`d0dca26`)
- fix: Preserve Yarn Babel extension during pruning (#13373) (`02ef828`)
- feat: Support Cargo-only repos (#13378) (`24dc68e`)
- fix: Preserve colors in TUI output (#13381) (`99c9ffb`)
- feat: Infer Cargo workspace tasks (#13380) (`58fe9df`)
- fix: Retain shutdown signals for force exit (#13382) (`62ecdaa`)
- release(turborepo): 2.10.6-canary.2 (#13383) (`8035b5d`)
- fix: Resolve weekly security audit vulnerabilities (#13358)
(`64f4aac`)
- chore: Update to Rust 1.97.0 (#13322) (`feb0a1a`)
- fix: Pin VS Code extension macOS runners (#13391) (`26169cd`)
- release(turborepo): 2.10.6-canary.3 (#13392) (`f753f04`)
- docs: Add Experimental Rust Guide (#13375) (`a2bf8a2`)
- ci: Use affected filtering for JS tests (#13386) (`0536a70`)
- ci: Fold docs checks into quality (#13385) (`fcd1858`)
- ci: Verify schemas through Turborepo (#13387) (`66551bc`)
- chore: Avoid duplicate N-API Cargo build (#13388) (`4ddacf4`)
- chore: Hash embedded frameworks data in Rust builds (#13389)
(`373c0a2`)
- ci: Include VS Code extension type checks (#13390) (`716ad9c`)
- refactor: Run releaser bundle directly (#13393) (`b6a92de`)
- refactor: Move release publishing into releaser (#13394) (`e0cf33c`)
- refactor: Consolidate release orchestration (#13395) (`51f5529`)
- feat: Add crate-scoped Cargo verification tasks (#13398) (`aeb2ee5`)
- fix: Fetch release commit parent (#13400) (`ab05127`)
- docs: Update Geistdocs to 1.13.0 (#13412) (`b1d8c9f`)
- release(turborepo): 2.10.6-canary.4 (#13401) (`90eba05`)
- fix: Preserve pnpm `node@runtime:` lockfile entries (#13408)
(`4ac2f47`)
- chore: Fix typos in with-solid example and globwatch comment (#13416)
(`424cabd`)
- refactor: Remove unused public APIs found by Hawk (#13420) (`831990d`)
- fix: Check dynamic imports in boundaries (#13418) (`31be2b8`)
- refactor: Use regex! for static pattern compilation (#13419)
(`82cd34c`)
- fix: Refactor `turbo watch` (#13423) (`328b99f`)
- release(turborepo): 2.10.6-canary.5 (#13424) (`ceee06b`)
- chore: Upgrade brace-expansion (#13429) (`d45bf2a`)
- chore: Update tar to 7.5.18 (#13428) (`d0dbd5a`)
- chore: Upgrade js-yaml (#13427) (`c8e36ad`)
- fix: Match JIT inputs for affected tasks (#13426) (`1b95fcb`)
- fix: Preserve project Yarn package extensions (#13425) (`f08f35c`)

---------

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

This branch was successfully deployed

1 active deployment
Preview – turborepo-eve-agent — 634e2d72 Deployed Jul 21, 2026 by vercel[bot]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

turbo watch triggers a full graph re-run on file bursts in gitignored directories (no source change)

2 participants