Back

Coisas que Você Deve Parar de Fazer em JavaScript em 2025

Coisas que Você Deve Parar de Fazer em JavaScript em 2025

JavaScript evolui rapidamente. Padrões de código que pareciam modernos há três anos agora enviam bytes desnecessários, ignoram melhorias da plataforma ou dependem de APIs obsoletas. Se você está construindo aplicações web de produção em 2025, aqui estão os anti-padrões de JavaScript a evitar—e o que usar no lugar.

Pontos-Chave

  • Recursos obsoletos como declarações with, __proto__ e String.prototype.substr devem ser substituídos por alternativas modernas.
  • Bibliotecas legadas como jQuery, Moment.js e Lodash podem frequentemente ser substituídas por APIs nativas do navegador e recursos do ES2023–ES2025.
  • O CSS moderno agora lida com muitas tarefas que anteriormente exigiam JavaScript, incluindo container queries, o seletor :has() e animações vinculadas ao scroll.
  • ESM nativo e bundlers leves como Vite tornaram CommonJS e RequireJS obsoletos para novos projetos frontend.

Pare de Usar Recursos de Linguagem Obsoletos

Alguns recursos do JavaScript foram descontinuados ou substituídos há anos, mas ainda persistem em bases de código através de cópia-e-cola e hábito.

Elimine estes do seu vocabulário:

  • Declarações with — Banidas no modo strict desde o ES5. Elas criam escopo ambíguo e quebram otimizações.
  • __proto__ — Use Object.getPrototypeOf() e Object.setPrototypeOf() no lugar.
  • String.prototype.substr — Obsoleto. Use slice() ou substring().
  • Estáticos legados de RegExp como RegExp.$1 — Estes não são padronizados e não são confiáveis entre diferentes engines.

Estes não são casos extremos. Linters os sinalizam por boas razões. Padrões modernos de JavaScript assumem que você já seguiu em frente.

Pare de Recorrer a Bibliotecas Legadas por Padrão

jQuery, Moment.js, Lodash e RequireJS resolveram problemas reais—em 2015. Hoje, a plataforma cobre a maioria dos seus casos de uso nativamente.

O que fazer no lugar:

  • Manipulação do DOMquerySelector, querySelectorAll e APIs modernas do DOM lidam com o que o jQuery fazia antes.
  • Manipulação de datas — A API Temporal está chegando. Até o suporte completo chegar, use date-fns ou Intl.DateTimeFormat nativo.
  • Funções utilitárias — Recursos do ES2023–ES2025 como Object.groupBy(), novos métodos de Set (.union(), .intersection()) e helpers de iteradores (.map(), .filter() em iteradores) substituem a maioria das importações do Lodash.
  • Carregamento de módulos — ESM nativo e import() tornam RequireJS e AMD obsoletos.

Enviar uma biblioteca de 30KB para funcionalidades que o navegador fornece gratuitamente é um erro de frontend a ser evitado em 2025.

Pare de Ignorar os Recursos do ES2023–ES2025

A linguagem evoluiu significativamente. Estes recursos são estáveis ou quase:

  • Object.groupBy() e Map.groupBy() — Agrupe arrays sem bibliotecas externas.
  • Helpers de iteradores — Encadeie .map(), .filter(), .take() diretamente em iteradores.
  • Novos métodos de Set.union(), .intersection(), .difference(), .isSubsetOf().
  • RegExp.escape() — Escape strings com segurança para padrões regex.
  • Atributos de importação e módulos JSONimport data from './config.json' with { type: 'json' }.
  • await de nível superior — Use em módulos sem envolver tudo em IIFEs assíncronas.

Consulte caniuse.com e seus navegadores-alvo, mas não recorra a polyfills por padrão para recursos que foram lançados há dois anos.

Pare de Usar JavaScript para o que o CSS Agora Resolve

