inokawa/virtua

A zero-config, fast and small virtual list and grid component for React, Vue, Solid, Svelte and Angular.

View on GitHub ↗Jump to charts ↓Open shareable report

Summary Information

Updated 57 minutes ago
Added to GitGenius on September 18th, 2026
Created on October 11th, 2022
Open Issues & Pull Requests: 59 (+0)
GitHub issues: Enabled
Number of forks: 115
Total Stargazers: 3,747 (+0)
Total Subscribers: 10 (+0)

Repository Insights (GitGenius)

Median issue/PR response: 9.2 hours
Mean response time: 64.8 days
90th percentile: 183.3 days
Tracked items: 153

Most active contributors

Sign in to see contributor activity.

How this project is maintained

Roughly one issue in five opened in the past year never receives a reply. 55% of open issues come from outside the core team, a mix of external reports and the maintainers' own roadmap. 70% of issues opened in the past year have been closed, leaving a working backlog. Three people close 95% of everything that gets resolved.

Charts & Analytics

Fetching additional details & charts...

Issue Activity (beta)

Open issues: 42
New in 7 days: 1
Closed in 7 days: 4
Avg open age: 606 days
Stale 30+ days: 28
Stale 90+ days: 23

Recent activity

Opened in 7 days: 1
Closed in 7 days: 4
Comments in 7 days: 9
Events in 7 days: 9

Top labels

  • help wanted (16)
  • good first issue (11)
  • reproduction needed (3)

Most active issues this week

Detailed Description

Virtua is a virtual list and grid component for React, Vue, Solid, Svelte, and Angular that renders only visible items to handle large datasets efficiently.

The tool solves the performance problem of rendering long lists or grids by virtualizing the DOM—only rendering items currently in the viewport and recycling them as the user scrolls. It handles common real-world challenges automatically: dynamic item sizing, scroll position adjustment during reverse scrolling, imperative scrolling, iOS support, and more. The library achieves this through optimization across multiple layers, including reducing CPU usage and garbage collection, minimizing synchronous layout recalculation, preventing visual jumps on repaint, and optimizing for JavaScript JIT compilation and framework-specific patterns.

Developers should choose this tool if they need to display large lists or grids without configuration overhead. It suits projects requiring fixed or dynamic item sizes, horizontal or reverse scrolling, RTL support, infinite scrolling, scroll restoration, keyboard navigation, sticky headers, or drag-and-drop functionality. The tool is designed to be small, with components starting from approximately three kilobytes gzipped and being tree-shakeable. The README identifies a comparison section for evaluating alternatives, though specific comparisons are not detailed in the excerpt provided.

The project maintains active continuous integration workflows for code checking and demo deployment. Development is organized around supporting multiple frameworks with a shared virtualization core, indicating a focus on cross-framework compatibility. The codebase requires polyfills for ResizeObserver and scroll methods on elements across all browsers, with additional polyfills needed conditionally for smooth scrolling, horizontal layouts, and grid subgrid support on older environments.