# react-window-infinite-loader

> Infinite loader utils inspired by `react-virtualized` but for use with `react-window`.

Latest version **2.0.1** (published 2026-01-12) · MIT license · 0 weekly downloads

## Install

```sh
npm install react-window-infinite-loader
pnpm add react-window-infinite-loader
yarn add react-window-infinite-loader
bun add react-window-infinite-loader
```

## Health

**Score 60/100 (C)** — status: stable.

Positive: has types; esm support; no vulnerabilities; high quality score.

Warnings: low downloads.

## Facts

| | |
|---|---|
| Version | 2.0.1 |
| Published | 2026-01-12 |
| First published | 2018-12-10 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | bundled |
| Module format | ESM + CommonJS |
| Dependencies | 0 |
| Unpacked size | 22.5 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 952 |
| Author | Brian Vaughn |
| Maintainers | brianvaughn, andrewbeletskiy |

## Links

- npm: https://www.npmjs.com/package/react-window-infinite-loader
- Repository: https://github.com/bvaughn/react-window-infinite-loader
- Issues: https://github.com/bvaughn/react-window-infinite-loader/issues
- npm.io page: https://npm.io/package/react-window-infinite-loader

## Recent versions

- 2.0.1 (latest) — 2026-01-12
- 2.0.0-alpha.3 (alpha) — 2025-09-15
- 2.0.0 — 2025-09-15
- 2.0.0-alpha.2 — 2025-09-14
- 2.0.0-alpha.1 — 2025-09-14
- 2.0.0-alpha.0 — 2025-09-14
- 1.0.10 — 2025-01-25
- 1.0.9 — 2023-04-17
- 1.0.8 — 2022-06-08
- 1.0.7 — 2021-02-05
- 1.0.6 — 2021-02-03
- 1.0.5 — 2019-09-18
- 1.0.4 — 2019-09-02
- 1.0.3 — 2018-12-10
- 1.0.2 — 2018-12-10
- … 2 more at https://npm.io/package/react-window-infinite-loader/versions

## README

# react-window-infinite-loader

Infinite loader utils inspired by `react-virtualized` but for use with `react-window`.

[Try it out on StackBlitz](https://stackblitz.com/edit/vitejs-vite-qafawqxm?file=src%2FApp.tsx)

If you like this project, [🎉 become a sponsor](https://github.com/sponsors/bvaughn/) or [☕ buy me a coffee](https://buymeacoffee.com/bvaughn).

## Installation

Begin by installing the library from NPM:

```sh
npm install react-window-infinite-loader
```

## Documentation

The recommended way to use this library is the new `useInfiniteLoader` hook:
```tsx
import { useInfiniteLoader } from "react-window-infinite-loader";

function Example() {
  const onRowsRendered = useInfiniteLoader(props);

  return <List onRowsRendered={onRowsRendered} {...rest} />;
}
```

The `InfiniteLoader` component also exists, though it has changed since version 1:
- Child function `onItemsRendered` parameter renamed to `onRowsRendered`
- Child function `listRef` parameter removed

```tsx
import { InfiniteLoader } from "react-window-infinite-loader";

function Example() {
  return (
    <InfiniteLoader {...props}>
      {({ onRowsRendered }) => <List onRowsRendered={onRowsRendered} {...rest} />}
    </InfiniteLoader>
  );
}
```

### Required props
| Name | Type | Description |
| --- | --- | --- |
| `children` | `({ onRowsRendered: Function }) => ReactNode` | Render prop; see below for example usage. |
| `isRowLoaded` | `(index: number) => boolean` | Function responsible for tracking the loaded state of each row. |
| `loadMoreRows` | `(startIndex: number, stopIndex: number) => Promise<void>` | Callback to be invoked when more rows must be loaded. It should return a Promise that is resolved once all data has finished loading. |
| `rowCount` | `number` | Number of rows in list; can be arbitrary high number if actual number is unknown. |

### Optional props
| Name | Type | Description |
| --- | --- | --- |
| `minimumBatchSize` | `number` | Minimum number of rows to be loaded at a time; defaults to 10. This property can be used to batch requests to reduce HTTP requests. |
| `threshold` | `number` | Threshold at which to pre-fetch data; defaults to 15. A threshold of 15 means that data will start loading when a user scrolls within 15 rows. |

---
_Source: https://npm.io/package/react-window-infinite-loader · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
