O inchaço do JavaScript em 2024
(tonsky.me)O problema do tamanho do JavaScript
- Eu estava um pouco por fora do desenvolvimento frontend moderno e me lembrava de artigos sobre o inchaço da web, com páginas chegando a vários megabytes.
- Fiquei com a impressão de que, se uma página web média tem 3 MB, então o bundle de JavaScript deve ter algo em torno de 1 MB.
- Fiz um experimento para verificar quanto isso realmente representa.
Método
- Uso do Firefox no macOS (deve ser igual em outros navegadores)
- Modo normal, não anônimo (queria ver os números dentro do app e achei que ficaria mais próximo da experiência real)
- Todas as extensões desativadas
- Medição apenas de JavaScript
- Sem compressão
- Service workers ativados (para uma situação mais realista)
- Todo o cache desativado (carregamento do zero)
Landing pages
- Exemplo de página comum com um pouco de interação: Wikipedia, 0,2 MB
- Exemplo de página um pouco inflada: Linear, 3 MB
- Exemplos de landing page ruins: Zoom, 6 MB; Vercel, 6 MB; Gitlab, 13 MB
Sites majoritariamente estáticos
- Não dá para ser mais simples do que mostrar uma parede de texto estático.
- Mesmo assim, o Medium precisa de 3 MB para isso.
- O Substack precisa de 4 MB, o Quora de 4,5 MB, o Pinterest de 10 MB e o Patreon de 11 MB.
Busca
- A interação do app se limita principalmente à busca.
- O StackOverflow precisa de 3,5 MB, o NPM de 4 MB, o Airbnb de 7 MB e o Booking.com de 12 MB.
- O Google precisa de 9 MB para mostrar um simples campo de texto e uma lista de links.
Apps de interação única
- O Google Translate precisa de 2,5 MB para duas caixas de texto.
- O ChatGPT precisa de 7 MB para uma única caixa de texto.
Vídeo
- O Loom precisa de 7 MB, o YouTube de 12 MB.
- O Pornhub, um site que se preocupa com desempenho, precisa de apenas 1,4 MB.
Áudio
- SoundCloud e Spotify precisam ambos de 12 MB.
- O Google Mail precisa de 20 MB.
- O FastMail entrega a mesma funcionalidade com apenas 2 MB.
Produtividade
- O Todoist precisa de 9 MB, o Dropbox de 10 MB, o 1Password de 13 MB e o Trello de 13,5 MB.
- O Discord precisa de 21 MB para chat.
Edição de documentos
- O Google Docs precisa de 13,5 MB e o Notion de 16 MB.
Redes sociais
- O Twitter precisa de 11 MB, o Facebook de 12 MB, o TikTok de 12,5 MB, o Instagram de 16 MB e o LinkedIn de 31 MB.
Categoria gigante
- O Jira precisa de quase 50 MB e o Slack de 55 MB.
- O react.dev começa com 2 MB no início, mas pode crescer indefinidamente conforme você rola a página.
Está piorando cada vez mais rápido?
- Em 2015, o tamanho médio de uma página web já se aproximava da versão shareware de Doom 1 (2,5 MB).
- Em 2024, o Slack ocupa 55 MB, o que equivale ao tamanho original de Quake 1 só em JavaScript.
Quão grande é 10 MB?
- Hoje, 10 MB já não parece algo tão grande ou especial.
- Assumindo uma média de 65 caracteres por linha, isso significa que cada site está enviando cerca de 150.000 linhas de código.
- O Google Maps tem 4,5 MB, o que é relativamente modesto para os padrões atuais.
Conclusão
- O problema não é só o tamanho do download.
- O navegador precisa fazer parsing do JavaScript, mantê-lo na memória e executá-lo.
- Acredito que o conteúdo deveria superar o tamanho do código.
- O Gitlab precisa de 13 MB de código, mais de 500 mil linhas de JS, só para exibir uma landing page estática.
Opinião do GN⁺:
- Um diagnóstico realista do estado atual do desenvolvimento web, que ajuda a entender o impacto do tamanho do JavaScript dos sites na experiência do usuário e no desempenho.
- Relembra aos desenvolvedores frontend a importância da otimização e chama atenção para evitar o uso de recursos além do necessário.
- Fornece dados interessantes que podem estimular discussões na comunidade de desenvolvedores sobre desempenho de sites.
1 comentários
Comentários do Hacker News