22 de Fevereiro de 2025
O Custo Real de JavaScript no Frontend
Como sair da conversa rasa sobre tamanho de bundle e enxergar o custo completo de baixar, parsear, executar e disputar a thread principal.
Andrews Ribeiro
Founder & Engineer
3 min Intermediario Frontend
Trilha
Trilha para entrevistas de senior frontend
Etapa 11 / 15
O problema
Muita conversa sobre performance de frontend para cedo demais no bundle size.
Ai a analise fica assim:
- arquivo grande e ruim
- arquivo pequeno e bom
Isso ajuda um pouco.
Mas ainda e incompleto.
Porque JavaScript não termina de custar quando o download acaba.
Modelo mental
Pense no custo de JavaScript em pelo menos cinco etapas:
- baixar
- parsear
- compilar
- executar
- competir com o resto do trabalho do browser
Esse “resto do trabalho” inclui:
- input
- layout
- paint
- hydration
- outras tasks e microtasks
Por isso uma pagina pode:
- aparecer
- parecer pronta
- e ainda assim responder mal ao clique
Quebrando o problema
Rede e só o começo
Se o arquivo e grande, claro que o download pesa.
Mas em muita maquina real o custo forte continua depois:
- o browser precisa entender o código
- preparar o que vai rodar
- executar o trabalho
Em dispositivo mais fraco, esse custo fica ainda mais visível.
Execução disputa a thread principal
No frontend, JavaScript normalmente compartilha a thread principal com coisas importantes da experiência:
- responder evento
- calcular layout
- pintar a tela
Se o script ocupa tempo demais, o usuário sente:
- atraso no clique
- scroll estranho
- interface travando
Não porque a internet estava ruim.
Mas porque a CPU do navegador estava ocupada demais.
Hydration amplia o custo em certos apps
Quando a pagina chega com HTML server-side, muita gente conclui que “já esta rápido”.
Só que hydration também cobra:
- baixar script
- executar script
- ligar comportamento
Em app pesado, o HTML aparece cedo, mas a interatividade ainda demora.
Muito JavaScript também custa manutenção
Não e só performance técnica.
Quanto mais código no cliente:
- mais chance de bug de estado
- mais superficie de mismatch
- mais coisa para depurar no browser
- mais trabalho em cada navegação ou interação
Menos JavaScript relevante não e só otimização.
Também pode ser simplificação do produto.
Exemplo simples
Imagine duas paginas.
Pagina A:
- HTML aparece rápido
- mas baixa um bundle enorme para hidratar tudo
- ao clicar, a tela demora a reagir
Pagina B:
- envia menos script
- hidrata só partes necessárias
- interage melhor mesmo com aparencia inicial parecida
Se você olhar só para “o HTML apareceu”, pode achar as duas equivalentes.
Se olhar para custo real de JavaScript, percebe que a segunda entrega experiência melhor.
Erros comuns
- Medir só bundle size e ignorar execução.
- Achar que rede boa neutraliza custo de JS.
- Tratar hydration como gratis.
- Mover tudo para cliente por conveniencia e chamar isso de arquitetura.
- Julgar performance sem considerar dispositivo mediano ou fraco.
Como um senior pensa
Quem tem mais experiência costuma perguntar:
“Quanto JavaScript eu realmente preciso mandar, e quanto trabalho eu realmente preciso fazer no cliente?”
Essa pergunta e forte porque ataca duas fontes de custo ao mesmo tempo:
- bytes desnecessarios
- execução desnecessaria
Em vez de só comprimir melhor o excesso, ela questiona o excesso em si.
O que o entrevistador quer ver
Em entrevista, esse assunto separa bem quem entende browser de quem olha só para rede.
Você sobe de nivel quando:
- fala de CPU alem de download
- menciona parse, execução e thread principal
- conecta hydration a interatividade
- mostra que reduzir JS também e reduzir trabalho
Uma resposta forte costuma soar assim:
“JavaScript custa em rede, mas também custa muito em parse, execução e competicao pela thread principal. Por isso pagina com muito script pode continuar lenta mesmo quando o HTML aparece cedo e a conexão e boa.”
O problema de JavaScript no frontend nem sempre e baixar demais. Muitas vezes e fazer o navegador trabalhar demais.
Resumo rápido
O que vale manter na cabeça
- JavaScript pesa na rede, mas também pesa bastante na CPU e na thread principal.
- Bundle grande não custa só download. Custa parse, compilacao, execução, hydration e mais trabalho concorrendo com input e renderização.
- Pagina pode parecer lenta mesmo em internet boa quando o navegador gasta tempo demais processando script.
- Reduzir custo de JavaScript e tanto sobre enviar menos quanto sobre fazer menos coisa no cliente.
Checklist de pratica
Use isto ao responder
- Consigo explicar por que JS pode atrasar interatividade mesmo quando o HTML já apareceu?
- Sei diferenciar custo de rede de custo de CPU no navegador?
- Consigo ligar hydration e script excessivo a input lag e jank?
- Sei responder por que menos JS relevante as vezes vale mais do que bundle apenas comprimido?
Você concluiu este artigo
Parte da trilha: Trilha para entrevistas de senior frontend (11/15)
Compartilhar esta página
Copie o link manualmente no campo abaixo.