Virtualize only the visible content for massive scrollable DOM nodes at 60FPS in TS/JS, React, Vue, Solid, Svelte, Lit & Angular while retaining 100% control over markup and styles.
Get Startedimport { useVirtualizer } from '@tanstack/react-virtual'
const rowVirtualizer = useVirtualizer({
count: 1000,
getScrollElement: () => parentRef.current,
estimateSize: () => 36,
})
// Map virtual rows to your UIimport { useVirtualizer } from '@tanstack/react-virtual'
const rowVirtualizer = useVirtualizer({
count: 1000,
getScrollElement: () => parentRef.current,
estimateSize: () => 36,
})
// Map virtual rows to your UISee what teams are saying
"We chose TanStack Virtual for our virtualization needs - it handles our massive lists without breaking a sweat."
"TanStack Virtual is the answer when you need to render thousands of rows without destroying performance. Headless, flexible, and just works."
"For anyone dealing with large datasets in React, TanStack Virtual is a must. The row virtualizer alone saved our app."
"We chose TanStack Virtual for our virtualization needs - it handles our massive lists without breaking a sweat."
"TanStack Virtual is the answer when you need to render thousands of rows without destroying performance. Headless, flexible, and just works."
"For anyone dealing with large datasets in React, TanStack Virtual is a must. The row virtualizer alone saved our app."
With just a few divs and some inline styles, you're already well on your way to creating an extremely powerful virtualization experience.
