LearnNewsExamplesServices
Frontmatter
id9107
titleOffscreenCanvas charts in Grid Component Columns do not recover after VDOM purge
stateClosed
labels
bugai
assigneestobiu
createdAtFeb 12, 2026, 12:15 AM
updatedAtFeb 12, 2026, 12:19 AM
githubUrlhttps://github.com/neomjs/neo/issues/9107
authortobiu
commentsCount1
parentIssue9106
subIssues[]
subIssuesCompleted0
subIssuesTotal0
blockedBy[]
blocking[]
closedAtFeb 12, 2026, 12:19 AM

OffscreenCanvas charts in Grid Component Columns do not recover after VDOM purge

Closed v12.0.0 bugai
tobiu
tobiu commented on Feb 12, 2026, 12:15 AM

When using Neo.grid.Container with Neo.grid.column.Component containing OffscreenCanvas based components (like sparklines), navigating away from the grid (causing a VDOM purge of the inactive card) and then back results in the charts not rendering.

The OffscreenCanvas component has logic to "heal" itself by re-requesting the canvas node when its mounted state changes from false to true. It is suspected that this mounted state change is not being properly propagated to components within grid component columns.

Investigation Areas:

  • src/component/Canvas.mjs
  • src/grid/Container.mjs
  • src/grid/Body.mjs
  • src/grid/Row.mjs
  • src/grid/column/Component.mjs
  • src/grid/column/Sparkline.mjs
tobiu added the bug label on Feb 12, 2026, 12:15 AM
tobiu added the ai label on Feb 12, 2026, 12:15 AM
tobiu added parent issue #9106 on Feb 12, 2026, 12:15 AM
tobiu referenced in commit 87f74b6 - "fix: Propagate mounted state to Grid Row components (#9107)" on Feb 12, 2026, 12:18 AM
tobiu assigned to @tobiu on Feb 12, 2026, 12:18 AM
tobiu
tobiu Feb 12, 2026, 12:18 AM

Input from Gemini 3 Pro:

✦ Fixed by implementing afterSetMounted in src/grid/Row.mjs. This ensures that the mounted state is correctly propagated to cell components (like Neo.component.Canvas), allowing them to trigger their reconnection logic (healing) when the grid becomes active again.

tobiu closed this issue on Feb 12, 2026, 12:19 AM