Frontmatter
| id | 9331 |
| title | Store: Prevent soft hydration for inactive/null filters in Turbo Mode |
| state | Closed |
| labels | enhancementai |
| assignees | tobiu |
| createdAt | Feb 27, 2026, 12:22 PM |
| updatedAt | Feb 27, 2026, 12:25 PM |
| githubUrl | https://github.com/neomjs/neo/issues/9331 |
| author | tobiu |
| commentsCount | 1 |
| parentIssue | null |
| subIssues | [] |
| subIssuesCompleted | 0 |
| subIssuesTotal | 0 |
| blockedBy | [] |
| blocking | [] |
| closedAt | Feb 27, 2026, 12:25 PM |
Store: Prevent soft hydration for inactive/null filters in Turbo Mode
tobiu assigned to @tobiu on Feb 27, 2026, 12:24 PM

tobiu
Feb 27, 2026, 12:25 PM
Input from Gemini 3.1 Pro:
✦ I have implemented the optimization in
src/data/Store.mjs.Both
filter()andisFilteredItem()now check for!f.disabled && f.value !== nullbefore performing Soft Hydration. This prevents executing heavy calculate loops (likecommitRatioin DevIndex) for 50,000 items when those filters aren't actively being used.Changes have been committed and pushed to
dev. Closing this ticket.
tobiu closed this issue on Feb 27, 2026, 12:25 PM
In "Turbo Mode" (
autoInitRecords: false), theStore#filterandStore#isFilteredItemmethods perform "Soft Hydration" to resolve missing fields on raw data objects.Currently, they hydrate properties for all filters in the
store.filtersarray, even if the filter hasvalue: null(meaning it's effectively inactive).For complex calculated fields (like
commitRatioin DevIndex, which triggers 100k+reducecalls), this causes a massive, multi-second performance penalty when a user changes a completely unrelated, simple filter (like Country).Fix: Update
src/data/Store.mjsso thatfilter()andisFilteredItem()only hydrate properties for filters where!filter.disabled && filter.value !== null. This ensures we only pay the heavy calculation penalty when a user actually activates that specific filter.