parcel-bundler/parcel · warning · FSBailoutError
Responding to file system events exceeded threshold, start…
Error message
Responding to file system events exceeded threshold, start with empty cache.
What it means
During incremental builds Parcel processes file-watcher events. It estimates the cost of responding to the event batch (`duration * (events.length >> 8)`) and compares it to a threshold. When the predicted work exceeds the threshold, it raises an `FSBailoutError` and falls back to a clean-cache build rather than spending excessive time invalidating. This is a soft bailout, not a hard failure — the build continues from scratch.
Solutions
- Treat as informational — the next build will use a clean cache automatically.
- Reduce watcher noise by ignoring volatile dirs (node_modules, build output, .git) in the watcher config.
- If it recurs, run `parcel build --no-cache` once to reset, then continue normally.
Defensive patterns
Strategy: fallback
Validate before calling
// This is a watcher-driven bailout; pre-empt by reducing event volume.
// Configure the watcher to ignore volatile directories.
new Parcel({
// ensure watcher ignores node_modules / dist / .git
}); Prevention
- Add volatile dirs (node_modules, build output, .git) to watcher ignores.
- Avoid large branch switches while a watch build is running.
- Treat the message as informational — a clean build follows automatically.
When it happens
Trigger: A large batch of filesystem events (e.g. branch switch, mass rename, dependency reinstall) that floods the watcher beyond the cost threshold.
Common situations: Switching git branches with many changed files; `npm install` churning node_modules; large monorepo checkouts; deleting and recreating build trees.
Related errors
- Cannot change an asset's uniqueKey after it has been set.
- Config result is not hashable because it contains…
- IDBCache is only supported in the browser
- Worker send back a reference to a missing dev dep…
AI-assisted analysis of parcel-bundler/parcel@59484858a1 (2026-08-13).
Data as JSON: /api/errors/4de766c03b92b587.
Report an issue: GitHub.
Appendix: source
Thrown at packages/core/core/src/RequestTracker.js:876
let predictedTime = 0;
let startTime = Date.now();
for (let {path: _path, type} of events) {
if (++count === 256) {
let duration = Date.now() - startTime;
predictedTime = duration * (events.length >> 8);
if (predictedTime > threshold) {
logger.warn({
origin: '@parcel/core',
message:
'Building with clean cache. Cache invalidation took too long.',
meta: {
trackableEvent: 'cache_invalidation_timeout',
watcherEventCount: events.length,
predictedTime,
},
});
throw new FSBailoutError(
'Responding to file system events exceeded threshold, start with empty cache.',
);
}
}
let _filePath = toProjectPath(options.projectRoot, _path);
let filePath = fromProjectPathRelative(_filePath);
let hasFileRequest = this.hasContentKey(filePath);
// If we see a 'create' event for the project root itself,
// this means the project root was moved and we need to
// re-run all requests.
if (type === 'create' && filePath === '') {
logger.verbose({
origin: '@parcel/core',
message:
'Watcher reported project root create event. Invalidate all nodes.',
meta: {View on GitHub (pinned to 59484858a1)