Pull Request Overview
- Opened on October 21, 2026
- Status Merged
- Commit count 1 with first commit October 21, 2026
Total Delta
Open Days
Test Delta
How long has this pull request spent in each phase of its lifecycle?
| Fraction of total time | Business days | Phase |
|---|---|---|
| N/A | -0.0 days | Issue creation to work beginning |
|
|
0.2 days | Authoring 1 commit before pull request opened for review |
|
|
0.0 days | Awaiting first review |
|
|
0.6 days | Revising work with 0 commits in response to 2 reviews that left 3 comments |
|
|
17.0 days | Merge to deploy (still awaiting deployment) |
Total time for pull request
0.8 business days
from first commit authored to merge
Still awaiting deployment
build: update dependency chokidar to v6
Closes #34464 as a pr takeover
This PR contains the following updates:
| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| chokidar | ^5.0.0 β ^6.0.0 |
||||
| chokidar | 5.0.0 β 6.0.0 |
- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box
Release Notes
<details> <summary>paulmillr/chokidar (chokidar)</summary>
v6.0.0
High-level changes
- Rewrote the watcher around a single observation pipeline. Backend callbacks are treated as invalidations and confirmed with
lstat,stat, orreaddirbefore any event is emitted, so the final state after a burst of changes matches the filesystem. - Added native recursive watching through
fs.watch({ recursive: true }). The defaultautobackend uses it on macOS and Windows and per-directory watching elsewhere. - Shared native handles across watchers and opened them per directory only: files no longer own handles. This fixes
EBADFerrors when watching many files on macOS (#1385, #1452). - Replaced
fs.watchFilewith Chokidar-owned stat polling. Poll loops are shared across watchers at the fastest requested interval. - Required Node.js 22.22 or later.
API changes
- Added the
backendoption:'auto'(default),'native','native-recursive', or'polling'.usePolling: trueremains as a deprecated alias forbackend: 'polling'.
- Renamed
intervalandbinaryIntervaltopollingIntervalandpollingBinaryInterval.- The old names remain as deprecated aliases; the new names win when both are given.
- Changed the
atomicdefault tofalsewith polling. An explicit value is preserved. - Made
close()terminal:add()now throws once closing has started. Construct a new watcher instead. - Validated options in the constructor: invalid
backend,atomic,depth,awaitWriteFinish, and polling intervals throwTypeError. - Emitted errors from
add()aserrorevents instead of unhandled rejections (#1378). - Made
getWatched()return a null-prototype object, so a watched directory named__proto__is listed (#1493). UseObject.hasOwn()instead ofhasOwnProperty()on the result. - Stopped applying
ignoredto directories above a path passed towatch()oradd(), so a missing path is still watched through its parent (#1374). Other entries in those directories are still filtered.
Fixes
- Fixed a 100% CPU loop when the process working directory containing a relatively watched file was deleted (#1474).
- Fixed watching a filesystem root, which emitted
unlinkandunlinkDirfor every entry (#1184, #452). - Fixed
UNKNOWNerrors fromfs.watchon macOS sockets, which prevented watching/var/run(#1391). - Fixed a symlink whose target passes through a regular file (
ENOTDIR) disabling watching of its directory and preventingready(#1476). - Fixed files created in a newly added directory between its scan and watch registration being missed (#1471).
- Fixed watching a missing nested path stopping its parent directory's subtree from being watched (#1470).
- Fixed false
changeevents on Windows when many sibling files are written (#1466). - Fixed duplicate
addevents for unchanged files under directory activity (#1465). - Fixed replacing a watched directory with a file of the same name hanging the process (#1464).
- Fixed persistent watching stopping after a watched directory was removed (#1463).
- Fixed a deleted watched path not being reported when recreated: previously only a deleted file that was the sole watched path was watched for its return. Any path passed to
watch()oradd()is now awaited from its nearest existing parent. - Fixed event throttling discarding updates; the newest differing change is now replayed when the window closes (#1455).
- Fixed relative
ignoredpaths; relative strings now resolve againstcwdor the process working directory (#1436). - Fixed files not being detected when their directory did not exist before watching (#1422).
- Fixed removed files being reported as
unlinkDirinstead ofunlink(#1421). - Fixed ignored files and directories still being watched in WSL (#1418).
- Fixed
changebeing reported for every file when one file changed under Deno (#1417). - Fixed changes not being detected after the second save (#1399).
- Fixed renaming a watched directory that contains subdirectories on Windows (#1380, #1398).
- Fixed re-watching a path not honoring
ignoreInitial(#1386). - Fixed
EISDIRerrors during the initial scan of network drives (#1376). - Fixed watching an array of absolute file paths (#1366).
- Fixed unwatching a deleted watched directory on Windows, contributed by @sapphi-red in pull request #1467.
- Documented that unwatched paths stay ignored until they are added again (#1439).
Misc
- Made the
Statsimport type-only, contributed by @zhennann in pull request #1447. - Pinned dev dependencies and restricted workflow permissions, contributed by @43081j in pull requests #1457, #1460, and #1461.
</details> <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0NC4xNTYuMSIsInVwZGF0ZWRJblZlciI6IjQ0LjE1Ni4xIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJhY3Rpb246IG1lcmdlIiwiYXJlYTogYnVpbGQgJiBjaSIsInRhcmdldDogYXV0b21hdGlvbiJdfQ==-->
Comments Threads Pending Resolution
## Code Review
This pull request upgrades the chokidar dependency from version 5.0.0 to 6.0.0. To accommodate Chokidar 6's behavior of keeping ancestor directories of explicitly watched package files un-ignored, the file watcher utility in packages/angular/build/src/utils/watcher.ts has been updated. Specifically, a new helper isNodeModulesSegment was introduced, isPathWatched was optimized to stop traversing when reaching a node_modules segment, and the ignore logic in createChokidarIgnored was adjusted to correctly prune unwatched descendants inside node_modules. There are no review comments to address, and I have no additional feedback to provide.
Resolved Comment Threads
No resolved comments have been left on this PR.