{"id":178,"date":"2026-01-19T00:00:00","date_gmt":"2026-01-18T23:00:00","guid":{"rendered":"https:\/\/helloblog.io\/es\/jquery-4-0-0-cambios-rupturas-guia-actualizacion\/"},"modified":"2026-01-19T00:00:00","modified_gmt":"2026-01-18T23:00:00","slug":"jquery-4-0-0-cambios-rupturas-guia-actualizacion","status":"publish","type":"post","link":"https:\/\/helloblog.io\/es\/jquery-4-0-0-cambios-rupturas-guia-actualizacion\/","title":{"rendered":"jQuery 4.0.0: qu\u00e9 cambia de verdad, qu\u00e9 se rompe y c\u00f3mo actualizar sin dramas"},"content":{"rendered":"\n<p>El 14 de enero de 2006 John Resig present\u00f3 jQuery en BarCamp (Nueva York). Veinte a\u00f1os despu\u00e9s, el equipo ha publicado la versi\u00f3n final de <strong>jQuery 4.0.0<\/strong> tras un ciclo largo de desarrollo y varias pre-releases. Es la primera versi\u00f3n mayor en casi una d\u00e9cada y llega con modernizaci\u00f3n real: recorte de compatibilidad antigua, retirada de APIs obsoletas y ajustes que por fin era imposible hacer en releases menores sin romper medio internet.<\/p>\n\n\n\n<p>La contrapartida es clara: <strong>hay breaking changes<\/strong>. La buena noticia (seg\u00fan el propio equipo) es que la mayor\u00eda de proyectos podr\u00e1n actualizar con cambios m\u00ednimos, especialmente si ya ven\u00edan cuidando de no usar APIs deprecated. Aun as\u00ed, antes de actualizar conviene leer el detalle y preparar una transici\u00f3n ordenada.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Antes de actualizar: gu\u00eda oficial y jQuery Migrate<\/h2>\n\n\n\n<p>Para facilitar el salto, el equipo ha publicado dos piezas clave:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n\n<li>Gu\u00eda de actualizaci\u00f3n oficial: https:\/\/jquery.com\/upgrade-guide\/4.0\/<\/li>\n\n\n<li>Release del plugin jQuery Migrate (para detectar y mitigar usos legacy): https:\/\/github.com\/jquery\/jquery-migrate\/<\/li>\n\n<\/ul>\n\n\n\n<p>Si encuentras problemas al actualizar, el canal recomendado es reportarlos en el tracker de issues: https:\/\/github.com\/jquery\/jquery\/issues.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Disponibilidad: CDN, npm (y el \u201cslim build\u201d)<\/h2>\n\n\n\n<p>jQuery 4.0.0 ya est\u00e1 disponible en el CDN oficial y v\u00eda npm. En CDNs de terceros probablemente aparecer\u00e1 \u201cen breve\u201d, pero no depende del equipo de jQuery: cada proveedor tiene su propio calendario.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Enlaces directos (build completo)<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n\n<li>https:\/\/code.jquery.com\/jquery-4.0.0.js<\/li>\n\n\n<li>https:\/\/code.jquery.com\/jquery-4.0.0.min.js<\/li>\n\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Instalaci\u00f3n con npm<\/h3>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#24292e\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#e1e4e8;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>npm install jquery@4.0.0\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-dark\" style=\"background-color:#24292e;color:#e1e4e8\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color:#B392F0\">npm<\/span><span style=\"color:#9ECBFF\"> install<\/span><span style=\"color:#9ECBFF\"> jquery@4.0.0<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">Slim build: m\u00e1s peque\u00f1o y ahora m\u00e1s \u201cslim\u201d<\/h3>\n\n\n\n<p>Adem\u00e1s del build completo (con todos los m\u00f3dulos), existe una variante \u201cslim\u201d pensada para casos en los que no necesitas <strong>ajax<\/strong>, o prefieres usar librer\u00edas especializadas para peticiones, y tambi\u00e9n cuando te basta con manipulaci\u00f3n de clases + CSS para animaciones. En jQuery 4.0.0 este build se ha adelgazado todav\u00eda m\u00e1s al eliminar <strong>Deferreds<\/strong> y <strong>Callbacks<\/strong> (queda alrededor de <strong>19,5k bytes gzipped<\/strong>).<\/p>\n\n\n\n<p>Los Deferreds llevan tiempo soportando el est\u00e1ndar <strong>Promises\/A+<\/strong> (https:\/\/promisesaplus.com\/), as\u00ed que en la mayor\u00eda de usos puedes migrar a <strong>Promises nativas<\/strong>. Ojo: las Promises nativas est\u00e1n disponibles en todos los navegadores soportados por jQuery 4.0 <strong>excepto IE11<\/strong>. Deferreds tienen algunas capacidades extra frente a Promises, pero para la mayor\u00eda de c\u00f3digo se puede pasar a m\u00e9todos de Promise. Si necesitas IE11, lo m\u00e1s recomendable es usar el build principal o a\u00f1adir un polyfill de Promises.<\/p>\n\n\n\n<p>El slim build tambi\u00e9n est\u00e1 en npm y en el CDN:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n\n<li>https:\/\/code.jquery.com\/jquery-4.0.0.slim.js<\/li>\n\n\n<li>https:\/\/code.jquery.com\/jquery-4.0.0.slim.min.js<\/li>\n\n<\/ul>\n\n\n\n<p>Estas actualizaciones ya est\u00e1n disponibles como versiones actuales en <strong>npm<\/strong> y <strong>Bower<\/strong>. Y tienes el resumen de todas las formas de obtener jQuery aqu\u00ed: https:\/\/jquery.com\/download\/.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Los grandes cambios de jQuery 4.0.0 (y por qu\u00e9 importan)<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">1) Se elimina soporte para IE < 11 (y el siguiente paso ser\u00e1 IE11)<\/h3>\n\n\n\n<p>jQuery 4.0 <strong>deja de soportar IE10 y anteriores<\/strong>. Es un recorte deliberado, por etapas: el equipo no ha eliminado IE11 en esta major porque planea hacerlo progresivamente, y el siguiente paso se publicar\u00e1 en <strong>jQuery 5.0<\/strong> (referencia: https:\/\/github.com\/jquery\/jquery\/pull\/5077).<\/p>\n\n\n\n<p>En esta versi\u00f3n se elimina el c\u00f3digo espec\u00edfico de soporte para versiones de IE anteriores a 11. Tambi\u00e9n cae soporte para otros navegadores muy antiguos: <strong>Edge Legacy<\/strong>, versiones de <strong>iOS anteriores a las \u00faltimas 3<\/strong>, versiones de <strong>Firefox anteriores a las \u00faltimas 2<\/strong> (salvo Firefox ESR) y <strong>Android Browser<\/strong>.<\/p>\n\n\n\n<div class=\"wp-block-group callout callout-warning is-style-warning is-layout-flow wp-block-group-is-layout-flow\" style=\"border-width:1px;border-radius:8px;padding-top:1rem;padding-right:1.5rem;padding-bottom:1rem;padding-left:1.5rem\">\n\n<h4 class=\"wp-block-heading callout-title\">Si necesitas navegadores antiguos<\/h4>\n\n\n<p>Seg\u00fan el anuncio, no deber\u00edas tener que cambiar nada si no dependes de esos navegadores. Pero si tu proyecto necesita soportarlos, la recomendaci\u00f3n es quedarse en jQuery 3.x.<\/p>\n\n<\/div>\n\n\n\n<h3 class=\"wp-block-heading\">2) Trusted Types y CSP: jQuery se alinea mejor con entornos \u201clocked-down\u201d<\/h3>\n\n\n\n<p>jQuery 4.0 a\u00f1ade soporte para <strong>Trusted Types<\/strong>, lo que permite que HTML envuelto en <strong>TrustedHTML<\/strong> (MDN: https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/API\/TrustedHTML) se use como input en m\u00e9todos de manipulaci\u00f3n sin violar la directiva de Content Security Policy (CSP) <code>require-trusted-types-for<\/code>.<\/p>\n\n\n\n<p>Adem\u00e1s, el equipo ha ajustado el transporte de scripts en AJAX: aunque algunas peticiones ya usaban <code>&lt;script&gt;<\/code> para mantener atributos como <code>crossdomain<\/code>, han pasado a usar <strong><code>&lt;script&gt;<\/code> tags en la mayor\u00eda de peticiones as\u00edncronas de scripts<\/strong> (cambio referenciado aqu\u00ed: https:\/\/github.com\/jquery\/jquery\/pull\/4763). El objetivo es evitar errores de CSP asociados a scripts inline.<\/p>\n\n\n\n<p>Aun as\u00ed, hay casos donde se sigue usando XHR para peticiones as\u00edncronas de scripts; por ejemplo, cuando pasas la opci\u00f3n <code>&quot;headers&quot;<\/code> (la recomendaci\u00f3n en el anuncio es usar <strong><code>scriptAttrs<\/code><\/strong> en su lugar). En general, ahora se utiliza <code>&lt;script&gt;<\/code> siempre que sea posible.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">3) El c\u00f3digo fuente migra a ES modules (adi\u00f3s AMD en el repo)<\/h3>\n\n\n\n<p>Uno de los cambios m\u00e1s relevantes para tooling moderno: el c\u00f3digo fuente en la rama <code>main<\/code> se ha migrado de <strong>AMD<\/strong> (explicaci\u00f3n de por qu\u00e9 AMD: https:\/\/requirejs.org\/docs\/whyamd.html) a <strong>ES modules<\/strong> (PR: https:\/\/github.com\/jquery\/jquery\/pull\/4541).<\/p>\n\n\n\n<p>El c\u00f3digo fuente de jQuery siempre se ha publicado con los releases en npm y GitHub, pero no se pod\u00eda importar como m\u00f3dulos directamente sin <strong>RequireJS<\/strong> (https:\/\/requirejs.org\/), que era el build tool principal durante mucho tiempo.<\/p>\n\n\n\n<p>Ahora el empaquetado se hace con <strong>Rollup<\/strong> (https:\/\/rollupjs.org\/introduction\/) y el equipo ejecuta la bater\u00eda de tests contra los ES modules por separado. Esto encaja mucho mejor con build tools modernos, flujos de desarrollo actuales y tambi\u00e9n con el navegador v\u00eda <code>&lt;script type=module&gt;<\/code>.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">4) APIs deprecated: eliminadas (y hay reducci\u00f3n de tama\u00f1o)<\/h3>\n\n\n\n<p>jQuery 4.0.0 aprovecha la major para eliminar APIs que llevaban varias versiones marcadas como deprecated. En muchos casos eran funciones pensadas para uso interno o que hoy tienen equivalente nativo en todos los navegadores soportados.<\/p>\n\n\n\n<p>Lista de funciones eliminadas:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n\n<li><code>jQuery.isArray<\/code><\/li>\n\n\n<li><code>jQuery.parseJSON<\/code><\/li>\n\n\n<li><code>jQuery.trim<\/code><\/li>\n\n\n<li><code>jQuery.type<\/code><\/li>\n\n\n<li><code>jQuery.now<\/code><\/li>\n\n\n<li><code>jQuery.isNumeric<\/code><\/li>\n\n\n<li><code>jQuery.isFunction<\/code><\/li>\n\n\n<li><code>jQuery.isWindow<\/code><\/li>\n\n\n<li><code>jQuery.camelCase<\/code><\/li>\n\n\n<li><code>jQuery.nodeName<\/code><\/li>\n\n\n<li><code>jQuery.cssNumber<\/code><\/li>\n\n\n<li><code>jQuery.cssProps<\/code><\/li>\n\n\n<li><code>jQuery.fx.interval<\/code><\/li>\n\n<\/ul>\n\n\n\n<p>La sustituci\u00f3n recomendada pasa por equivalentes nativos como <code>Array.isArray()<\/code>, <code>JSON.parse()<\/code>, <code>String.prototype.trim()<\/code> y <code>Date.now()<\/code>.<\/p>\n\n\n\n<p>Entre esta limpieza y el recorte de c\u00f3digo espec\u00edfico para IE antiguo, el equipo indica una reducci\u00f3n de <strong>m\u00e1s de 3k bytes gzipped<\/strong>.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">5) Se eliminan m\u00e9todos \u201csolo internos\u201d del prototype de jQuery<\/h3>\n\n\n\n<p>El prototype de jQuery llevaba tiempo exponiendo m\u00e9todos de Array que no se comportaban como el resto de m\u00e9todos chainables de jQuery y que, en realidad, estaban ah\u00ed para uso interno. En concreto: <code>push<\/code>, <code>sort<\/code> y <code>splice<\/code>.<\/p>\n\n\n\n<p>En jQuery 4.0 estos m\u00e9todos se eliminan del prototype. Si los estabas usando (por ejemplo, con colecciones jQuery), el anuncio propone este reemplazo:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#24292e\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#e1e4e8;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>\/\/ Antes (ya no funciona en jQuery 4.0)\n\/\/ $elems.push(elem)\n\n\/\/ Ahora\n[].push.call($elems, elem);\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-dark\" style=\"background-color:#24292e;color:#e1e4e8\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color:#6A737D\">\/\/ Antes (ya no funciona en jQuery 4.0)<\/span><\/span>\n<span class=\"line\"><span style=\"color:#6A737D\">\/\/ $elems.push(elem)<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color:#6A737D\">\/\/ Ahora<\/span><\/span>\n<span class=\"line\"><span style=\"color:#E1E4E8\">[].push.<\/span><span style=\"color:#B392F0\">call<\/span><span style=\"color:#E1E4E8\">($elems, elem);<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">6) El orden de eventos de focus\/blur se ajusta al est\u00e1ndar W3C<\/h3>\n\n\n\n<p>Durante a\u00f1os, los navegadores no se pon\u00edan de acuerdo con el orden de eventos relacionados con el foco: <code>focusin<\/code>, <code>focusout<\/code>, <code>focus<\/code>, <code>blur<\/code>. Con las versiones recientes de los navegadores soportados por jQuery 4.0, por fin han convergido en un orden com\u00fan.<\/p>\n\n\n\n<p>El problema: ese orden com\u00fan <strong>no coincide<\/strong> con el orden consistente que jQuery hab\u00eda elegido hace a\u00f1os, as\u00ed que esto se considera un breaking change. A partir de jQuery 4.0 se deja de sobrescribir el comportamiento nativo.<\/p>\n\n\n\n<p>En la pr\u00e1ctica, todos los navegadores salvo IE seguir\u00e1n la especificaci\u00f3n W3C actual con este orden:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n\n<li>blur<\/li>\n\n\n<li>focusout<\/li>\n\n\n<li>focus<\/li>\n\n\n<li>focusin<\/li>\n\n<\/ol>\n\n\n\n<p>En versiones anteriores, el orden de jQuery era:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n\n<li>focusout, blur, focusin, focus<\/li>\n\n<\/ul>\n\n\n\n<p>Dato curioso que menciona el anuncio: el \u00fanico navegador que segu\u00eda el viejo est\u00e1ndar W3C (antes de su actualizaci\u00f3n en 2023) era Internet Explorer.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Notas pr\u00e1cticas de migraci\u00f3n (lo que conviene revisar en tu c\u00f3digo)<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n\n<li>Compatibilidad de navegador: si todav\u00eda soportas IE10 o anteriores (o Edge Legacy \/ Android Browser \/ iOS muy antiguo), no subas a 4.x. Mantente en 3.x.<\/li>\n\n\n<li>Busca usos de APIs eliminadas (<code>jQuery.trim<\/code>, <code>jQuery.parseJSON<\/code>, etc.) y sustit\u00fayelas por equivalentes nativos.<\/li>\n\n\n<li>Revisa cualquier l\u00f3gica que dependa del orden de eventos de foco (especialmente si tienes handlers encadenados de <code>focusin\/focusout\/focus\/blur<\/code>).<\/li>\n\n\n<li>Si usabas <code>push\/sort\/splice<\/code> sobre colecciones jQuery, migra a llamadas con <code>Array.prototype<\/code> como en el ejemplo.<\/li>\n\n\n<li>Si trabajas con CSP estricta y\/o <code>require-trusted-types-for<\/code>, valora el salto a 4.0 por sus mejoras en Trusted Types y el transporte de scripts en AJAX.<\/li>\n\n\n<li>Si estabas usando Deferreds\/Callbacks por inercia, considera Promises nativas (y decide si necesitas el build completo o el slim).<\/li>\n\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Imagen: reuni\u00f3n por el 20\u00ba aniversario<\/h2>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1804\" height=\"1359\" src=\"https:\/\/helloblog.io\/app\/uploads\/sites\/5\/2026\/01\/jquery-reunion-group-edited.jpeg\" alt=\"Foto de grupo en la reuni\u00f3n del 20\u00ba aniversario de jQuery\" class=\"wp-image-177\" srcset=\"https:\/\/helloblog.io\/app\/uploads\/sites\/5\/2026\/01\/jquery-reunion-group-edited.jpeg 1804w, https:\/\/helloblog.io\/app\/uploads\/sites\/5\/2026\/01\/jquery-reunion-group-edited-300x226.jpeg 300w, https:\/\/helloblog.io\/app\/uploads\/sites\/5\/2026\/01\/jquery-reunion-group-edited-1024x771.jpeg 1024w, https:\/\/helloblog.io\/app\/uploads\/sites\/5\/2026\/01\/jquery-reunion-group-edited-768x579.jpeg 768w, https:\/\/helloblog.io\/app\/uploads\/sites\/5\/2026\/01\/jquery-reunion-group-edited-1536x1157.jpeg 1536w, https:\/\/helloblog.io\/app\/uploads\/sites\/5\/2026\/01\/jquery-reunion-group-edited-400x301.jpeg 400w\" sizes=\"auto, (max-width: 1804px) 100vw, 1804px\" \/><figcaption class=\"wp-element-caption\">Reuni\u00f3n de la comunidad\/equipo de jQuery durante el anuncio de jQuery 4.0.0. \u2014 <em>Forr\u00e1s: Official jQuery Blog (blog.jquery.com)<\/em><\/figcaption><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Changelog completo y enlaces \u00fatiles<\/h2>\n\n\n\n<p>Para el detalle a nivel de commits, el anuncio enlaza el changelog completo comparando 3.7.1 con 4.0.0: https:\/\/github.com\/jquery\/jquery\/compare\/3.7.1&#8230;4.0.0.<\/p>\n\n\n\n<p>Si vas a actualizar un proyecto grande, lo m\u00e1s sensato es combinar: gu\u00eda de upgrade + jQuery Migrate + lectura del changelog para los m\u00f3dulos que m\u00e1s usas (Ajax, Event, Manipulation, Selector, etc.).<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Agradecimientos del release<\/h2>\n\n\n\n<p>El anuncio incluye un agradecimiento expl\u00edcito a quienes han participado con parches, reportes y pruebas: Alex, Ahmed S. El-Afifi, fecore1, Dallas Fraser, Richard Gibson, Micha\u0142 Go\u0142\u0119biowski-Owczarek, Pierre Grimaud, Gabriela Gutierrez, Jonathan, Necmettin Karakaya, Anders Kaseorg, Wonseop Kim, Simon Legner, Shashanka Nataraj, Pat O&#8217;Callaghan, Christian Oliff, Dimitri Papadopoulos Orfanos, Wonhyoung Park, Bruno PIERRE, Baoshuo Ren, Beatriz Rezener, Sean Robinson, Ed Sanders, Timo Tijhof, Tom, Christian Wenz, ygj6 y todo el equipo de jQuery.<\/p>\n\n\n<div class=\"references-section\">\n                <h2>Referencias \/ Fuentes<\/h2>\n                <ul class=\"references-list\"><li><a href=\"https:\/\/blog.jquery.com\/2026\/01\/17\/jquery-4-0-0\/\" target=\"_blank\" rel=\"noopener noreferrer\">jQuery 4.0.0<\/a><\/li><li><a href=\"https:\/\/jquery.com\/upgrade-guide\/4.0\/\" target=\"_blank\" rel=\"noopener noreferrer\">jQuery Upgrade Guide (4.0)<\/a><\/li><li><a href=\"https:\/\/github.com\/jquery\/jquery-migrate\/\" target=\"_blank\" rel=\"noopener noreferrer\">jquery\/jquery-migrate<\/a><\/li><li><a href=\"https:\/\/github.com\/jquery\/jquery\/compare\/3.7.1...4.0.0\" target=\"_blank\" rel=\"noopener noreferrer\">jQuery 4.0.0 full changelog (3.7.1&#8230;4.0.0)<\/a><\/li><li><a href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/API\/TrustedHTML\" target=\"_blank\" rel=\"noopener noreferrer\">TrustedHTML (MDN)<\/a><\/li><li><a href=\"https:\/\/github.com\/jquery\/jquery\/pull\/5077\" target=\"_blank\" rel=\"noopener noreferrer\">Support removal staged for jQuery 5.0 (PR)<\/a><\/li><li><a href=\"https:\/\/github.com\/jquery\/jquery\/pull\/4763\" target=\"_blank\" rel=\"noopener noreferrer\">Switch most async script requests to use &lt;script&gt; tags (PR)<\/a><\/li><li><a href=\"https:\/\/github.com\/jquery\/jquery\/pull\/4541\" target=\"_blank\" rel=\"noopener noreferrer\">Migrate jQuery source from AMD to ES modules (PR)<\/a><\/li><li><a href=\"https:\/\/requirejs.org\/docs\/whyamd.html\" target=\"_blank\" rel=\"noopener noreferrer\">Why AMD? (RequireJS docs)<\/a><\/li><li><a href=\"https:\/\/requirejs.org\/\" target=\"_blank\" rel=\"noopener noreferrer\">RequireJS<\/a><\/li><li><a href=\"https:\/\/rollupjs.org\/introduction\/\" target=\"_blank\" rel=\"noopener noreferrer\">Rollup Introduction<\/a><\/li><li><a href=\"https:\/\/promisesaplus.com\/\" target=\"_blank\" rel=\"noopener noreferrer\">Promises\/A+<\/a><\/li><li><a href=\"https:\/\/jquery.com\/download\/\" target=\"_blank\" rel=\"noopener noreferrer\">jQuery download<\/a><\/li><li><a href=\"https:\/\/github.com\/jquery\/jquery\/issues\" target=\"_blank\" rel=\"noopener noreferrer\">jQuery issues<\/a><\/li><\/ul>\n            <\/div>","protected":false},"excerpt":{"rendered":"<p>jQuery 4.0.0 ya es final: primera major en casi 10 a\u00f1os, con limpieza de legado, mejoras de seguridad (CSP\/Trusted Types) y varios breaking changes. Esto es lo que necesitas revisar antes de subir de 3.x a 4.x.<\/p>\n","protected":false},"author":16,"featured_media":176,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[88],"tags":[91,93,90,89,92],"class_list":["post-178","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-lenguajes-de-programacion","tag-csp","tag-frontend","tag-javascript","tag-jquery","tag-trusted-types"],"_links":{"self":[{"href":"https:\/\/helloblog.io\/es\/wp-json\/wp\/v2\/posts\/178","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/helloblog.io\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/helloblog.io\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/helloblog.io\/es\/wp-json\/wp\/v2\/users\/16"}],"replies":[{"embeddable":true,"href":"https:\/\/helloblog.io\/es\/wp-json\/wp\/v2\/comments?post=178"}],"version-history":[{"count":0,"href":"https:\/\/helloblog.io\/es\/wp-json\/wp\/v2\/posts\/178\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/helloblog.io\/es\/wp-json\/wp\/v2\/media\/176"}],"wp:attachment":[{"href":"https:\/\/helloblog.io\/es\/wp-json\/wp\/v2\/media?parent=178"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/helloblog.io\/es\/wp-json\/wp\/v2\/categories?post=178"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/helloblog.io\/es\/wp-json\/wp\/v2\/tags?post=178"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}