14 points par GN⁺ 2026-01-19 | 3 commentaires | Partager sur WhatsApp
  • Environ 10 ans après, mise à jour de version majeure avec la sortie officielle de jQuery 4.0.0
  • Fin de la prise en charge d’IE 10 et des navigateurs anciens, allègement du code et renforcement de la conformité aux standards modernes ; la plupart des utilisateurs peuvent effectuer la mise à niveau sans modifier leur code
  • Transition vers une structure basée sur les modules ES avec l’adoption de Rollup pour la build, afin d’assurer la compatibilité avec les environnements de développement modernes
  • Ajout de la prise en charge de Trusted Types et CSP pour limiter au minimum les conflits avec les politiques de sécurité
  • Suppression des API dépréciées et réduction de la build slim pour améliorer les performances et la maintenabilité

Aperçu principal de jQuery 4.0.0

  • jQuery 4.0.0 est une grande release majeure publiée après environ 10 ans, aboutie au terme d’un long cycle de développement et de plusieurs préversions
    • La plupart des utilisateurs peuvent effectuer la mise à niveau sans modifier leur code
    • Suppression du code legacy et des paramètres privés accumulés dans les versions précédentes
  • Un guide de migration et le plugin jQuery Migrate sont fournis pour faciliter la transition depuis les versions antérieures
  • La distribution est disponible via le CDN officiel et npm ; les autres CDN seront mis à jour progressivement

Changements de prise en charge des navigateurs

  • Fin de la prise en charge d’IE 10 et versions antérieures ; IE 11 sera supprimé progressivement avec jQuery 5.0
  • Fin de la prise en charge de Edge Legacy, des anciennes versions d’iOS (au-delà des 3 versions les plus récentes), des anciennes versions de Firefox (au-delà des 2 versions les plus récentes) et d’Android Browser
  • Si vous devez prendre en charge d’anciens navigateurs, il est recommandé de rester sur jQuery 3.x

Compatibilité Trusted Types et CSP

  • Ajout de la prise en charge de Trusted Types pour traiter en toute sécurité les objets TrustedHTML
  • La plupart des requêtes de script asynchrones passent désormais par des balises ``, afin d’éviter les erreurs CSP
    • En cas d’utilisation de l’option "headers", XHR reste possible, mais l’usage de scriptAttrs est recommandé
Publicité

Transition vers les modules ES

  • Le code source de jQuery a été entièrement migré d’AMD vers les modules ES
    • Rollup a été adopté comme outil de build à la place de RequireJS
    • Des tests distincts sont exécutés pour la base en modules ES
  • `` permet d’assurer la compatibilité avec les navigateurs modernes et les outils de build

Suppression des API dépréciées

  • Les API marquées comme non recommandées depuis longtemps ont été totalement supprimées
    • Fonctions supprimées : 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
    • Remplacements : utiliser les méthodes natives comme Array.isArray(), JSON.parse(), String.prototype.trim(), Date.now(), etc.
  • Avec la suppression du code lié à IE, la taille diminue d’environ 3 Ko en gzip

Suppression de méthodes réservées à l’interne

  • Les méthodes push, sort, splice utilisées uniquement en interne ont été retirées du prototype jQuery
    • $elems.push(elem) peut être remplacé par [].push.call($elems, elem)
Publicité

Changement de l’ordre des événements de focus

  • Uniformisation selon l’ordre des événements focus/blur défini par la spécification W3C
    • Nouvel ordre : blur → focusout → focus → focusin
    • Cet ordre diffère de l’ancien comportement de jQuery, ce qui nécessite une vigilance de compatibilité
    • Tous les navigateurs, sauf IE, suivent déjà cet ordre

Améliorations de la build slim

  • Suppression de Deferreds et Callbacks, réduisant la taille du fichier à environ 19,5 Ko (gzip)
    • La plupart des navigateurs prenant en charge les Promise natives, elles peuvent servir de remplacement
    • Si la prise en charge d’IE11 est nécessaire, il est recommandé d’utiliser la build principale ou un polyfill Promise
  • La build slim exclut les modules liés à Ajax et à l’animation, ce qui la rend environ 8 Ko plus légère

