Problem 14
Slow Dashboard — Find and Fix the Bottleneck
HARDINVESTIGATE
Performance+2
PerformanceDOM & EventsDebugging
The starter code renders a filterable data table that works correctly but is painfully slow. Investigate and fix the performance bottlenecks without changing the feature behavior. There are at least three anti-patterns to find: layout thrashing (reading layout properties inside a DOM-mutating loop), no input debouncing, and one-at-a-time DOM appends instead of batched updates.
Examples
Example 1
Input
rowCount = 500, user types "ab" in the filter
Output
Only rows containing "ab" are visible. Typing feels responsive with no visible lag.
Constraints
- Filtering must remain case-insensitive substring match
- The filter must debounce to avoid re-rendering on every keystroke
- DOM updates must be batched (use DocumentFragment or innerHTML)
Follow-up
Can you add a visible row count indicator that shows '47 of 500 rows' and updates as the filter changes?
Hints
Related Practice
Track
Frontend Fundamentals
Keep moving through related frontend fundamentals problems and build a stronger search-friendly practice loop around this topic.
View track →http://localhost:3000/preview
Console output will appear here...