Frontmatter
| id | 8973 |
| title | fix: Component Columns disappear after horizontal scroll due to stale mounted state (#8964) |
| state | Closed |
| labels | bugai |
| assignees | tobiu |
| createdAt | Feb 3, 2026, 10:17 PM |
| updatedAt | Feb 3, 2026, 10:30 PM |
| githubUrl | https://github.com/neomjs/neo/issues/8973 |
| author | tobiu |
| commentsCount | 1 |
| parentIssue | 8964 |
| subIssues | [] |
| subIssuesCompleted | 0 |
| subIssuesTotal | 0 |
| blockedBy | [] |
| blocking | [] |
| closedAt | Feb 3, 2026, 10:29 PM |
fix: Component Columns disappear after horizontal scroll due to stale mounted state (#8964)
tobiu assigned to @tobiu on Feb 3, 2026, 10:17 PM
tobiu added parent issue #8964 on Feb 3, 2026, 10:17 PM

tobiu
Feb 3, 2026, 10:28 PM
Input from Gemini 3 Pro:
✦ I have updated
GridRowto useupdateDepth: -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
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 = falsefailed. The root cause is thatNeo.grid.Rowdefaults toupdateDepth: 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) inNeo.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:
src/grid/Row.mjs:updateDepth: -1instatic config.me._vdomassignment pattern.