Virtual Scrolling

· Padrão Frontend
Juan Kalleo
Juan Kalleo
Senior Fullstack
This page hasn't been translated to English yet — showing the original Portuguese content.

Renderização dinâmica de listas longas na tela, desenhando apenas os itens visíveis no momento para economizar memória do navegador. Uma lista de 10.000 linhas, sem essa técnica, criaria 10.000 nós de DOM de uma vez; com virtualização, só os ~20 que cabem na tela existem no DOM a cada momento — o resto é calculado sob demanda conforme o usuário rola.

Quando decide se você precisa disso

Virtual scrolling resolve um problema específico: uma lista já carregada no client que é longa o bastante pra pesar no DOM (milhares de linhas). Se a tela já usa paginação real no servidor — o client nunca recebe mais que uma página de linhas por vez — esse problema nunca chega a existir, porque a lista renderizada de cada vez já é curta por natureza. Nesse caso, virtualizar não tem o que resolver: a técnica importa quando NÃO há paginação, não quando há.

Onde ela realmente se aplica: um <select>/autocomplete com milhares de opções carregadas de uma vez, um feed infinito sem paginação por página, ou qualquer lista que precisa mostrar um conjunto grande inteiro na tela ao mesmo tempo (não fatiado em páginas). @tanstack/react-virtual é a biblioteca padrão do ecossistema React pra isso hoje — mede a altura disponível, calcula quais itens estariam visíveis, e só desenha esses no DOM real, trocando o resto por um espaçador do tamanho certo.