Back

Ce qu'il faut arrêter de faire en JavaScript en 2025

Ce qu'il faut arrêter de faire en JavaScript en 2025

JavaScript évolue rapidement. Les modèles de code qui semblaient modernes il y a trois ans génèrent désormais des octets inutiles, ignorent les améliorations de la plateforme ou s’appuient sur des API obsolètes. Si vous développez des applications web de production en 2025, voici les anti-patterns JavaScript à éviter — et les alternatives à privilégier.

Points clés à retenir

  • Les fonctionnalités obsolètes comme les instructions with, __proto__ et String.prototype.substr doivent être remplacées par des alternatives modernes.
  • Les bibliothèques héritées telles que jQuery, Moment.js et Lodash peuvent souvent être remplacées par les API natives des navigateurs et les fonctionnalités ES2023–ES2025.
  • Le CSS moderne gère désormais de nombreuses tâches qui nécessitaient auparavant JavaScript, notamment les container queries, le sélecteur :has() et les animations liées au défilement.
  • Les modules ESM natifs et les bundlers légers comme Vite ont rendu CommonJS et RequireJS obsolètes pour les nouveaux projets frontend.

Arrêtez d’utiliser les fonctionnalités obsolètes du langage

Certaines fonctionnalités JavaScript sont obsolètes ou dépassées depuis des années, mais elles persistent dans les bases de code par habitude ou copier-coller.

Abandonnez ces pratiques :

  • Les instructions with — Interdites en mode strict depuis ES5. Elles créent une portée ambiguë et cassent les optimisations.
  • __proto__ — Utilisez plutôt Object.getPrototypeOf() et Object.setPrototypeOf().
  • String.prototype.substr — Obsolète. Utilisez slice() ou substring().
  • Les propriétés statiques héritées de RegExp comme RegExp.$1 — Elles sont non standard et peu fiables d’un moteur à l’autre.

Ce ne sont pas des cas marginaux. Les linters les signalent pour de bonnes raisons. Les modèles JavaScript modernes supposent que vous avez tourné la page.

Arrêtez de recourir systématiquement aux bibliothèques héritées

jQuery, Moment.js, Lodash et RequireJS ont résolu de vrais problèmes — en 2015. Aujourd’hui, la plateforme couvre nativement la plupart de leurs cas d’usage.

Que faire à la place :

  • Manipulation du DOMquerySelector, querySelectorAll et les API DOM modernes gèrent ce que jQuery faisait autrefois.
  • Gestion des dates — L’API Temporal arrive. En attendant une prise en charge complète, utilisez date-fns ou le Intl.DateTimeFormat natif.
  • Fonctions utilitaires — Les fonctionnalités ES2023–ES2025 comme Object.groupBy(), les nouvelles méthodes Set (.union(), .intersection()) et les helpers d’itérateurs (.map(), .filter() sur les itérateurs) remplacent la plupart des imports Lodash.
  • Chargement de modules — Les modules ESM natifs et import() rendent RequireJS et AMD obsolètes.

Livrer une bibliothèque de 30 Ko pour des fonctionnalités que le navigateur fournit gratuitement est une erreur frontend à éviter en 2025.

Arrêtez d’ignorer les fonctionnalités ES2023–ES2025

Le langage a considérablement évolué. Ces fonctionnalités sont stables ou presque :

  • Object.groupBy() et Map.groupBy() — Regroupez des tableaux sans bibliothèques externes.
  • Helpers d’itérateurs — Chaînez .map(), .filter(), .take() directement sur les itérateurs.
  • Nouvelles méthodes Set.union(), .intersection(), .difference(), .isSubsetOf().
  • RegExp.escape() — Échappez en toute sécurité des chaînes pour les motifs regex.
  • Attributs d’import et modules JSONimport data from './config.json' with { type: 'json' }.
  • await au niveau supérieur — Utilisez-le dans les modules sans tout envelopper dans des IIFE async.

Consultez caniuse.com et vos navigateurs cibles, mais ne recourez pas par défaut aux polyfills pour des fonctionnalités disponibles depuis deux ans.

Arrêtez d’utiliser JavaScript pour ce que CSS gère maintenant

Le CSS moderne a absorbé des fonctionnalités qui nécessitaient autrefois JavaScript. Utiliser JS pour ces tâches crée une complexité inutile et nuit aux performances.