O CSS moderno absorveu funcionalidades que antes exigiam JavaScript. Usar JS para isso cria complexidade desnecessária e prejudica o desempenho.

Deixe o CSS lidar com:

  • Container queries — Componentes responsivos sem hacks de ResizeObserver.
  • Seletor :has() — Seleção de elementos pai sem travessia do DOM.
  • Animações vinculadas ao scrollanimation-timeline: scroll() substitui listeners de eventos de scroll.
  • View transitions — Efeitos de transição de página nativos.

Cada listener de scroll que você remove é uma vitória para a thread principal.

Pare de Usar Mutation Events e Suposições sobre Cookies de Terceiros

Mutation Events (DOMSubtreeModified, DOMNodeInserted) são obsoletos e têm desempenho ruim. Use MutationObserver no lugar—ele é estável há mais de uma década.

Cookies de terceiros estão efetivamente mortos para rastreamento e fluxos de autenticação entre sites. A linha do tempo de descontinuação do Chrome mudou, mas Safari e Firefox os bloquearam há anos. Construa fluxos de autenticação com cookies first-party, tokens ou identidade federada. Não arquitete com base em suposições que quebram nos navegadores de metade dos seus usuários.

Pare de Iniciar Novos Projetos com CommonJS

Se você está escrevendo código para navegador em 2025 e recorrendo a require() ou configurações pesadas de webpack, pause. ESM nativo funciona em todos os lugares que importam. Bundlers mais leves como Vite e esbuild lidam com os casos extremos restantes com configuração mínima.

CommonJS ainda tem seu lugar em bibliotecas Node.js direcionadas a ambientes mais antigos. Para novo código frontend, é bagagem legada.

Conclusão

As melhores práticas de JavaScript em 2025 não são sobre perseguir tendências—são sobre reconhecer quando a plataforma alcançou suas dependências. Cada recurso obsoleto que você remove, cada biblioteca desnecessária que você elimina e cada solução nativa de CSS que você adota torna seu código menor, mais rápido e mais fácil de manter.

Audite seus projetos atuais. Verifique suas importações. Questione se aquela função utilitária precisa de uma biblioteca ou apenas de um método nativo que você ainda não aprendeu. Os padrões modernos de JavaScript já estão aqui—você só precisa usá-los.

Perguntas Frequentes

Sim, mas proceda com cuidado. Navegadores modernos suportam querySelector, fetch e outras APIs que substituem a funcionalidade principal do jQuery. Para projetos existentes, audite primeiro o uso do jQuery e substitua as chamadas incrementalmente. Novos projetos devem evitar jQuery completamente, já que as alternativas nativas agora são bem suportadas e mais performáticas.

A API Temporal está no Estágio 3 do processo TC39 e disponível por trás de flags em alguns navegadores. O suporte completo entre navegadores é esperado em breve, mas para código de produção hoje, use date-fns ou Intl.DateTimeFormat nativo. Monitore caniuse.com para atualizações antes de adotar Temporal sem polyfills.

Para a maioria dos casos de uso, não. JavaScript nativo agora inclui Object.groupBy, novos métodos de Set e helpers de iteradores que cobrem funções comuns do Lodash. No entanto, Lodash permanece útil para clonagem profunda, manipulação complexa de objetos ou ao direcionar ambientes mais antigos. Importe apenas as funções específicas que você precisa em vez da biblioteca inteira.

Comece atualizando seu package.json com type definido como module. Substitua declarações require pela sintaxe import e module.exports por export. Atualize extensões de arquivo para .mjs se necessário, ou configure seu bundler adequadamente. Ferramentas como Vite e esbuild simplificam significativamente essa transição para projetos frontend.

Complete picture for complete understanding

Capture every clue your frontend is leaving so you can instantly get to the root cause of any issue with OpenReplay — the open-source session replay tool for developers. Self-host it in minutes, and have complete control over your customer data.

Check our GitHub repo and join the thousands of developers in our community.

OpenReplay