ページ内ナビ
概要
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します。
Gridでrow×columnのtabular/2D dataをvirtualizeする
Gridは2次元cellをvirtualizeし、大きなtableやspreadsheet-like UIでDOM node数を抑えられます。
出典:[3]
向いている用途
数千〜数万件のlist/tableをReactで軽量に表示したい場合に向く
全件DOM化するとlayout/render costが増えるlog viewer、catalog、admin table、feed等で、表示中範囲だけを維持したいUIに適します。
出典:[1]
導入前の確認
参考にした公式資料
- [1]react-window 2.3.3 README(2026-10-05)
- [2]react-window 2.3.3 package metadata(2026-10-05)
- [3]react-window 2.3.3 public exports(2026-10-05)
- [4]react-window 2.3.3 release(2026-10-05)
- [5]react-window MIT license(2026-10-05)
編集部からの補足
v2はv1とAPIが異なります。既存記事やsampleがv1前提の場合があるため、2.x documentationのList/Grid propsを基準に実装してください。
3ステップで試す
- 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
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
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'
成長
成長の推移 · 直近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で投稿できます。管理者が承認した後に公開されます。
あわせて探訪
- styled-components41,099 Stars
共通タグ 3件 · 共通カテゴリ 1件 · 同じ言語
template literalでscoped CSS・theme・SSRをReact componentへ統合するCSS-in-JS library
TypeScript - React Three Fiber32,733 Stars
共通タグ 3件 · 共通カテゴリ 1件 · 同じ言語
Three.js sceneをReact componentとJSXで宣言的に構築するReact renderer
TypeScript - React Redux23,424 Stars
共通タグ 3件 · 共通カテゴリ 1件 · 同じ言語
Redux storeをReact componentへ購読・dispatchするための公式binding library
TypeScript - flatpickr16,464 Stars
共通タグ 3件 · 共通カテゴリ 1件 · 同じ言語
日付・時刻・期間・複数日を依存なしのpicker UIで入力し、無効日やlocaleも設定する
TypeScript - Linaria12,350 Stars
共通タグ 3件 · 共通カテゴリ 1件 · 同じ言語
CSS-in-JSのauthoring experienceを保ちつつ、styleをbuild時にstatic CSSへextractする
TypeScript - IMask5,182 Stars
共通タグ 3件 · 共通カテゴリ 1件 · 同じ言語
inputに電話番号・数値・日付などの入力形式を適用し、表示値・未整形値・型付き値を分けて扱う
TypeScript
情報の誤りを報告
掲載内容に誤りや古い情報があればお知らせください。