-
Performance
Virtualize my long lists so they stop choking the page
Render thousands of rows without thousands of DOM nodes by windowing long lists and tables.
Free Prompt
My app renders long lists or tables (hundreds or thousands of rows: activity feeds, search results, admin tables, message threads) and the page gets slow or janky when the list grows.
Find every place I render an unbounded list and fix it:
1. Identify each list, its current item count in realistic use, and how it grows over time. A feed that shows 50 items on day one shows 5,000 after a few months of real usage.
2. For each one, recommend the right fix:
- Pagination or 'load more' if the list is primarily for browsing and SEO or deep-linking matters.
- Virtualization (windowing) if the user needs to scroll continuously through large data: render only the visible rows plus a small buffer, recycling DOM nodes as the user scrolls.
- Both, if the list also fetches data in pages.
3. Implement the chosen approach. If virtualization: handle variable row heights if my rows have them, keep scroll position stable when items load, and make sure keyboard navigation and screen readers still work (virtualized content shouldn't vanish from assistive tech; use the appropriate aria attributes and count announcements).
4. Make sure the fix doesn't break existing features: selection, inline editing, scroll-to-item, 'jump to latest'.
Don't virtualize short, bounded lists (a settings page with 20 items doesn't need it). Don't break find-in-page expectations without telling me the tradeoff. The deliverable is the updated list components plus a note on how to verify: measure scroll smoothness and DOM node count before and after with a large dataset.
What This Does / How This Helps
This finds your unbounded lists and tables and applies pagination or virtualization so the page only renders what's visible instead of thousands of DOM nodes. Unbounded lists are a slow-motion failure: fine in development with seed data, then the page gets progressively worse as real data accumulates, until a long-time user's page takes seconds to render and scrolls like mud. It's one of the most common reasons an app feels 'slow' a few months after launch. Fixing it before launch means your heaviest users never hit the wall.
Want to skip doing this by hand?
Fortivibe audits your app for all of the areas these prompts cover (and more).