VirtualList

Windowed list — only renders visible rows + overscan. Uses ResizeObserver for dynamic container height. Generic over item type.

Preview

Usage

import { VirtualList } from '@ramtt/ui'

<VirtualList
  items={items}
  itemHeight={32}
  height={400}
  renderItem={(item) => <Row item={item} />}
/>

Props

PropTypeDefaultDescription
items*readonly T[]All items in the list
itemHeight*numberFixed row height in px
renderItem*(item: T, index: number) => ReactNodeRow renderer
overscannumber5Extra rows above/below viewport
heightnumberContainer height (else uses ResizeObserver)
getKey(item: T, index: number) => string | numberKey extractor (default: index)
classNamestringAdditional Tailwind classes