HeadlinesBriefing favicon HeadlinesBriefing.com

htmx 4.0 lançado: principais mudanças e migração

Hacker News •
×

A equipe htmx lançou a versão 4.0.0 após 8 meses de trabalho. A ideia originou-se da criação do fixi, o que levou a um conhecimento mais profundo da API fetch() e da programação assíncrona. O JavaScript dependia anteriormente de XMLHttpRequest devido a problemas de compatibilidade com versões anteriores. Um contato casual com Christian despertou interesse em streaming de HTML, levando à mudança para fetch() internamente. Com a ajuda de Michael e Alex, a equipe portou o fixi e a suíte de testes htmx, redescobrindo por que o htmx fazia muitas coisas como fazia, e alinhando estreitamente a nova implementação com a antiga.

As diferenças de comportamento entre 2.x e 4.x são relativamente pequenas, com escolhas deliberadas para suportar serviços web centenários. Notavelmente, 4.0 não é marcado como latest no NPM para evitar forçar atualizações para usuários que dependem de CDN sem versionamento. Em vez disso, 2.x permanece como latest, enquanto 4.0 permanece como next até o início de 2027. O site fará referência a 4.0.

Três mudanças principais se destacam. Primeiro, a herança de atributos agora é explícita: no htmx 2, atributos como hx-confirm eram herdados por padrão; no 4.0, você deve adicionar :inherited (por exemplo, hx-confirm:inherited). Este é o maior fardo de migração, mas uma ferramenta de linha de comando ajuda a identificar as mudanças necessárias, e hx-disinherit não é mais necessário. Segundo, os nomes de eventos são padronizados para o formato htmx:phase:action[:sub-action] (por exemplo, htmx:before:request em vez de htmx:beforeRequest). Terceiro, o suporte a histórico não usa mais localStorage por padrão, o que a maioria dos usuários não notará. Internamente, a migração de XMLHttpRequest para fetch() é transparente para os usuários.

Mudanças adicionais: a maioria dos eventos de erro se funde em htmx:error, erros HTTP disparam htmx:response:error, eventos htmx:xhr:* são removidos, e eventos htmx:validation:* são substituídos pela validação nativa do navegador. O verificador de atualização sinaliza nomes de eventos antigos em atributos hx-on e JavaScript. No geral, o htmx 4.0 mantém a compatibilidade enquanto moderniza os internos e esclarece o comportamento.

Entidades-chave: Empresas: htmx, fixi | Pessoas: Christian, Michael, Alex