14 puntos por GN⁺ 2026-01-19 | 3 comentarios | Compartir por WhatsApp
  • Tras casi 10 años, se publica oficialmente jQuery 4.0.0 como una actualización de versión mayor
  • Se elimina el soporte para IE 10 e inferiores y navegadores antiguos, se aligera el código y se refuerza el cumplimiento de estándares modernos; la mayoría de los usuarios podrá actualizar sin cambios en su código
  • Transición a una estructura basada en módulos ES con adopción de Rollup para la compilación, asegurando compatibilidad con entornos de desarrollo modernos
  • Se añade soporte para Trusted Types y CSP para minimizar conflictos con políticas de seguridad
  • Eliminación de APIs obsoletas y reducción del build slim para mejorar el rendimiento y la mantenibilidad

Resumen principal de jQuery 4.0.0

  • jQuery 4.0.0 es una gran versión mayor lanzada tras casi 10 años, completada después de un largo ciclo de desarrollo y varias prereleases
    • La mayoría de los usuarios podrá actualizar sin cambios en su código
    • Se eliminaron código heredado y parámetros privados acumulados en versiones anteriores
  • También se ofrecen una guía de actualización y el plugin jQuery Migrate para facilitar la transición desde versiones previas
  • La distribución está disponible a través del CDN oficial y npm; otros CDN se actualizarán gradualmente

Cambios en el soporte de navegadores

  • Se elimina el soporte para IE 10 e inferiores; IE 11 se retirará gradualmente en jQuery 5.0
  • Edge Legacy, versiones antiguas de iOS (anteriores a las 3 versiones más recientes), versiones antiguas de Firefox (anteriores a las 2 versiones más recientes) y Android Browser dejan de ser compatibles
  • Si necesitas soportar navegadores antiguos, se recomienda mantener jQuery 3.x

Compatibilidad con Trusted Types y CSP

  • Se añade soporte para Trusted Types para manejar de forma segura objetos TrustedHTML
  • La mayoría de las solicitudes de scripts asíncronos se cambian a un enfoque basado en la etiqueta `` para evitar errores de CSP
    • Si se usa la opción "headers", todavía se puede usar XHR, aunque se recomienda scriptAttrs

Transición a módulos ES

  • El código fuente de jQuery se migró por completo de AMD a módulos ES
    • Se adopta Rollup como herramienta de compilación en lugar de RequireJS
    • Las pruebas se ejecutan por separado sobre la base de módulos ES
  • Mediante `` se asegura la compatibilidad con navegadores modernos y herramientas de build

Eliminación de APIs obsoletas

  • Se eliminaron por completo APIs que llevaban mucho tiempo en estado obsoleto
    • Funciones eliminadas: 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: usar métodos nativos como Array.isArray(), JSON.parse(), String.prototype.trim(), Date.now(), etc.
  • Con la eliminación de código relacionado con IE, el tamaño se reduce en unos 3 KB gzip

Eliminación de métodos de uso interno

  • Se eliminaron del prototipo de jQuery los métodos push, sort y splice que solo se usaban internamente
    • En lugar de $elems.push(elem), puede usarse [].push.call($elems, elem)

Cambio en el orden de eventos de foco

  • Se unifica según la especificación W3C del orden de eventos focus/blur
    • Nuevo orden: blur → focusout → focus → focusin
    • Como difiere del orden anterior de jQuery, se requiere atención por compatibilidad
    • Todos los navegadores, excepto IE, funcionan con el mismo orden

Mejoras en el build slim

  • Se eliminan Deferreds y Callbacks, reduciendo el tamaño del archivo a unos 19.5 KB (gzip)
    • Como la mayoría de los navegadores ya soporta Promise nativo, puede usarse como reemplazo
    • Si necesitas compatibilidad con IE11, se recomienda el build principal o un polyfill de Promise
  • El build slim excluye módulos de Ajax y animaciones, por lo que es unos 8 KB más pequeño

Descarga y distribución

Colaboradores y 20.º aniversario

  • Numerosos contribuidores de código abierto participaron con parches, reportes de bugs y pruebas
  • Con motivo de los 20 años de jQuery, hubo una reunión del equipo en Dallas, y el fundador John Resig también participó por Zoom

Resumen de los principales cambios de código (Changelog)

  • Ajax: mejora en el manejo de datos binarios, prevención de errores de CSP y mejor tratamiento de errores de JSONP
  • CSS: corrección del cálculo de tamaño del elemento ``, mejora en el manejo de espacios en variables CSS y eliminación del hook de opacity
  • Core: transición de AMD → módulos ES, uso de DOMParser y eliminación de código para navegadores antiguos
  • Event: manejo nativo de eventos focus/blur y eliminación del shim de event.which
  • Selector: integración de Sizzle, mejoras en :has y :even/:odd, y añadido de encadenamiento en uniqueSort
  • Docs: actualización de enlaces HTTPS y reorganización de los documentos README y CONTRIBUTING
  • Release: automatización del proceso de build y distribución, con migración basada en release-it

Resumen

  • jQuery 4.0.0 es una versión con una reestructuración profunda alineada con los estándares web modernos y las políticas de seguridad
  • Eliminación de código heredado, modularización ES, refuerzo de seguridad y reducción de peso para fortalecer la base de mantenimiento a largo plazo
  • Se considera un lanzamiento simbólico que conmemora los 20 años del ecosistema jQuery

3 comentarios

 
tsboard 2026-01-21

Es un emotivo 20.º aniversario. Aunque ahora casi ya no hay ocasiones para usarlo, espero que siga siendo querido como una herramienta útil en el trabajo real.

 
shakespeares 2026-01-19

