A biblioteca htmx chega à versão 4.0 e troca XMLHttpRequest por fetch()
Depois de pular a versão 3 inteira, o projeto reescreve o transporte de rede, adiciona morphing nativo de DOM e torna a herança de atributos explícita, mudanças que pedem atenção antes de atualizar em produção.

O time do htmx lançou a versão 4.0.0 da biblioteca, a primeira grande atualização desde o 2.0, em 2024. O detalhe curioso é que o projeto pulou a versão 3 inteira: Carson Gross, criador do htmx, havia prometido publicamente que nunca existiria um htmx 3, e resumiu a virada em uma única palavra ao InfoWorld: "Oops". A versão 4.0 saiu depois de oito meses de trabalho e chega com mudanças que vão além de um número de versão maior: o transporte de rede foi reescrito, o motor de atualização de DOM ganhou morphing nativo e a herança de atributos, que antes era implícita, agora precisa ser declarada.
Da XMLHttpRequest pra fetch(): o que isso libera
Desde que existe, o htmx usava XMLHttpRequest para fazer as requisições disparadas por atributos como hx-get e hx-post. Na 4.0 esse transporte foi substituído pela Fetch API. Para a maioria dos devs que já usa a biblioteca, hx-get e hx-post continuam se comportando exatamente como antes, então não é uma mudança que quebra o dia a dia direto. O que ela destrava é streaming nativo de resposta, algo que a API antiga não fazia bem, e o script continua leve, em torno de 14KB. É a base técnica que sustenta as duas features que o próprio time destaca como as mais importantes da versão.
Morphing nativo e o novo hx-partial
A primeira dessas features são os swaps por morphing, agora embutidos na biblioteca e movidos pelo idiomorph. Em vez de substituir um bloco inteiro de HTML↳HTML45 conteúdosA importância do HTML e CSS para quem trabalha com UI Design e Design SystemProduto & UX · dez 2024Como hostear seu site HTML gratuitamente com GitHub PagesDev (Back & Front) · jun 2025SQL Server – Como criar um versionamento de código das suas Stored Procedures em HTML e com comentários da alteraçãoData · nov 2020Ver tudo em Dev (Back & Front) → no DOM, o morphing calcula o diff e preserva estado como foco de input durante a atualização, algo que sempre foi um ponto fraco de quem trocava HTML via AJAX sem framework.
A segunda é a tag hx-partial, uma forma mais organizada de fazer o que antes exigia o padrão de "out of band swaps": uma única resposta do servidor consegue atualizar vários alvos diferentes na página de uma vez, sem precisar espalhar hx-swap-oob em cada fragmento de HTML retornado.
Herança de atributos agora é explícita, e essa é a pegadinha
A mudança que exige mais cuidado na migração é a herança de atributos. Até aqui, um atributo definido num elemento pai (como hx-confirm ou hx-headers) era herdado automaticamente pelos filhos. Na 4.0 isso deixou de ser automático: o atributo só é herdado se vier com o sufixo :inherited.
<div hx-confirm:inherited="Are you sure?">
<button hx-delete="/item/1">Delete</button>
</div>Um texto detalhado publicado na DEV Community (citado pelo InfoQ) chama atenção para o cenário mais perigoso dessa mudança: se o seu app usa hx-headers para propagar um token CSRF do elemento pai para os filhos, e você não adicionar :inherited, a propagação simplesmente para de funcionar. Não há erro visual, não há exceção no console: o servidor começa a rejeitar as requisições com 403 enquanto, na tela, nada parece quebrado. É o tipo de bug que só aparece em produção, num fluxo de escrita que o time de QA não testou naquele exato ponto da árvore de componentes.
Eventos renomeados e histórico sem localStorage
Outra mudança estrutural é a padronização dos nomes de eventos para o formato htmx:fase:ação. htmx:afterRequest virou htmx:after:request, por exemplo, o que exige revisar qualquer listener de evento customizado no código. O htmx também deixou de salvar snapshots do DOM no localStorage para restaurar histórico de navegação; agora ele simplesmente refaz o fetch da página, o que resolve um problema clássico de scripts de terceiros que não sobreviviam à restauração de um snapshot antigo.
Além dessas, há renomeações pontuais de atributos, como hx-disable que passa a se chamar hx-ignore, e um novo timeout padrão de 60 segundos para requisições, algo que pode afetar endpoints lentos que hoje dependem de o cliente esperar indefinidamente.
Como migrar sem susto
O time do htmx tomou uma decisão que evita o pior cenário de qualquer biblioteca distribuída via CDN sem versão fixa: a 4.0 foi publicada sob a tag next do npm, não a latest. Isso significa que quem aponta para uma URL de CDN sem versão travada não é atualizado à força, e a 2.x continua recebendo suporte indefinidamente. Para quem quer migrar, existe um checker de linha de comando que varre o projeto e aponta problemas de herança, atributos renomeados e eventos com nome antigo:
npx htmx.org@4.0.0 upgrade-check -- ./templatesO time também publicou um guia completo de "What's New in htmx 4" e arquivos de "skills" dedicados para quem usa assistentes de IA↳Inteligência artificial440 conteúdosUX e IA: Transformando Experiências Digitais com Inteligência ArtificialProduto & UX · jan 2025MCP: O que é e por que você vai ouvir falar disso em breve?AI · jul 2025IA generativa e a urgência de reconstruir nossa relação com a verdadeAI · jun 2025Ver tudo em AI → no processo de upgrade, um reconhecimento explícito de que boa parte da migração de código hoje passa por ferramentas como Claude ou Copilot antes de passar pelo dev.
Recepção mista: bem com Go e SQLite, mal com quem quer separar camadas
A reação da comunidade, segundo o InfoQ, foi forte dos dois lados. Uma thread no Hacker News passou de 700 pontos, com desenvolvedores elogiando a combinação Go, SQLite e htmx, e um comentário destacando que assistentes de IA como o Claude "entendem o htmx e trabalham bem com ele". No Reddit, o post de lançamento em r/htmx passou de 300 upvotes.
Do outro lado, um desenvolvedor com histórico em .NET e Angular argumentou que o modelo do htmx força a mistura de apresentação com lógica de negócio direto no HTML, e outro concordou dizendo que o time dele está voltando para React. É a crítica de sempre ao movimento hypermedia, que reaparece a cada lançamento grande da biblioteca.
O que muda pra quem já tem htmx em produção
Para quem já roda stacks Django, Go ou Rails com htmx no front, a boa notícia é que a migração não é obrigatória nem forçada por CDN. Mas ela também não é trivial: o par mais arriscado da lista é herança de atributos mais CSRF, porque o sintoma (403 silencioso) só aparece depois do deploy. Antes de subir a 4.0 em qualquer projeto real, vale rodar o upgrade-check, revisar manualmente qualquer hx-headers ou hx-confirm que dependa de herança, e mapear os listeners de evento customizados para o novo padrão fase:ação. Ficou de fora do material do InfoQ qualquer benchmark de performance da troca para fetch(), então quem espera números de streaming ou de payload ainda vai precisar medir isso no próprio projeto.
Fonte: InfoQ
Este artigo foi escrito por Redação iMasters. Conteúdo produzido por agente de IA da redação iMasters, sob revisão editorial humana. Saiba como produzimos no expediente.













