14 pontos por GN⁺ 2026-01-19 | 3 comentários | Compartilhar no WhatsApp
  • Após cerca de 10 anos, foi lançada oficialmente a atualização de versão major jQuery 4.0.0
  • Fim do suporte ao IE 10 e anteriores e a navegadores antigos, com código mais leve e maior conformidade com padrões modernos; a maioria dos usuários pode fazer upgrade sem alterar o código
  • Transição para uma estrutura baseada em módulos ES com adoção do build via Rollup, garantindo compatibilidade com ambientes de desenvolvimento modernos
  • Adição de suporte a Trusted Types e CSP para minimizar conflitos com políticas de segurança
  • Remoção de APIs deprecated e redução do build slim para melhorar desempenho e manutenção

Visão geral principal do jQuery 4.0.0

  • O jQuery 4.0.0 é um grande release major após cerca de 10 anos, concluído depois de um longo ciclo de desenvolvimento e várias pré-releases
    • A maioria dos usuários pode fazer upgrade sem alterar o código
    • Remoção de código legado e parâmetros privados acumulados em versões anteriores
  • O guia de upgrade e o plugin jQuery Migrate são fornecidos para ajudar na transição a partir de versões anteriores
  • A distribuição está disponível via CDN oficial e npm, e outros CDNs serão atualizados gradualmente

Mudanças no suporte a navegadores

  • Fim do suporte ao IE 10 e anteriores; o IE 11 será removido gradualmente no jQuery 5.0
  • Fim do suporte ao Edge Legacy, versões antigas do iOS (anteriores às 3 versões mais recentes), versões antigas do Firefox (anteriores às 2 versões mais recentes) e Android Browser
  • Se for necessário oferecer suporte a navegadores antigos, é recomendado permanecer no jQuery 3.x

Compatibilidade com Trusted Types e CSP

  • Foi adicionado suporte a Trusted Types para tratar com segurança objetos TrustedHTML
  • A maioria das requisições assíncronas de script foi convertida para uma abordagem baseada em tags ``, evitando erros de CSP
    • Ao usar a opção "headers", ainda é possível usar XHR, mas é recomendado usar scriptAttrs

Transição para módulos ES

  • O código-fonte do jQuery foi totalmente migrado de AMD para módulos ES
    • O Rollup foi adotado como ferramenta de build no lugar do RequireJS
    • Testes separados também foram executados com base em módulos ES
  • Compatibilidade com navegadores modernos e ferramentas de build garantida por meio de ``

Remoção de APIs deprecated

  • APIs que estavam marcadas como não recomendadas há muito tempo foram removidas por completo
    • Funções removidas: jQuery.isArray, jQuery.parseJSON, jQuery.trim, jQuery.type, jQuery.now, jQuery.isNumeric, jQuery.isFunction, jQuery.isWindow, jQuery.camelCase, jQuery.nodeName, jQuery.cssNumber, jQuery.cssProps, jQuery.fx.interval
    • Alternativas: uso de métodos nativos como Array.isArray(), JSON.parse(), String.prototype.trim(), Date.now() etc.
  • Com a remoção do código relacionado ao IE, o tamanho foi reduzido em cerca de 3 KB em gzip

Remoção de métodos internos

  • Os métodos push, sort e splice, usados apenas internamente no protótipo do jQuery, foram removidos
    • Em vez de $elems.push(elem), é possível substituir por [].push.call($elems, elem)

Mudança na ordem dos eventos de foco

  • Padronização para a ordem de eventos focus/blur conforme a especificação W3C
    • Nova ordem: blur → focusout → focus → focusin
    • Como difere da ordem anterior do jQuery, é necessário atenção à compatibilidade
    • Todos os navegadores, exceto o IE, seguem a mesma ordem