Qué increíblemente duradero es... jaja

 
GN⁺ 2026-01-19
Comentarios de Hacker News
  • Como lectura relacionada, hay un artículo que explica muy bien cómo usar jQuery de forma reactiva cuando no puedes usar frameworks modernos en una base de código legacy
    Reactive jQuery for Spaghetti-fied Legacy Codebases

    • Antes se usaba mucho BackboneJS para este tipo de cosas. De hecho, todavía se sigue manteniendo
      Si tienes que usar jQuery por razones de legacy, Backbone puede ser un buen paso intermedio antes de migrar a un framework moderno
      Sitio oficial de BackboneJS, lista de tags en GitHub
    • Este artículo me hizo recordar la época del código espagueti en jQuery
      La verdad, a veces código en React sobreingenierizado era peor que código jQuery bien organizado
      React sí elevó el estándar de calidad, pero a veces usar bien una herramienta conocida es más eficiente
    • Yo también probé este enfoque, y era mucho mejor que el caos estilo jQuery de los años 2010
      Encaja especialmente bien en casos como Userscript, donde el alcance del problema es pequeño y el build step da flojera
      De hecho, incluso sin jQuery se puede implementar de sobra con querySelector, addEventListener e innerHTML
    • La última app grande que hice con jQuery también usaba este patrón reactivo
      Tuve que meter a la fuerza un frontend de búsqueda personalizado dentro de Joomla CMS, y funcionó bastante bien
    • Es un patrón realmente bueno. Si además le agregas signals, la función de actualización se llama automáticamente
      Así es exactamente como lo hacemos en Reactive Mastro
  • jQuery sigue siendo una de mis librerías favoritas
    Es una herramienta que hizo mi carrera, así que siempre le voy a tener cariño

    • Los jóvenes de ahora solo persiguen frameworks nuevos, pero gracias a jQuery y .NET Framework yo siempre tuve trabajo
    • Llevo 15 años usando jQuery. Sigue siendo mi opción por defecto
    • Ojalá alguien le pusiera un Virtual DOM a jQuery
      La combinación de jQuery + jQuery UI + plugins + AI parece tener muchísimo potencial
  • Cada vez que sale el tema de HTMX pienso: “¿esto no se resuelve con tres líneas de jQuery?”
    Al final, jQuery siempre resolvía el problema, y eso es lo importante

    • Exacto. HTMX evolucionó a partir de intercooler.js, que originalmente estaba inspirado en el método .load() de jQuery
      Ver documentación de jQuery.load()
      Lo descubrí mientras hacía trabajo de performance, y de verdad me aumentó mucho el respeto por jQuery
    • El problema de jQuery es que es código imperativo, así que cuando empiezas a manejar muchos estados se vuelve complejo
    • Hoy en día uso JS nativo, pero la elegancia de la interfaz de selección $() sigue siendo insuperable
      La diferencia de rendimiento quizá se podría compensar con precálculo
    • Cuando uso Django, resuelvo la mayoría de los problemas con HTMX y vanilla JS
      Es simple y aun así puede dar una sensación parecida a una SPA
  • Good ol’ jQuery, de verdad fue algo a lo que estar agradecido

  • Me da gusto ver que jQuery sigue vivo y recibiendo actualizaciones
    Pero eso también significa que React podría seguir existiendo hasta 2060, y eso me pone un poco triste

    • Gracias a React, el desarrollo de aplicaciones mejoró muchísimo
      Si pienso en el viejo infierno de callbacks, lo de ahora parece un sueño
    • Para 2060, React Native quizá vaya apenas por la v0.93
    • En la práctica ya existen dos React. Para 2060 probablemente habrá como cinco
  • En la época de los 2000 y 2010, cuando los frameworks SPA todavía no eran comunes, yo también aprendí desarrollo web con jQuery
    Siento que muchas de las cosas que hice entonces todavía deben seguir funcionando
    Le mando un agradecimiento al equipo de jQuery

  • Felicidades a todos los que participaron en el lanzamiento de jQuery 4.0
    Si quieres un enfoque más estructurado, existe un sistema de plantillas reactivas llamado JsViews
    Es viejo y estable, aunque no ha recibido tanta atención como los frameworks modernos

    • No conocía JsViews, pero se ve interesante
      Personalmente me gustan estilos modernos tipo jQuery como cheerio y alpine.js
      cheerio.js.org, alpinejs.dev
    • Yo tampoco creo que vaya a usar jQuery pronto, pero vale la pena estudiar el código fuente de JsViews
      Aunque el diseño del sitio es tan anticuado que quizá por eso no se adopta mucho
      Aun así carga rápido, y su ligereza impresiona
      jsrender.min.js pesa apenas 12.82kB
  • Aunque cuesta creerlo, jQuery 4.0 todavía soporta IE11
    Eso por fin se eliminará en jQuery 5.0

    • Parece que dejaron el soporte para IE11 para no retrasar más el lanzamiento de 4.0
      Ver este PR relacionado y este issue
      Pensar que 3.0 salió hace 10 años sí sorprende bastante
    • Es por compatibilidad hacia atrás. Todavía hay entornos donde IE11 sigue siendo necesario
      Se agradece que sigan dando soporte a esos usuarios y productos
    • Microsoft planea seguir soportando IE11 hasta 2032 en Windows 10 LTSC y en el modo IE de Edge en Windows 11
    • No todo el mundo puede usar hardware y software modernos
      Todavía hay muchos salones de informática escolares que usan sistemas viejos
  • El esfuerzo invertido en las herramientas de actualización de jQuery es realmente admirable

  • Todavía amo la sintaxis encadenable de jQuery
    Hace 15 años escribí un tutorial de jQuery en francés y tuvo muchísimas vistas
    Ojalá haya contribuido aunque sea un poco a la difusión de jQuery