A framework-agnostic TypeScript utility designed to handle very large datasets
(millions, billions, or even sizes like 10^27) without freezing the UI or exhausting memory.
When working with large datasets, common issues include:
- Rendering thousands or millions of DOM nodes causes UI freezes
- Loading all data into memory is not feasible
- Client-side sorting and filtering block the main thread
- Scrolling performance degrades dramatically
These problems are especially critical in:
- GIS and map-based systems
- Log viewers and monitoring tools
- Financial and banking dashboards
- Enterprise data tables with infinite scrolling
This library solves the problem at the architecture level, not with UI tricks.
Core principle:
Never load all data. Never render all data.
The architecture is intentionally simple and scalable:
This repository is a library, not a standalone application.
It does not have a traditional npm start command.
You can run and use it in three different ways.
Below is a comparison of commonly used tools for handling large datasets and how they compare to ts-virtual-data-engine.
| Category | Tool / Library | Framework-dependent | Handles Huge Data | Virtual Scroll | Data Loading Logic | Lightweight | Notes |
|---|---|---|---|---|---|---|---|
| Virtualization | react-window | β React | β Yes | β No | β Yes | Only solves rendering, data logic is external | |
| Virtualization | TanStack Virtual | β React | β Yes | β No | β Yes | UI-level virtualization only | |
| Virtualization | Angular CDK Virtual Scroll | β Angular | β Yes | β No | β Medium | Angular-only solution | |
| Enterprise Grid | AG Grid | β React/Angular/Vue | β Yes | β Yes | β Yes | β Heavy | Very powerful, but large bundle and complex |
| Enterprise Grid | MUI Data Grid Pro | β React | β Yes | β Yes | β Heavy | Paid features, React-only | |
| Data Fetching | TanStack Query | β React | β No | β Yes | Fetching & caching only, no windowing | ||
| Data Fetching | SWR | β React | β No | β Yes | β Yes | Simple cache layer | |
| Backend-heavy | Elasticsearch | β No | β Yes | β No | β Yes | β Heavy | Backend solution, UI logic still needed |
| Custom Engine | ts-virtual-data-engine | β No | β Yes (even 10^27) | β Yes | β Yes | β Yes | Framework-agnostic core data engine |
- Framework-agnostic (works with React, Angular, Vue, Vanilla)
- Handles extremely large datasets safely
- Combines data loading + windowing + load-more logic
- Very small and reusable core
- Designed as a data engine, not a UI component
This makes it ideal as a foundation layer on top of which any UI framework can be built.
This project includes a local test that simulates very large datasets and verifies pagination, windowing, and load-more logic.
npm install
npm run test:local