TanStackVirtual

Headless UI for Virtualizing Large Element Lists

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 Started
NPM Downloads
6,593
Stars on Github
131
Contributors on GitHub
355,697
Dependents on GitHub
Just a quick look...
import { useVirtualizer } from '@tanstack/react-virtual'

const rowVirtualizer = useVirtualizer({
  count: 1000,
  getScrollElement: () => parentRef.current,
  estimateSize: () => 36,
})
// Map virtual rows to your UI
import { useVirtualizer } from '@tanstack/react-virtual'

const rowVirtualizer = useVirtualizer({
  count: 1000,
  getScrollElement: () => parentRef.current,
  estimateSize: () => 36,
})
// Map virtual rows to your UI
Get Started

Designed for zero design

Headless Virtualization means you're always in control of your markup, styles and components. Go design and implement the most beautiful UI you can dream up and let us take care of the hard parts.

Big Power, Small Package

Don't be fooled by the small bundle size. TanStack Virtual uses every byte to deliver powerful performance. After all, 60FPS is table stakes these days and we refuse to sacrifice anything for that 🧈-y smooth UX.

Maximum Composability

With a single function/hook, you'll get limitless virtualization for vertical, horizontal, and grid-style layouts. The API is tiny (literally 1 function), but its composability is not.

Loved by Developers

See what teams are saying

"We chose TanStack Virtual for our virtualization needs - it handles our massive lists without breaking a sweat."

Evan Bacon
@Baconbrix · Expo

"TanStack Virtual is the answer when you need to render thousands of rows without destroying performance. Headless, flexible, and just works."

Developer Review
Community ·

"For anyone dealing with large datasets in React, TanStack Virtual is a must. The row virtualizer alone saved our app."

Community Developer
GitHub Discussion ·

"We chose TanStack Virtual for our virtualization needs - it handles our massive lists without breaking a sweat."

Evan Bacon
@Baconbrix · Expo

"TanStack Virtual is the answer when you need to render thousands of rows without destroying performance. Headless, flexible, and just works."

Developer Review
Community ·

"For anyone dealing with large datasets in React, TanStack Virtual is a must. The row virtualizer alone saved our app."

Community Developer
GitHub Discussion ·

Framework Agnostic & Feature Rich

Lightweight (10 - 15kb) Tree-Shaking Headless Vertical/Column Virtualization Horizontal/Row Virtualization Grid Virtualization Window-Scrolling Fixed Sizing Variable Sizing Dynamic/Measured Sizing Scrolling Utilities Sticky Items

Take it for a spin!

With just a few divs and some inline styles, you're already well on your way to creating an extremely powerful virtualization experience.

Partners

Code Rabbit
Cloudflare
AG Grid
Netlify
Neon
WorkOS
Clerk
Convex
Electric
Sentry
Prisma
Strapi
Unkey
UI.dev
Nozzle.io
Virtual You?
We're looking for TanStack Virtual Partners to join our mission! Partner with us to push the boundaries of TanStack Virtual and build amazing things together.
Let's chat
Wow, you've come a long way!
Only one thing left to do...
Get Started!