OSS TanbouSign in with GitHub

A headless virtualizer that calculates only the items near the viewport to reduce rendering work for long lists

About these scores

OSS scale score is an unbounded metric that log-compresses and weights Stars, Watchers, Forks, and Contributors. Discovery score is the current OSS scale score minus the score at discovery. Update pace is commits in the last 30 days, growth momentum is the OSS scale score difference within the recent observation window, and OSS health is a 0–100 rating based on available recency, Community Health, and release data.

Stars
7,128
Primary language
TypeScript
License
MIT
Repository last updated
Sep 21, 2026
On this page

Overview

TanStack Virtual calculates positions for rendering only the visible portion of long lists and grids plus a small buffer. Its headless design lets React, Vue, Svelte, and other interfaces retain their own markup and styling.

Features and best fit

Hands-on tested within the scope below · Content checked:

Key features

What Virtual handles

Given item count, estimated size, viewport, and scroll offset, it returns the indices, starts, and sizes to render. The pinned example models 100 thirty-pixel rows, a 90-pixel viewport, and offset 300.

Sources: [1][2][3]

Best fit

Where it fits

It fits logs, search results, and tables where placing every item in the DOM would make rendering and interaction expensive. A real UI connects viewport measurements and renders only the returned items.

Sources: [2][3]

Before adoption

What to verify before adoption

It does not fetch data or supply finished UI components; the consumer owns stable item keys, size estimates, and the scroll element. GitHub and the 3.17.11 LICENSE report MIT.

Sources: [3][4][5]

3.17.11 / macOS, Node.js 26.7.0, isolated temporary npm project

Executed the pinned @tanstack/virtual-core API example and verified 9,10,11,12,13; no browser or external service was used.

Official sources

  1. [1]TanStack/virtual README at 78371e851e90(2026-10-05)
  2. [2]Virtual official documentation(2026-10-05)
  3. [3]@tanstack/virtual-core 3.17.11 package source(2026-10-05)
  4. [4]TanStack/virtual LICENSE at 78371e851e90(2026-10-05)
  5. [5]TanStack/virtual GitHub metadata(2026-10-05)
Supplemental curator note

It is useful when a long list must render fewer elements without surrendering its design. Start by passing known viewport and offset values to the core API and checking the overscanned range.

Try it in 3 steps

  1. 1

    Prepare the pinned core package

    Requires Node.js and npm. Create a temporary project pinned to virtual-core 3.17.11.

    demo=$(mktemp -d "${TMPDIR:-/tmp}/tanstack-virtual.XXXXXX") && cd "$demo" && npm init -y >/dev/null && npm install --save-exact @tanstack/virtual-core@3.17.11
  2. 2

    Provide virtual-list measurements

    Model 100 thirty-pixel items in a 90-pixel viewport at offset 300, with one overscan item on each side.

    printf '%s\n' 'import {Virtualizer} from '\''@tanstack/virtual-core'\''' 'let setRect,setOffset' 'const v=new Virtualizer({count:100,getScrollElement:()=>({}),estimateSize:()=>30,overscan:1,observeElementRect:(_,cb)=>{setRect=cb;return()=>{}},observeElementOffset:(_,cb)=>{setOffset=cb;return()=>{}},scrollToFn(){}})' 'v._didMount();v._willUpdate()' 'setRect({width:300,height:90});setOffset(300,false)' 'console.log(v.getVirtualItems().map(item=>item.index).join('\'','\''))' > demo.mjs
  3. 3

    Verify the render range

    Require indices 9 through 13: visible items 10–12 plus one overscan item on either side.

    test "$(node demo.mjs)" = "9,10,11,12,13"
Check the official README

Growth

Growth trends · Last 30 days

7,128 Stars

Trend data is still being collected.

Development activity

Last 90 days · weekly

Commits (last 30 days)
15
Open PRs
38

Development activity is still being collected.

Built with

Categories and tags

Categories

GitHub data

GitHub dataView detailed GitHub data

GitHub Topics

  • react
  • reactjs
  • virtualization
  • virtualized
  • javascript
  • scrolling
  • performance
  • solid
  • solidjs
  • svelte
  • vue
Stars
7,128
Forks
472
Watchers
34
Open issues
82
Contributors
152
Owner type
Organization
Primary language
TypeScript
License
MIT
Repository last updated
Sep 21, 2026
Write a related article

Share a guide or use case for this OSS in Markdown. Articles are published after administrator approval.

Report incorrect information

Tell us if any listing information is incorrect or outdated.

After reading this page, do you know what to do next?