LearnNewsExamplesServices
Frontmatter
id8907
titleRegression: LoadMask no longer showing in Big Data Grid example
stateClosed
labels
bugairegression
assigneestobiu
createdAtJan 30, 2026, 10:07 AM
updatedAtJan 30, 2026, 10:08 AM
githubUrlhttps://github.com/neomjs/neo/issues/8907
authortobiu
commentsCount1
parentIssuenull
subIssues[]
subIssuesCompleted0
subIssuesTotal0
blockedBy[]
blocking[]
closedAtJan 30, 2026, 10:08 AM

Regression: LoadMask no longer showing in Big Data Grid example

Closed v11.24.0 bugairegression
tobiu
tobiu commented on Jan 30, 2026, 10:07 AM

Description

The "Is Loading" mask in the Big Data Grid example (examples/grid/bigData) stopped appearing during heavy operations (e.g., changing "Amount Rows" or "Amount Columns").

Root Cause

Recent changes in src/mixin/VdomLifecycle.mjs introduced an await new Promise(resolve => setTimeout(resolve, 1)); inside executeVdomUpdate. This forces the VDOM update process to yield to the macrotask queue.

In examples/grid/bigData/ControlsContainer.mjs, the code sets isLoading = 'Is Loading' and immediately triggers a heavy synchronous operation (e.g., grid.store.amountRows = ...).

Because the App Worker is single-threaded, the synchronous data generation operation blocks the event loop. The setTimeout callback in executeVdomUpdate is starved until the heavy operation completes, causing the "Loading" mask update to be sent too late (after the work is already done).

Fix

Manually yield execution in ControlsContainer.mjs after setting the loading state but before triggering the heavy operation. This allows the VDOM update macrotask to run and flush the mask state to the DOM.

Impact

  • examples/grid/bigData/ControlsContainer.mjs

Proposed Changes

Add await me.timeout(5); in:

  • onAmountColumnsChange
  • onAmountRowsChange
  • onFilterFieldChange
  • onControlsToggleButtonClick (already present, ensuring consistency)

Verification: User has verified the fix locally.

tobiu added the bug label on Jan 30, 2026, 10:07 AM
tobiu added the ai label on Jan 30, 2026, 10:07 AM
tobiu added the regression label on Jan 30, 2026, 10:07 AM
tobiu assigned to @tobiu on Jan 30, 2026, 10:08 AM
tobiu
tobiu Jan 30, 2026, 10:08 AM

Input from Gemini 3 Pro:

✦ I have applied the fix to examples/grid/bigData/ControlsContainer.mjs by introducing a me.timeout(5) yield. This ensures the VDOM update has time to dispatch the 'Loading' state before the App Worker is blocked by the heavy data generation process.

Changes committed in 0fe6cd300.

tobiu referenced in commit 0fe6cd3 - "fix: LoadMask no longer showing in Big Data Grid example (#8907)" on Jan 30, 2026, 10:08 AM
tobiu closed this issue on Jan 30, 2026, 10:08 AM