HeadlinesBriefing favicon HeadlinesBriefing.com

htmx 4.0 lanzado: cambios clave y migración

Hacker News •
×

El equipo de htmx ha lanzado la versión 4.0.0 después de 8 meses de trabajo. La idea se originó al crear fixi, lo que llevó a un conocimiento más profundo de la API fetch() y la programación asíncrona. JavaScript dependía anteriormente de XMLHttpRequest debido a problemas de compatibilidad hacia atrás. Un contacto casual con Christian despertó el interés en el streaming de HTML, lo que impulsó el cambio a fetch() internamente. Con la ayuda de Michael y Alex, el equipo portó fixi y la suite de pruebas de htmx, redescubriendo por qué htmx hacía muchas cosas como las hacía, y alineando estrechamente la nueva implementación con la anterior.

Las diferencias de comportamiento entre 2.x y 4.x son relativamente pequeñas, con decisiones deliberadas para soportar servicios web centenarios. Notablemente, 4.0 no está marcado como latest en NPM para evitar forzar actualizaciones a usuarios que dependen de CDN sin versionado. En su lugar, 2.x sigue siendo latest, mientras que 4.0 permanece como next hasta principios de 2027. El sitio web hará referencia a 4.0.

Tres cambios principales destacan. Primero, la herencia de atributos ahora es explícita: en htmx 2, atributos como hx-confirm se heredaban por defecto; en 4.0, debes añadir :inherited (por ejemplo, hx-confirm:inherited). Esta es la mayor carga de migración, pero una herramienta de línea de comandos ayuda a identificar los cambios necesarios, y hx-disinherit ya no es necesario. Segundo, los nombres de eventos están estandarizados al formato htmx:phase:action[:sub-action] (por ejemplo, htmx:before:request en lugar de htmx:beforeRequest). Tercero, el soporte de historial ya no usa localStorage por defecto, lo que la mayoría de usuarios no notará. Internamente, la migración de XMLHttpRequest a fetch() es transparente para los usuarios.

Cambios adicionales: la mayoría de los eventos de error se consolidan en htmx:error, los errores HTTP disparan htmx:response:error, los eventos htmx:xhr:* se eliminan, y los eventos htmx:validation:* se reemplazan por la validación nativa del navegador. El verificador de actualización marca nombres de eventos antiguos en atributos hx-on y JavaScript. En general, htmx 4.0 mantiene la compatibilidad mientras moderniza los internos y aclara el comportamiento.

Entidades clave: Empresas: htmx, fixi | Personas: Christian, Michael, Alex

Preguntas frecuentes: ¿Cuál es el mayor cambio en htmx 4.0?

El mayor cambio es que la herencia de atributos ahora es explícita. En htmx 2, atributos como hx-confirm se heredaban por defecto; en 4.0, debes añadir :inherited (por ejemplo, hx-confirm:inherited) para habilitarla. Una herramienta de línea de comandos ayuda a encontrar los lugares que necesitan este cambio.