Laissez CSS gérer :

  • Les container queries — Des composants responsive sans bidouilles ResizeObserver.
  • Le sélecteur :has() — Sélection de parents sans parcours du DOM.
  • Les animations liées au défilementanimation-timeline: scroll() remplace les écouteurs d’événements de scroll.
  • Les transitions de vue — Effets de transition de page natifs.

Chaque écouteur de scroll que vous supprimez est une victoire pour le thread principal.

Arrêtez d’utiliser les Mutation Events et les hypothèses sur les cookies tiers

Les Mutation Events (DOMSubtreeModified, DOMNodeInserted) sont obsolètes et peu performants. Utilisez plutôt MutationObserver — il est stable depuis plus d’une décennie.

Les cookies tiers sont effectivement morts pour le tracking et les flux d’authentification cross-site. Le calendrier de dépréciation de Chrome a changé, mais Safari et Firefox les bloquent depuis des années. Construisez des flux d’authentification avec des cookies first-party, des tokens ou une identité fédérée. N’architecturez pas autour d’hypothèses qui ne fonctionnent pas dans la moitié des navigateurs de vos utilisateurs.

Arrêtez de démarrer de nouveaux projets avec CommonJS

Si vous écrivez du code navigateur en 2025 et que vous utilisez require() ou des configurations webpack lourdes, faites une pause. Les modules ESM natifs fonctionnent partout où c’est important. Les bundlers plus légers comme Vite et esbuild gèrent les cas limites restants avec une configuration minimale.

CommonJS a toujours sa place dans les bibliothèques Node.js ciblant des environnements plus anciens. Pour le nouveau code frontend, c’est un héritage encombrant.

Conclusion

Les bonnes pratiques JavaScript en 2025 ne consistent pas à suivre les tendances — il s’agit de reconnaître quand la plateforme a rattrapé vos dépendances. Chaque fonctionnalité obsolète que vous supprimez, chaque bibliothèque inutile que vous abandonnez et chaque solution CSS native que vous adoptez rend votre code plus petit, plus rapide et plus facile à maintenir.

Auditez vos projets actuels. Vérifiez vos imports. Demandez-vous si cette fonction utilitaire nécessite une bibliothèque ou simplement une méthode native que vous n’avez pas encore apprise. Les modèles JavaScript modernes sont déjà là — il vous suffit de les utiliser.

FAQ

Oui, mais procédez avec prudence. Les navigateurs modernes prennent en charge querySelector, fetch et d'autres API qui remplacent les fonctionnalités principales de jQuery. Pour les projets existants, auditez d'abord votre utilisation de jQuery et remplacez les appels progressivement. Les nouveaux projets doivent éviter jQuery entièrement puisque les alternatives natives sont désormais bien prises en charge et plus performantes.

L'API Temporal est au stade 3 du processus TC39 et disponible derrière des flags dans certains navigateurs. Une prise en charge complète cross-browser est attendue prochainement, mais pour le code de production aujourd'hui, utilisez date-fns ou Intl.DateTimeFormat natif. Surveillez caniuse.com pour les mises à jour avant d'adopter Temporal sans polyfills.

Pour la plupart des cas d'usage, non. JavaScript natif inclut désormais Object.groupBy, de nouvelles méthodes Set et des helpers d'itérateurs qui couvrent les fonctions Lodash courantes. Cependant, Lodash reste utile pour le clonage profond, la manipulation d'objets complexes ou lors du ciblage d'environnements plus anciens. Importez uniquement les fonctions spécifiques dont vous avez besoin plutôt que la bibliothèque entière.

Commencez par mettre à jour votre package.json avec type défini sur module. Remplacez les instructions require par la syntaxe import et module.exports par export. Mettez à jour les extensions de fichiers en .mjs si nécessaire, ou configurez votre bundler en conséquence. Des outils comme Vite et esbuild simplifient considérablement cette transition pour les projets frontend.

Complete picture for complete understanding

Capture every clue your frontend is leaving so you can instantly get to the root cause of any issue with OpenReplay — the open-source session replay tool for developers. Self-host it in minutes, and have complete control over your customer data.

Check our GitHub repo and join the thousands of developers in our community.

OpenReplay