Help us improve
Share bugs, ideas, or general feedback.
Share bugs, ideas, or general feedback.
Share bugs, ideas, or general feedback.
By petyosi
Guides Claude on implementing virtualized lists, chat message lists, and data tables using react-virtuoso in React applications.
npx claudepluginhub petyosi/react-virtuoso --plugin virtuoso-skillsPlaceholder - content authoring pending. This skill will provide agent guidance for the @virtuoso.dev/data-table package.
Placeholder - content authoring pending. This skill will provide agent guidance for the @virtuoso.dev/message-list package.
Placeholder - content authoring pending. This skill will provide agent guidance for the react-virtuoso package.
Share bugs, ideas, or general feedback.
Own this plugin?
Verify ownership to unlock analytics, metadata editing, and a verified badge.
Sign in to claimOwn this plugin?
Verify ownership to unlock analytics, metadata editing, and a verified badge.
Sign in to claimBased on adoption, maintenance, documentation, and repository signals. Not a security audit or endorsement.
Virtualization for lists and grids
TanStack Table v8 headless data tables with server-side features for Cloudflare Workers + D1. Use for pagination, filtering, sorting, virtualization, or encountering state management, TanStack Query coordination, URL sync errors.
Comprehensive Material UI (MUI) expert plugin — 26 skills, 14 commands, 7 agents covering theming, CSS variables, Pigment CSS, components, sx/styled, slots API, MUI X (DataGrid, DatePickers, Charts, TreeView), accessibility, performance, SSR/Next.js, animations, virtualization, forms, white-label/multi-tenant, headless (MUI Base), Joy UI, i18n/RTL, testing, migration, entity-driven CRUD, ecosystem integrations, and 200+ creative widget patterns.
Idiomatic usage patterns for React, TanStack Table, and better-all.
Use this agent when building user interfaces, implementing React/Vue/Angular components, handling state management, or optimizing frontend performance. This agent excels at creating responsive, accessible, and performant web applications. Examples:\n\n<example>\nContext: Building a new user interface\nuser: "Create a dashboard for displaying user analytics"\nassistant: "I'll build an analytics dashboard with interactive charts. Let me use the frontend-developer agent to create a responsive, data-rich interface."\n<commentary>\nComplex UI components require frontend expertise for proper implementation and performance.\n</commentary>\n</example>\n\n<example>\nContext: Fixing UI/UX issues\nuser: "The mobile navigation is broken on small screens"\nassistant: "I'll fix the responsive navigation issues. Let me use the frontend-developer agent to ensure it works perfectly across all device sizes."\n<commentary>\nResponsive design issues require deep understanding of CSS and mobile-first development.\n</commentary>\n</example>\n\n<example>\nContext: Optimizing frontend performance\nuser: "Our app feels sluggish when loading large datasets"\nassistant: "Performance optimization is crucial for user experience. I'll use the frontend-developer agent to implement virtualization and optimize rendering."\n<commentary>\nFrontend performance requires expertise in React rendering, memoization, and data handling.\n</commentary>\n</example>
Build accessible React UIs with Base UI (@base-ui/react). Covers all 35+ unstyled, headless components (Dialog, Menu, Select, Combobox, Tabs, Accordion, Toast, Form, Slider, etc.), styling patterns (Tailwind, CSS Modules, CSS-in-JS), animations, composition via render props, form integration, and TypeScript types.
The most complete React virtualization rendering family of components.
npm install react-virtuoso
import { Virtuoso } from 'react-virtuoso'
const App = () => {
return <Virtuoso style={{ height: '400px' }} totalCount={200} itemContent={(index) => <div>Item {index}</div>} />
}
ReactDOM.render(<App />, document.getElementById('root'))
For in-depth documentation and live examples of all supported features, check the documentation website.
The Virtuoso message list component is built specifically for human/chatbot conversations. In addition to the virtualized rendering, the component exposes an imperative data management API that gives you the necessary control over the scroll position when older messages are loaded, new messages arrive, and when the user submits a message. The scroll position can update instantly or with a smooth scroll animation.
The GroupedVirtuoso component is a variant of the flat Virtuoso component, with the following differences:
totalCount, the component exposes groupCounts: number[] property, which specifies the amount of items in each group.
For example, passing [20, 30] will render two groups with 20 and 30 items each;itemContent property, the component requires an additional groupContent property,
which renders the group header. The groupContent callback receives the zero-based group index as a parameter.The VirtuosoGrid component displays same sized items in multiple columns.
The layout and item sizing is controlled through CSS class properties, which allows you to use media queries, min-width, percentage, etc.
The Masonry component renders columns from varying-height items, suitable for product listings, image galleries, etc.
The TableVirtuoso component works just like Virtuoso, but with HTML tables.
It supports window scrolling, sticky headers, sticky columns, and works with Tanstack Table and MUI Table.
You can customize the markup up to your requirements - check the Material UI list demo.
Contributions are welcome! Please see CONTRIBUTING.md for development setup, testing guidelines, and pull request process.
If you find Virtuoso valuable for your work, please consider sponsoring the project. Your support helps ensure continued development and maintenance.
Petyo Ivanov @petyosi.
MIT License.