Performance Guide · Virtual Scrolling

Virtual Scrolling Guide

Virtual scrolling is one of the most important techniques behind high-performance web grids. It allows a JavaScript component to display very large datasets without rendering every row and every cell into the browser at once. For users, it can feel like one.

June 2025 9 min read Performance Scrolling

What to evaluate first

The fastest way to choose the right component is to connect technical requirements with the real work users need to complete.

Continuity
Continuous browsing instead of pages.
DOM
Keep rendered elements small.
State
Preserve selection and focus.
Backend
Combine with lazy loading.
100k

Large-data test

1M

Serious scale test

50+

Columns in benchmark

This guide explains how virtual scrolling works, when to use it, how it differs from pagination and what to test before relying on it in an enterprise application.

This article is written for product teams, frontend engineers, solution architects and technical buyers who need to choose a JavaScript component for a serious web application. The goal is not to list every feature in isolation, but to connect the choice of component with the real work users will do every day. In enterprise software, a grid is rarely a decorative table. It is often the main work surface where users review data, change values, compare records, investigate exceptions and make operational decisions.

A good component choice should therefore be based on measurable requirements. How many rows will users open? How many columns will be visible? How often will they edit cells? Will they paste from Excel? Will the data be loaded from a server, an XLSX file or an API? Do users need hierarchy, formulas, charts, export, localization, accessibility, strict security rules or integration with React, Angular, Vue or another framework? These questions matter more than a generic feature matrix.

What this guide helps you decide

Use this guide when choosing between pagination and virtual scrolling, or when evaluating whether a grid can handle large data without forcing users into page-by-page navigation.

Practical numbers to use during evaluation

Useful practical numbers for evaluation:

A practical benchmark should test at least 100,000 rows for normal large-data scenarios and 1,000,000 rows for serious large-data claims. If the product is positioned for extreme scale, test several million rows. Also test with 50, 100 and 200 visible or available columns. The point is not only whether the grid can open the data, but whether users can work with it continuously.

How virtual scrolling works

In a traditional table, every row is represented by DOM elements. If the table contains one million rows, that approach becomes impractical. The browser must calculate layout, styles and interactions for far too many elements.

Virtual scrolling solves this by rendering only the rows that are visible in the viewport, plus a buffer. As the user scrolls, the component reuses or replaces rendered rows with the correct data for the new scroll position. The total scroll area still represents the full dataset, but the DOM remains small.

Virtual scrolling vs pagination

Pagination divides data into pages. Users click next or previous to move between chunks. It is simple and works well for search results or workflows where users open one item and leave.

Virtual scrolling keeps the dataset continuous. Users scroll naturally through many records. This is better for scanning, comparing, editing and analyzing. It feels closer to a spreadsheet or desktop application. The trade-off is technical complexity. The grid must maintain selection, editing state, focus, scroll position and data loading as rows enter and leave the viewport.

When virtual scrolling is the right choice

Use virtual scrolling when users need to work across a large dataset rather than on isolated pages. It is especially useful for logs, financial records, inventory, analytics, operational dashboards, monitoring systems and data preparation tools.

It is also useful when pagination would interrupt the task. If users frequently move from row 500 to row 20,000 or compare records across a long range, virtual scrolling provides a better workflow.

Technical requirements for good virtual scrolling

Good virtual scrolling requires accurate row height management, stable scrollbar behavior, efficient rendering, fast data access and predictable state management. If row heights are variable, the component must calculate positions carefully. If data is loaded from a server, the grid must request data in advance and avoid blank areas.

The component should also preserve keyboard navigation. Users should be able to select cells, edit values, move with arrow keys and paste data without losing context.

Testing virtual scrolling

Virtual scrolling should be tested with real row counts and real cell complexity. A simple text-only dataset is not enough if production cells include icons, validation states, custom formatting and interactive controls.

Test long sessions, fast scrolling, slow scrolling, filtering during scrolling, editing after scrolling and exporting after filtering. Also test browser zoom, high-DPI screens and managed enterprise devices.

Practical tips

Common mistakes to avoid

Implementation checklist

Implementation checklist:

Product fit inside the TreeGrid family

FastGrid is the key TreeGrid product for virtual scrolling and very large tabular datasets. TreeGrid can also handle complex data structures, but when the main requirement is smooth continuous work with very large datasets, FastGrid is usually the first product to evaluate.

How the TreeGrid product family fits this topic:

FastGrid is the best starting point when the main risk is performance with very large tabular datasets. It is designed for high-performance browser-based grids, virtual scrolling and no-pagination workflows.

TreeGrid is the best starting point when the main risk is application complexity. It fits deeply customized enterprise grids, tree grids, master-detail layouts, hierarchy, formulas, localization and complex business logic.

FastSheet is the best starting point when the main workflow is spreadsheet-based and users need to open, edit, calculate and save large XLSX files directly in the browser.

SpreadSheet is useful when the project needs an established TreeGrid-based spreadsheet experience with mature spreadsheet features and integration with the TreeGrid ecosystem.

GanttChart is the right component when the application needs project planning, scheduling, resources, task dependencies, milestones and timeline editing.

Final recommendation

The safest way to choose is to prototype with your real data. Marketing pages and demo grids can help create a shortlist, but final validation should happen with the data volume, browser environment, framework, security policy and workflow that your users will actually use. A grid is infrastructure. Once it becomes central to the application, replacing it later can be expensive. Choose the component that matches the shape of your data, the behavior your users expect and the performance limits your application cannot cross.

A strong proof of concept should include the worst realistic case, not only the average case. If a typical user opens 50,000 rows but a power user opens 1,000,000 rows, the power-user case must be tested. If a normal screen has 25 visible columns but exports 300 columns, export must be tested. If users paste data from Excel, the paste scenario must be tested with dirty data, empty cells, dates, numbers stored as text, formulas and copied formatting.

The most reliable benchmark is task-based. Instead of measuring only load time, define five to ten actions that real users perform. For example: open the grid, scroll to the middle, filter one column, sort another column, edit 50 cells, paste 1,000 rows, group by status, expand a hierarchy, export to XLSX and save changes to the server. Record time, memory and subjective smoothness for every action.

Licensing should also be evaluated early. Enterprise components can differ significantly in developer licensing, deployment licensing, OEM usage, source code availability, maintenance and support. A cheap component can become expensive if it limits end-user deployment, requires extra modules for essential features or forces a migration later. For internal enterprise applications, unlimited end-user licensing can be a major practical advantage.

Security and compliance requirements should be treated as first-class requirements. Many enterprise teams need strict Content Security Policy, no external calls, local processing, controlled file handling and predictable dependency management. If the component cannot run under the security policy required by the organization, a technically impressive demo will not be enough.

The final decision should involve both developers and users. Developers can judge integration, API design and maintainability. Users can judge whether the interaction model is natural. A grid that is technically powerful but unpleasant to use will still create support tickets, manual workarounds and hidden productivity costs.

Documentation quality is a practical risk indicator. A mature component should provide examples, API references, migration notes, framework integration guides and real configuration samples. When a feature is important to your application, look for a working example rather than a one-line claim. This is especially important for editing, validation, export, virtualization, hierarchy and formula behavior.

---

Final check: before selecting a component, prototype the worst realistic workflow with real data, real browser settings and real users.

Explore FastGrid

See high-performance JavaScript data grid examples for large datasets.

Open FastGrid →