Téléchargement et distribution

Contributeurs et 20e anniversaire

  • De nombreux contributeurs open source ont participé via des correctifs, des rapports de bugs et des tests
  • Pour les 20 ans de jQuery, l’équipe s’est retrouvée à Dallas, avec la participation du fondateur John Resig via Zoom

Résumé des principaux changements de code (changelog)

  • Ajax : amélioration du traitement des données binaires, prévention des erreurs CSP, renforcement de la gestion des erreurs JSONP
  • CSS : correction du calcul de taille des éléments ``, amélioration du traitement des espaces dans les variables CSS, suppression du hook opacity
  • Core : transition AMD → modules ES, utilisation de DOMParser, suppression du code de compatibilité avec les anciens navigateurs
  • Event : traitement natif des événements focus/blur, suppression du shim event.which
  • Selector : intégration de Sizzle, amélioration de :has et :even/:odd, ajout du chaînage uniqueSort
  • Docs : mise à jour des liens HTTPS, révision des documents README et CONTRIBUTING
  • Release : automatisation du processus de build et de distribution, migration vers release-it

Résumé

  • jQuery 4.0.0 est une refonte structurelle alignée sur les standards du Web moderne et les politiques de sécurité
  • Suppression du code legacy, modularisation ES, renforcement de la sécurité et allègement consolident les bases de la maintenance à long terme
  • La release est considérée comme symbolique pour les 20 ans de l’écosystème jQuery

3 commentaires

 
tsboard 2026-01-21

Un 20e anniversaire émouvant. On a désormais très peu l’occasion de l’utiliser, mais j’espère qu’il continuera d’être apprécié comme un outil toujours utile sur le terrain.

 
shakespeares 2026-01-19

