Registry / web-framework / react-list

react-list

JSON →
library0.8.18jsnpmunverified

ReactList is a versatile React component designed for rendering large, scrollable lists efficiently. It leverages virtualization techniques to render only the visible items, significantly improving performance for long lists. Currently at version 0.8.18, it maintains broad compatibility with React versions from 0.14 through 19. While a 0.x.x version suggests a pre-1.0 stable release, its ongoing compatibility with modern React indicates active maintenance. Key differentiators include support for different item sizing strategies via its `type` prop (uniform, variable, simple), custom item and items renderers, and flexible control over the scroll parent, making it adaptable to various UI layouts and performance needs. It focuses on providing a performant scrolling experience without over-rendering DOM elements.

web-framework
Install & Compatibility
Where this runs
tested against v? · npm install
Install × environment matrix
Each cell = how many times install + import succeeded across repeated harness runs. Partial = flaky.
glibc = Debian/Ubuntu slim · musl = Alpine Linux
musl
node 18226 runs
build_error
glibc
node 18226 runs
build_error
Code
Verified usage

Verified import paths — ran on the pinned version, not inferred.

ReactList is exported as a default export. CommonJS `require` is generally not recommended in modern React projects using ESM.

import ReactList from 'react-list';

Demonstrates a basic ReactList setup to render 1000 uniform items with a mock data loader, showcasing its infinite scroll capabilities within a fixed-height container.

import React from 'react'; import ReactList from 'react-list'; // Mock data loading function const loadAccounts = (callback) => { setTimeout(() => { const accounts = Array.from({ length: 1000 }, (_, i) => ({ id: i, name: `Account ${i + 1}` })); callback(accounts); }, 50); }; class MyComponent extends React.Component { state = { accounts: [] }; componentDidMount() { loadAccounts(this.handleAccounts); } handleAccounts = (accounts) => { this.setState({ accounts }); }; renderItem = (index, key) => { const account = this.state.accounts[index]; if (!account) return null; // Handle cases where data might be loading or out of sync return <div key={key} style={{ padding: '10px', borderBottom: '1px solid #eee' }}>{account.name}</div>; }; render() { return ( <div> <h1>Accounts</h1> <div style={{ overflow: 'auto', maxHeight: 400, border: '1px solid #ccc' }}> <ReactList itemRenderer={this.renderItem} length={this.state.accounts.length} type='uniform' threshold={200} /> </div> <p>Showing {this.state.accounts.length} accounts.</p> </div> ); } } // Example of how to use it in a parent component (for demonstration) // function App() { // return <MyComponent />; // } // export default App;
Debug
Known footguns
breakingReactList uses a 0.x.x versioning scheme. This implies that breaking changes may occur in minor or even patch releases, so always review changelogs when upgrading.
gotchaWhen using the `itemsRenderer` prop, it is critical to pass the `ref` prop (received as an argument to `itemsRenderer`) to the root DOM element or component that contains the rendered items. Failure to do so will prevent correct item sizing calculations and lead to rendering issues.
gotchaThe `itemSizeEstimator` and `itemSizeGetter` props are only utilized when the `type` prop is set to `'variable'`. Misconfiguring these (e.g., providing them with `type='uniform'`) will result in them being ignored and potentially incorrect list behavior.
deprecatedThe `README` mentions installation via Bower (`bower install react-list`). Bower is a deprecated package manager and should not be used for new projects. NPM or Yarn are the standard.
Upgrade
Version history

Breaking-change detection hasn't run for this library yet.

Audit
Security & dependencies

CVE tracking and dependency tree are planned for a later release.

Agent activity
8 hits · last 30 days
gptbot
4
ahrefsbot
3
script
1
Resources