Comfy-Org / Comfy-Org/ComfyUI_frontend

bug: onNodeChange listener throw silences notifyChange for the same change (canvas dirty missed)

Open
#15,682 0 comments 0 reactions 1 assignee Claimed by @benjcooley View on GitHub
Potential Bug
Dominant language
TypeScript
Stars
2k
Forks
699
Avg merge
1d 7h
Merged PRs (30d)
490

Description

## Bug

In `src/renderer/core/layout/store/layoutStore.ts`, the microtask flush loop calls `this.notifyNodeChange(queuedChange)` then `this.notifyChange(queuedChange)` without a try/catch around the first call. If any `onNodeChange` listener throws, `notifyChange` for that entry is never called — global `onChange` listeners (including `notifyLayoutChanges` → canvas dirty mark) miss the change entirely.

The `queueGeometryChange` equivalent wraps each listener in try/catch; the `queueChange` flush does not.

## Impact

A single misbehaving node-scoped listener can silently suppress canvas dirty marks, causing stale renders that don't resolve until the next unrelated change.

## Fix

```ts
queuedChanges.forEach((queuedChange) => {
try { this.notifyNodeChange(queuedChange) } catch (e) { console.error(e) }
this.notifyChange(queuedChange)
})
```

_Filed as follow-up from review of #15017 (merged 2026-08-14)._

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.