Performance Avançada no Front-End
Este guia detalha estratégias para lidar com gargalos de performance em aplicações de larga escala, indo além do básico.
1. Virtualização de Listas
Renderizar milhares de elementos no DOM causa lentidão. A virtualização renderiza apenas os itens visíveis na tela ( viewport).
- Como funciona: Calcula-se a posição dos itens e renderiza apenas os que estão dentro da área visível + um pequeno buffer.
- Ferramentas:
react-window,react-virtualized. - Quando usar: Listas de logs, grandes tabelas de dados ou feeds infinitos.
2. Web Workers
O JavaScript é single-threaded. Processamentos pesados travam a interface (Main Thread).
- Uso: Mover cálculos matemáticos, parsing de grandes JSONs ou manipulação de imagens para um Worker.
- Vantagem: A UI permanece fluida enquanto o cálculo ocorre em segundo plano.
3. Bundle Analysis e Code Splitting
Um bundle gigante aumenta o TBT (Total Blocking Time).
- Dynamic Imports: Use
React.lazyeSuspensepara carregar módulos apenas quando necessário (ex: uma rota específica ou um modal pesado). - Análise: Use
source-map-explorerou plugins do Vite/Webpack para identificar bibliotecas "vilonas" (que ocupam muito espaço).
4. Gerenciamento de Memória
Evite memory leaks para que a aplicação não fique lenta com o passar do tempo.
- Pitfalls:
- Esquecer de limpar
setIntervalouaddEventListener. - Manter referências a grandes objetos em variáveis globais.
- Closures que capturam grandes escopos desnecessariamente.
- Esquecer de limpar
5. Estratégias de Cache Avançadas
Além do cache do navegador, usamos:
- Service Workers: Para offline-first e carregamento instantâneo de assets.
- TanStack Query Cache: Para evitar requisições repetitivas ao servidor.
- State Normalization: Reduz a redundância de dados na memória.