Code-Splitting em React
Reduzir o bundle inicial
Complemento prático de React performance: adiar JavaScript é uma das maiores alavancas sobre o carregamento inicial.
Resumo: combino splitting por rota, por componente e de vendor, somado a lazy loading e estratégias de preload.
Implementação
- Splitting por rota: cada rota é um import dinâmico com
React.lazy+Suspense. Carrega só o JavaScript necessário para a página atual. - Splitting por componente: componentes pesados (gráficos, editores rich text, modais) são carregados sob demanda — ao ficarem visíveis ou na interação.
- Vendor splitting: Webpack/Turbopack separa bibliotecas de terceiros em chunks próprios. Os críticos (React, React DOM) num único chunk de vendor; os grandes (D3, Moment) subdivididos para não inchar o bundle principal.
- Preloading:
<link rel="preload">ewebpackPrefetchpara carregar o chunk da próxima rota provável sem bloquear a main thread. - Análise de bundle: rodar
webpack-bundle-analyzercom frequência para identificar dependências grandes e trocá-las por alternativas mais leves (date-fnsvsmoment).
Exemplo real (Seguralta)
Reduzimos o bundle principal de 2,1 MB para 780 KB (≈63% de redução) com:
- Lazy-load dos gráficos e tabelas pesados do dashboard.
- Movendo libs grandes para chunks separados.
- Prefetch da página de configurações (alto tráfego).
Trade-offs: mais chunks aumentam o número de requisições (mitigado por HTTP/2
e cache agressivo). Defina webpackChunkName para manter nomes previsíveis.
Relacionadas: react-performance · micro-frontends · índice.