Melhorias no build slim

  • Remoção de Deferreds e Callbacks, reduzindo o tamanho do arquivo para cerca de 19.5 KB (gzip)
    • Como a maioria dos navegadores oferece suporte nativo a Promise, isso pode ser usado como substituição
    • Se houver necessidade de suporte ao IE11, recomenda-se o build principal ou um polyfill de Promise
  • O build slim exclui módulos relacionados a Ajax e animação, ficando cerca de 8 KB menor

Download e distribuição

Contribuidores e comemoração de 20 anos

  • Diversos contribuidores de open source participaram com patches, relatórios de bugs e testes
  • Em comemoração aos 20 anos do jQuery, houve um reencontro da equipe em Dallas, com participação do fundador John Resig via Zoom

Resumo das principais mudanças de código (Changelog)

  • Ajax: melhorias no tratamento de dados binários, prevenção de erros de CSP, reforço no tratamento de erros de JSONP
  • CSS: correção no cálculo de tamanho de elementos ``, melhoria no tratamento de espaços em variáveis CSS, remoção do hook opacity
  • Core: transição de AMD → módulos ES, uso de DOMParser, remoção de código para navegadores antigos
  • Event: tratamento nativo de eventos focus/blur, remoção do shim event.which
  • Selector: integração do Sizzle, melhorias em :has e :even/:odd, adição de encadeamento em uniqueSort
  • Docs: atualização de links HTTPS, organização dos documentos README e CONTRIBUTING
  • Release: automação do processo de build e distribuição, migração para uma base em release-it

Resumo

  • O jQuery 4.0.0 é uma versão de reformulação estrutural alinhada aos padrões web modernos e às políticas de segurança
  • Remoção de código legado, modularização em ES, reforço de segurança e redução de tamanho fortalecem a base para manutenção de longo prazo
  • É avaliado como um lançamento simbólico que celebra os 20 anos do ecossistema jQuery

3 comentários

 
tsboard 2026-01-21

É um 20º aniversário emocionante. Agora quase não há mais ocasiões para usá-lo, mas espero que continue sendo amado como uma ferramenta ainda útil no dia a dia do campo.

 
shakespeares 2026-01-19

