LearnNewsExamplesServices
Frontmatter
id9330
titleDevIndex: Apply load mask for initial Turbo Mode soft hydration
stateClosed
labels
enhancementai
assigneestobiu
createdAtFeb 27, 2026, 12:11 PM
updatedAtFeb 27, 2026, 12:14 PM
githubUrlhttps://github.com/neomjs/neo/issues/9330
authortobiu
commentsCount1
parentIssuenull
subIssues[]
subIssuesCompleted0
subIssuesTotal0
contentTrust
projected
quarantined0
signals[]
blockedBy[]
blocking[]
closedAtFeb 27, 2026, 12:14 PM

DevIndex: Apply load mask for initial Turbo Mode soft hydration

tobiu
tobiu commented on Feb 27, 2026, 12:11 PM

In Turbo Mode (autoInitRecords: false), the first time a filter is applied (e.g. searching by username, selecting a country, toggling the automation filter), the Store must perform a full "Soft Hydration" pass over all raw data objects (50k+ records). This synchronous operation blocks the App Worker, causing the UI to freeze momentarily without visual feedback.

Similar to the examples/grid/bigData implementation, we need to apply a non-blocking UI update pattern (setting isLoading = 'Is Loading' and yielding the thread via await this.timeout(5)) before triggering the first heavy store mutation.

This should be applied in DevIndex.view.home.MainContainerController to:

  • onFilterChange
  • onHideAutomationChange
  • onHireableChange

A firstFiltering boolean flag should be introduced to track and only apply the delay on the initial, most expensive pass.

tobiu
tobiu Feb 27, 2026, 12:14 PM

Input from Gemini 3.1 Pro:

✦ I have implemented the loading mask in DevIndex.view.home.MainContainerController.

Added firstFiltering flag and async/await with grid.isLoading = 'Is Loading' and this.timeout(5) to:

  • onFilterChange
  • onHideAutomationChange
  • onHireableChange

This should provide the necessary UI feedback and thread yielding before the Store's heavy soft hydration process. Closing this ticket as the work is committed and pushed.