Il est incroyablement tenace… haha

 
GN⁺ 2026-01-19
Avis Hacker News
  • À ce sujet, il existe aussi un bon article qui explique comment utiliser jQuery de façon réactive dans des codebases legacy quand on ne peut pas utiliser un framework moderne
    Reactive jQuery for Spaghetti-fied Legacy Codebases

    • À l’époque, on utilisait beaucoup BackboneJS pour ce genre de cas. C’est d’ailleurs toujours maintenu aujourd’hui
      Si l’on doit utiliser jQuery pour des raisons legacy, Backbone peut être une bonne étape intermédiaire avant de passer à un framework moderne
      Site officiel de BackboneJS, liste des tags GitHub
    • Cet article m’a rappelé l’époque du code spaghetti en jQuery
      En réalité, il m’est arrivé de voir du code React surconçu être pire qu’un code jQuery bien organisé
      React a certes relevé le niveau d’exigence en matière de qualité, mais parfois il est plus efficace d’utiliser correctement un outil familier
    • J’ai moi aussi essayé cette approche, et c’était bien mieux que le chaos jQuery façon années 2010
      Ça convient particulièrement bien à des cas comme les Userscripts, où le périmètre du problème est réduit et où l’étape de build est pénible
      En fait, on peut très bien l’implémenter sans jQuery, avec seulement querySelector, addEventListener et innerHTML
    • La dernière grosse app jQuery que j’ai faite utilisait aussi ce pattern réactif
      Il fallait intégrer de force un frontend de recherche personnalisé dans Joomla CMS, et ça fonctionnait plutôt bien
    • C’est un excellent pattern. Si on y ajoute des signals, les fonctions de mise à jour sont appelées automatiquement
      C’est exactement comme ça que nous procédons dans Reactive Mastro
  • jQuery reste l’une de mes bibliothèques préférées
    C’est un outil qui a façonné ma carrière, donc j’y garde toujours une affection particulière

    • Les jeunes aujourd’hui ne courent qu’après les nouveaux frameworks, mais grâce à jQuery et au .NET Framework, je n’ai jamais manqué de travail
    • Cela fait 15 ans que j’utilise jQuery. C’est toujours mon choix par défaut
    • J’aimerais que quelqu’un greffe un Virtual DOM sur jQuery
      Une combinaison jQuery + jQuery UI + plugins + IA me semble avoir un potentiel énorme
  • Chaque fois qu’on parle de HTMX, je me dis : « ça ne se ferait pas juste en trois lignes de jQuery ? »
    Quoi qu’il en soit, jQuery a toujours résolu les problèmes, et c’est ce qui compte

    • Oui. HTMX est issu d’intercooler.js, lui-même inspiré à l’origine par la méthode .load() de jQuery
      Voir la documentation de jQuery.load()
      Je suis tombé dessus pendant un travail d’optimisation des performances, et ça m’a donné encore plus de respect pour jQuery
    • Le problème de jQuery, c’est que c’est du code impératif, donc dès qu’on commence à gérer plusieurs états, ça devient complexe
    • Aujourd’hui, j’utilise du JS natif, mais l’élégance de l’interface de sélection $() reste inégalée
      On pourrait probablement compenser les différences de performance avec des calculs préalables
    • Quand j’utilise Django, je résous la plupart des problèmes avec une combinaison HTMX + vanilla JS
      C’est simple, tout en donnant un ressenti proche d’une SPA
  • Good old jQuery, merci pour tout

  • Ça fait plaisir de voir que jQuery est toujours maintenu et mis à jour
    Mais cela veut aussi dire, tristement, que React sera peut-être encore vivant en 2060

    • Grâce à React, le développement d’applications s’est énormément amélioré
      Quand je repense à l’ancien callback hell, la situation actuelle ressemble à un rêve
    • Vers 2060, React Native en sera peut-être à la v0.93
    • En pratique, il existe déjà presque deux React. En 2060, il y en aura peut-être cinq
  • À l’époque des années 2000 et 2010, quand les frameworks SPA n’étaient pas encore courants, j’ai moi aussi appris le développement web avec jQuery
    Une bonne partie de ce que j’ai créé à ce moment-là fonctionne probablement encore
    J’adresse mes remerciements à l’équipe jQuery

  • Félicitations à toutes les personnes qui ont participé à la sortie de jQuery 4.0
    Si vous cherchez une approche plus structurée, il existe un système de templates réactifs appelé JsViews
    C’est ancien et stable, mais ça n’a jamais attiré autant l’attention que les frameworks récents

    • Je n’avais jamais entendu parler de JsViews, mais c’est intéressant
      Personnellement, j’aime bien les styles de jQuery modernisés comme cheerio et alpine.js
      cheerio.js.org, alpinejs.dev
    • Je n’aurai sans doute pas à utiliser jQuery tout de suite, mais le code source de JsViews mérite d’être étudié
      Cela dit, le design du site est tellement daté que ça freine probablement son adoption
      Malgré cela, ça se charge vite, et sa légèreté est impressionnante
      jsrender.min.js ne fait que 12.82kB
  • Aussi incroyable que cela puisse paraître, jQuery 4.0 prend encore en charge IE11
    Cette prise en charge devrait enfin être retirée dans jQuery 5.0

    • Il semble qu’ils aient conservé le support d’IE11 pour ne pas retarder la sortie de 4.0
      Voir la PR associée et l’issue
      Quand on pense que la 3.0 est sortie il y a 10 ans, c’est assez surprenant
    • C’est pour la rétrocompatibilité. Il existe encore des environnements où IE11 est nécessaire
      C’est appréciable qu’ils continuent à prendre en charge ces utilisateurs et ces produits
    • Microsoft prévoit de prendre en charge IE11 jusqu’en 2032 via Windows 10 LTSC et le mode IE d’Edge sur Windows 11
    • Tout le monde n’a pas accès au matériel et aux logiciels les plus récents
      Il y a encore beaucoup de salles informatiques scolaires qui utilisent d’anciens systèmes
  • Le travail investi dans les outils de mise à niveau de jQuery est vraiment impressionnant

  • J’adore toujours la syntaxe de chaînage de jQuery
    Il y a 15 ans, j’ai écrit un tutoriel jQuery en français qui a eu beaucoup de vues
    J’espère avoir contribué, même modestement, à la diffusion de jQuery