Every keystroke in the table filter re-rendered all visible rows. Wrapping the row renderer in memo with a custom comparator cut re-renders by ~60%.
const TableRow = memo(TableRowImpl, (prev, next) =>
prev.row.id === next.row.id &&
prev.row.version === next.row.version &&
prev.isSelected === next.isSelected
);Measured on the 1k-row demo: keystroke latency went from 96ms to 34ms (p95).
Nice one — the filter feels instant now. 🎉