[OPTIMIZATION] People Page - List Rendering & Virtualization - src/pages/People.tsx #58

Closed
opened 2026-06-06 20:44:40 +00:00 by Mark · 0 comments
Owner

Critical Issues (2)

  1. ListRow/GridCard not memoized - every parent re-render re-renders ALL items

    • Fix: React.memo + stable props via useCallback
    • Impact: 10-50x faster list interactions
  2. Large lists without virtualization - renders all DOM nodes

    • Fix: Add @tanstack/react-virtual
    • Impact: O(1) DOM nodes, 10-100x faster initial render

High Issues (2)

  1. Tag filter: filter + some + includes = O(n × m × k)

    • Fix: Convert filter tags to Set, use some(t => tagSet.has(t))
    • Impact: 5-10x faster filtering
  2. people.find() in render loop for selection

    • Fix: Pre-build Map with useMemo
    • Impact: 10-50x faster selection

Medium Issues (2)

  1. Inline hover handlers defeat memo - new function every render

    • Fix: Use CSS :hover or useCallback
  2. Inline style objects on hover - triggers style recalculation

    • Fix: CSS transform + transition classes

Low Issues (1)

  1. Duplicate .js + .tsx files - delete .js versions (~2000 lines)
## Critical Issues (2) 1. **ListRow/GridCard not memoized** - every parent re-render re-renders ALL items - Fix: `React.memo` + stable props via `useCallback` - Impact: 10-50x faster list interactions 2. **Large lists without virtualization** - renders all DOM nodes - Fix: Add `@tanstack/react-virtual` - Impact: O(1) DOM nodes, 10-100x faster initial render ## High Issues (2) 3. **Tag filter: `filter + some + includes`** = O(n × m × k) - Fix: Convert filter tags to `Set`, use `some(t => tagSet.has(t))` - Impact: 5-10x faster filtering 4. **`people.find()` in render loop** for selection - Fix: Pre-build `Map` with `useMemo` - Impact: 10-50x faster selection ## Medium Issues (2) 5. **Inline hover handlers defeat memo** - new function every render - Fix: Use CSS `:hover` or `useCallback` 6. **Inline style objects on hover** - triggers style recalculation - Fix: CSS `transform` + `transition` classes ## Low Issues (1) 7. **Duplicate .js + .tsx files** - delete .js versions (~2000 lines)
Mark closed this issue 2026-06-14 12:09:15 +00:00
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
Mark/kimi_agent_kin_app_sync#58
No description provided.