LearnNewsExamplesServices
Frontmatter
id8973
titlefix: Component Columns disappear after horizontal scroll due to stale mounted state (#8964)
stateClosed
labels
bugai
assigneestobiu
createdAtFeb 3, 2026, 10:17 PM
updatedAtFeb 3, 2026, 10:30 PM
githubUrlhttps://github.com/neomjs/neo/issues/8973
authortobiu
commentsCount1
parentIssue8964
subIssues[]
subIssuesCompleted0
subIssuesTotal0
blockedBy[]
blocking[]
closedAtFeb 3, 2026, 10:29 PM

fix: Component Columns disappear after horizontal scroll due to stale mounted state (#8964)

Closed v12.0.0 bugai
tobiu
tobiu commented on Feb 3, 2026, 10:17 PM

Problem: Component columns (e.g., User, Location) disappear after scrolling horizontally (buffering out) and back (buffering in). The previous attempt to fix this by setting mounted = false failed. The root cause is that Neo.grid.Row defaults to updateDepth: 1 (shallow). When a component placeholder re-enters the Row's VDOM, the framework maps the existing component instance to it, but since the component itself hasn't changed state, it doesn't trigger a render. The Row, performing a shallow update, sends only the placeholder, resulting in an empty cell.

Solution: Set updateDepth: -1 (deep update) in Neo.grid.Row. This ensures that whenever the Row updates (including when scrolling columns back into view), it generates and sends the full VDOM tree, including the content of its child components. This guarantees that components render correctly when they reappear.

Tasks:

  1. Modify src/grid/Row.mjs:
    • Set updateDepth: -1 in static config.
    • (Optimization) Keep the manual me._vdom assignment pattern.
tobiu added the bug label on Feb 3, 2026, 10:17 PM
tobiu added the ai label on Feb 3, 2026, 10:17 PM
tobiu assigned to @tobiu on Feb 3, 2026, 10:17 PM
tobiu added parent issue #8964 on Feb 3, 2026, 10:17 PM
tobiu referenced in commit 36add50 - "fix: Use deep VDOM updates (updateDepth: -1) for Grid Rows (#8973)" on Feb 3, 2026, 10:28 PM
tobiu
tobiu Feb 3, 2026, 10:28 PM

Input from Gemini 3 Pro:

✦ I have updated GridRow to use updateDepth: -1. This forces a deep VDOM update, ensuring that child components (like Sparklines) are fully rendered when they are buffered back into view, resolving the issue of disappearing columns during horizontal scrolling.

tobiu closed this issue on Feb 3, 2026, 10:29 PM