OSS探訪GitHubでログイン

大規模list・gridのvisible範囲だけをrenderしてReact UIのDOM負荷を抑えるvirtualization library

スコアの見方

OSS規模スコアはStars・Watchers・Forks・Contributorsを対数圧縮して重み付けした現在の規模指標(上限なし)です。発掘スコアは現在のOSS規模スコアから発掘時点のOSS規模スコアを引いた値、更新ペースは直近30日Commit数、成長モメンタムは直近の観測期間におけるOSS規模スコア差、OSS健全度は取得できた更新状況・Community Health・Releaseの0〜100評価です。

Stars
17,208
主要言語
TypeScript
ライセンス
MIT
リポジトリ最終更新
2026/10/03
ページ内ナビ

概要

react-windowは大量のrow/cellをすべてDOMへ配置せず、viewport周辺の必要範囲だけをrenderするReact virtualization libraryです。ListとGridを中心にfixed/dynamic size、scroll control、imperative refを提供し、大規模data表示時のrender costとmemory usageを抑えます。

特徴と向いている用途

公式資料に基づく紹介・実機未検証 · 内容確認日:

主な特徴

Listで大量rowのvisible範囲だけをrenderする

Listはrow count、row component、row height等を受け取り、scroll位置に応じて必要なrowだけをrenderします。

出典:[1][3]

Gridでrow×columnのtabular/2D dataをvirtualizeする

Gridは2次元cellをvirtualizeし、大きなtableやspreadsheet-like UIでDOM node数を抑えられます。

出典:[3]

dynamic row heightとimperative scroll APIを使える

v2はdynamic row height helperとList/Grid ref hookを公開し、content sizeが一定でないlistやprogrammatic scrollに対応します。

出典:[1][3]

向いている用途

数千〜数万件のlist/tableをReactで軽量に表示したい場合に向く

全件DOM化するとlayout/render costが増えるlog viewer、catalog、admin table、feed等で、表示中範囲だけを維持したいUIに適します。

出典:[1]

導入前の確認

2.3.3はReact 18または19をpeer dependencyとして要求する

package metadataはReact/React DOM ^18.0.0 || ^19.0.0を要求します。

出典:[2]

2.3.3はdynamic size scroll時の不要なsize計算を修正する

2.3.3はcached boundsを超えてscrollした際、dynamic sized row/columnで不要なsize calculationが発生する2.3.2のperformance regressionを修正しています。

出典:[4]

参考にした公式資料

  1. [1]react-window 2.3.3 README(2026-10-05)
  2. [2]react-window 2.3.3 package metadata(2026-10-05)
  3. [3]react-window 2.3.3 public exports(2026-10-05)
  4. [4]react-window 2.3.3 release(2026-10-05)
  5. [5]react-window MIT license(2026-10-05)
編集部からの補足

v2はv1とAPIが異なります。既存記事やsampleがv1前提の場合があるため、2.x documentationのList/Grid propsを基準に実装してください。

3ステップで試す

  1. 1

    react-window 2.3.3を固定して導入する

    一時npm projectへreact-windowとReact peer dependencyを固定して導入します。

    demo=$(mktemp -d "${TMPDIR:-/tmp}/react-window.XXXXXX") && cd "$demo" && npm init -y >/dev/null && npm install --save-exact react-window@2.3.3 react@19.2.0 react-dom@19.2.0
  2. 2

    package versionを確認する

    review対象versionが導入されていることを確認します。

    test "$(node -e "console.log(JSON.parse(require('fs').readFileSync('node_modules/react-window/package.json')).version)")" = '2.3.3'
  3. 3

    List/Grid APIのexportを確認する

    DOMを起動せず、v2の主要virtualization componentとref hookを確認します。

    test "$(node --input-type=module -e "import * as R from 'react-window'; console.log(['List','Grid','useListRef','useGridRef'].every(k=>k in R))")" = 'true'
公式READMEで確認

成長

成長の推移 · 直近30日

17,208 Stars

推移データを蓄積中です。

開発アクティビティ

直近90日・週次

Commit(直近30日)
15
Open PR
0

開発アクティビティを蓄積中です。

Built with

カテゴリとタグ

GitHubデータ

GitHubのデータGitHubの詳細データを見る
Stars
17,208
Forks
817
Watchers
65
Open Issues
0
Contributors
37
所有者種別
User
主要言語
TypeScript
ライセンス
MIT
リポジトリ最終更新
2026/10/03

このOSSの使い方や活用事例をMarkdownで投稿できます。管理者が承認した後に公開されます。

情報の誤りを報告

掲載内容に誤りや古い情報があればお知らせください。

このページを読んで、次に何をすればよいか分かりましたか?