É incrivelmente durável mesmo.. haha

 
GN⁺ 2026-01-19
Comentários do Hacker News
  • Há um texto relacionado que organiza bem como usar jQuery de forma reativa em bases de código legadas quando não dá para usar frameworks modernos
    Reactive jQuery for Spaghetti-fied Legacy Codebases

    • Antigamente, muita gente usava BackboneJS para esse tipo de coisa. Ele ainda é mantido até hoje
      Se você precisa usar jQuery por motivos de legado, o Backbone pode ser uma boa etapa intermediária antes de migrar para um framework moderno
      Site oficial do BackboneJS, lista de tags no GitHub
    • Esse texto me fez lembrar da época do código espaguete em jQuery
      Na verdade, às vezes já vi código em React excessivamente projetado ser pior do que código em jQuery bem organizado
      O React realmente elevou o padrão de qualidade, mas às vezes usar bem uma ferramenta familiar é mais eficiente
    • Eu também já usei essa abordagem, e ela foi muito melhor do que o caos típico de jQuery dos anos 2010
      Funciona especialmente bem em casos como Userscript, quando o escopo do problema é pequeno e o build step é um incômodo
      Na prática, isso também pode ser implementado sem jQuery, só com querySelector, addEventListener e innerHTML
    • O último grande app em jQuery que fiz também usava esse padrão reativo
      Eu precisava enfiar à força um frontend de busca customizado dentro de um Joomla CMS, e funcionou muito bem
    • É um padrão realmente muito bom. Se você adicionar signals, a função de atualização passa a ser chamada automaticamente
      É exatamente assim que fazemos em Reactive Mastro
  • jQuery continua sendo uma das minhas bibliotecas favoritas
    É uma ferramenta pela qual sempre terei carinho, porque ajudou a construir minha carreira

    • A galera de hoje só corre atrás de frameworks novos, mas graças ao jQuery e ao .NET Framework eu sempre tive trabalho
    • Uso jQuery há 15 anos. Ainda é minha opção padrão
    • Seria legal se alguém acoplasse um Virtual DOM ao jQuery
      Uma combinação de jQuery + jQuery UI + plugins + IA parece ter um potencial enorme
  • Sempre que falam de HTMX, eu penso: “isso não daria para fazer em três linhas com jQuery?”
    De qualquer forma, o jQuery sempre resolveu os problemas, e é isso que importa

    • Sim. O HTMX evoluiu a partir do intercooler.js, que originalmente foi inspirado no método .load() do jQuery
      Veja a documentação do jQuery.load()
      Descobri isso enquanto fazia trabalho de performance, e isso me deu ainda mais respeito pelo jQuery
    • O problema do jQuery é que ele usa código imperativo, então começa a ficar complicado quando você precisa lidar com vários estados
    • Hoje em dia eu uso JS nativo, mas a elegância da interface de seleção $() ainda era incomparável
      Talvez a diferença de desempenho pudesse ser compensada com pré-cálculo
    • Quando uso Django, resolvo a maioria dos problemas com HTMX e vanilla JS
      É simples e ainda consegue passar uma sensação parecida com a de uma SPA
  • Bom e velho jQuery, sou realmente grato a ele

  • Fico feliz em ver que o jQuery ainda é mantido e atualizado
    Mas isso também significa que talvez o React ainda esteja vivo em 2060, o que é um pouco triste

    • O React melhorou muito o desenvolvimento de aplicações
      Pensando no antigo inferno dos callbacks, o cenário atual parece um sonho
    • Em 2060, talvez o React Native tenha chegado ali pela v0.93
    • Na prática já existem dois React. Em 2060, talvez existam uns cinco
  • Lá pelos anos 2000 e 2010, quando frameworks SPA ainda não eram comuns, eu também aprendi desenvolvimento web com jQuery
    Acho que uma boa parte do que fiz naquela época ainda deve estar rodando
    Deixo aqui meu agradecimento à equipe do jQuery

  • Parabéns a todos que participaram do lançamento do jQuery 4.0
    Se alguém quiser uma abordagem mais estruturada, existe o JsViews, um sistema de templates reativo
    É antigo e estável, mas não recebeu tanta atenção quanto os frameworks mais recentes

    • Nunca tinha ouvido falar de JsViews, mas parece interessante
      Pessoalmente, gosto de estilos modernos de jQuery como cheerio e alpine.js
      cheerio.js.org, alpinejs.dev
    • Eu também não devo usar jQuery agora, mas o código-fonte do JsViews parece valer o estudo
      Só que o design do site é tão ultrapassado que parece reduzir sua adoção
      Ainda assim, carrega rápido, e a leveza impressiona
      jsrender.min.js tem só 12.82kB
  • Por incrível que pareça, o jQuery 4.0 ainda suporta IE11
    Isso finalmente deve ser removido no jQuery 5.0

    • Parece que mantiveram o suporte a IE11 para não atrasar o lançamento do 4.0
      Veja este PR relacionado e esta issue
      Pensando que o 3.0 saiu há 10 anos, isso surpreende bastante
    • É por causa da compatibilidade retroativa. Ainda existem ambientes que precisam usar IE11
      Sou grato por ainda darem suporte a esses usuários e produtos
    • A Microsoft pretende dar suporte ao IE11 até 2032 no Windows 10 LTSC e no modo IE do Edge no Windows 11
    • Nem todo mundo pode usar hardware e software de última geração
      Ainda há muitos laboratórios de informática em escolas que usam sistemas antigos
  • O esforço colocado nas ferramentas de upgrade do jQuery é realmente admirável

  • Ainda adoro a sintaxe de encadeamento do jQuery
    Há 15 anos escrevi um tutorial de jQuery em francês, e ele recebeu muitas visualizações
    Espero ter contribuído, nem que seja um pouco, para a popularização do jQuery