Virtualization is an optimization method for tables that acts to effectively show you a ‘window’ of your data, without loading it all at once.
Tables (and the data they present) are frequently much larger than the space available to display, and generally the solution is to use scrolling or pagination to navigate the visible rows. In a ‘traditional’ table implementation, a big set of data would populate all the rows. Even the ones that are not currently ‘visible’ are still created by the browser, taking up memory and increasing the amount of work the browser needs to do to render your UI. In a large dataset, this can be quite inefficient, as you’re building a lot of UI elements that aren’t even visible.
With virtualization, the table is not completely populated with data. Instead, the visible rows are populated, along with a small number of rows ‘above’ and ‘below’ the visible data. When you ‘scroll’, it looks like you are scrolling across the table, but it’s a bit ‘slight of hand’, because what is actually happening is that the ‘visible’ rows are loaded dynamically. This can (in large datasets) save a lot of memory and load time. It may also allow you to send large datasets to the table that could otherwise cause performance or stability issues.
Of course, there are tradeoffs sometimes. For instance - depending on use case, the virtualized table may not always ‘feel’ quite as smooth when a user is attempting to scroll quickly.