[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"theme-db":3,"alexandrecarette-hero-data":22,"megamenu-contexts-ac-hub":29,"$fHZtaHZxhKBREexKg2bmIujddgGdHrGthtu9fKaKLygo":31,"megamenu":37,"$fP0FV7zZkQhZStJelKMQF2vnI2nbZQB210etjzdyGslw":114,"footer-db":174,"header-db":194,"$f6TzYoHp-udrW6aN-h9ETSGZFe_2a3kAvQqbiLGv1Tvc":206,"i18n-alternates-_root-fr":25,"$fNzYdfm2IGmQ_8P2_386XU2wWEM41l7lts0cAfbMJj4w":221,"$fuxjHSf-XxTofvGDeNFH2UIYtksG6lS_sAyJDI53T8Gw":224,"$fLAZGy-huw97DUrxzRYRsZAVxxBZDuuGBIGfCB_4BlLM":228,"$fNcPqH2JxOJaLWnKAthKSfRT7s6E1hg2AmONg9wSd2SI":299,"$ftCgiCQ1Qyz6eieo83he29D_FsSw74NeCmklcXAHGAsA":300},{"theme":4},{"colors":5,"typography":13,"ui":17,"defaultColorMode":21},{"primary":6,"secondary":7,"background":8,"foreground":9,"muted":10,"headerBg":11,"footerBg":12,"topBarBg":9,"topBarText":11},"#4F46E5","#0D9488","#F9FAFB","#111827","#6B7280","#ffffff","#020617",{"fontFamily":14,"fontUrl":15,"baseFontSize":16},"Inter, system-ui, sans-serif","https:\u002F\u002Ffonts.googleapis.com\u002Fcss2?family=Inter:wght@400;500;600;700&family=Playfair+Display:ital,wght@0,400;0,700;0,800;0,900;1,400;1,700&display=swap","16px",{"borderRadius":18,"contentWidth":19,"shadow":20},"lg","7xl",true,"light",{"capa":23,"malt":26,"legal":27,"links":28},{"state":24,"trimester":25,"missionsOpen":25,"missionsMax":25,"nextTrimester":25},"fallback",null,{"url":25,"rating":25,"reviewsCount":25},{"siret":25,"status":25,"city":25},{"linkedin":25,"github":25},{"contexts":30},[],{"tree_loaded":20,"found":32,"kind":33,"id":25,"path":34,"path_fr":34,"pilier_slug":34,"pilier_slug_fr":34,"slug":34,"name":34,"description":34,"meta_title":34,"meta_description":34,"breadcrumb":35,"children":36},false,"category","",[],[],{"items":38},[39,49,57,65,73,81,90,98,106],{"id":40,"type":41,"label":42,"href":44,"icon":25,"iconRole":45,"description":25,"badge":25,"groupTitle":25,"groupKey":25,"style":25,"gridColumns":25,"cssClass":25,"psCategoryId":25,"psProductId":25,"showPsChildren":32,"position":46,"barVisible":20,"children":47,"psChildren":48},41,"link",{"fr":43},"Expertise","\u002Fexpertise","picto",0,[],[],{"id":50,"type":41,"label":51,"href":53,"icon":25,"iconRole":45,"description":25,"badge":25,"groupTitle":25,"groupKey":25,"style":25,"gridColumns":25,"cssClass":25,"psCategoryId":25,"psProductId":25,"showPsChildren":32,"position":54,"barVisible":20,"children":55,"psChildren":56},42,{"fr":52},"Blog","\u002Fblog",1,[],[],{"id":58,"type":41,"label":59,"href":61,"icon":25,"iconRole":45,"description":25,"badge":25,"groupTitle":25,"groupKey":25,"style":25,"gridColumns":25,"cssClass":25,"psCategoryId":25,"psProductId":25,"showPsChildren":32,"position":62,"barVisible":20,"children":63,"psChildren":64},43,{"fr":60},"Méthode","\u002Fmodules",2,[],[],{"id":66,"type":41,"label":67,"href":69,"icon":25,"iconRole":45,"description":25,"badge":25,"groupTitle":25,"groupKey":25,"style":25,"gridColumns":25,"cssClass":25,"psCategoryId":25,"psProductId":25,"showPsChildren":32,"position":70,"barVisible":20,"children":71,"psChildren":72},49,{"fr":68},"Modules gratuits","\u002Fmodules-libres",3,[],[],{"id":74,"type":41,"label":75,"href":77,"icon":25,"iconRole":45,"description":25,"badge":25,"groupTitle":25,"groupKey":25,"style":25,"gridColumns":25,"cssClass":25,"psCategoryId":25,"psProductId":25,"showPsChildren":32,"position":78,"barVisible":20,"children":79,"psChildren":80},44,{"fr":76},"Outils IA","\u002Foutils-ia",4,[],[],{"id":82,"type":41,"label":83,"href":85,"icon":25,"iconRole":45,"description":25,"badge":25,"groupTitle":25,"groupKey":25,"style":86,"gridColumns":25,"cssClass":25,"psCategoryId":25,"psProductId":25,"showPsChildren":32,"position":87,"barVisible":20,"children":88,"psChildren":89},45,{"fr":84},"Tarifs","\u002Ftarifs",{"highlight":20},5,[],[],{"id":91,"type":41,"label":92,"href":94,"icon":25,"iconRole":45,"description":25,"badge":25,"groupTitle":25,"groupKey":25,"style":25,"gridColumns":25,"cssClass":25,"psCategoryId":25,"psProductId":25,"showPsChildren":32,"position":95,"barVisible":20,"children":96,"psChildren":97},46,{"fr":93},"Academy","\u002Facademy",6,[],[],{"id":99,"type":41,"label":100,"href":102,"icon":25,"iconRole":45,"description":25,"badge":25,"groupTitle":25,"groupKey":25,"style":25,"gridColumns":25,"cssClass":25,"psCategoryId":25,"psProductId":25,"showPsChildren":32,"position":103,"barVisible":20,"children":104,"psChildren":105},47,{"fr":101},"À propos","\u002Fa-propos",7,[],[],{"id":107,"type":41,"label":108,"href":110,"icon":25,"iconRole":45,"description":25,"badge":25,"groupTitle":25,"groupKey":25,"style":25,"gridColumns":25,"cssClass":25,"psCategoryId":25,"psProductId":25,"showPsChildren":32,"position":111,"barVisible":20,"children":112,"psChildren":113},48,{"fr":109},"Contact","\u002Fcontact",8,[],[],{"columns":115},[116,127,153,166],{"title":117,"position":54,"links":118},"Plateforme",[119,120,123,124],{"label":84,"href":85,"external":32},{"label":121,"href":122,"external":32},"Devenir Ambassadeur","\u002Fambassadeur",{"label":60,"href":61,"external":32},{"label":125,"href":126,"external":20},"CodeMyShop (open-source)","https:\u002F\u002Fcodemyshop.com",{"title":128,"position":62,"links":129},"Le Synedre",[130,133,136,139,142,145,147,150],{"label":131,"href":132,"external":32},"L'histoire","\u002Fsynedre",{"label":134,"href":135,"external":20},"Constitution","https:\u002F\u002Fsynedre.com\u002Ffr\u002Fconstitution",{"label":137,"href":138,"external":20},"L'équipe","https:\u002F\u002Fsynedre.com\u002Ffr\u002Fagents",{"label":140,"href":141,"external":32},"Le réacteur en direct","\u002Freacteur",{"label":143,"href":144,"external":20},"Le Drill (entraînement)","https:\u002F\u002Fsynedre.com\u002Ffr\u002Fdrill",{"label":146,"href":138,"external":20},"Les agents IA",{"label":148,"href":149,"external":20},"La Conduite","https:\u002F\u002Fsynedre.com\u002Ffr\u002Fconduite",{"label":151,"href":152,"external":20},"Charte plateforme","https:\u002F\u002Fsynedre.com\u002Ffr\u002Fcharte",{"title":154,"position":70,"links":155},"Ressources",[156,157,158,160,163],{"label":52,"href":53,"external":32},{"label":93,"href":94,"external":32},{"label":159,"href":44,"external":32},"Expertise PrestaShop",{"label":161,"href":162,"external":32},"Flywheel","\u002Fflywheel",{"label":164,"href":165,"external":32},"Manifeste","\u002Fmanifeste",{"title":101,"position":78,"links":167},[168,170,173],{"label":169,"href":102,"external":32},"Alexandre Carette",{"label":171,"href":172,"external":20},"Dossier de presse","https:\u002F\u002Fsynedre.com\u002Ffr\u002Fpresse",{"label":109,"href":110,"external":32},{"footer":175},{"theme":176,"description":25,"hours":25,"logo":177,"contact":180,"social":181,"bottomBar":191,"newsletter":192},"dark",{"src":178,"href":179,"alt":169},"\u002Flogo-ac.svg","\u002F",{"email":25,"phone":25,"address":25,"cta":25},[182,185,188],{"platform":183,"href":184,"label":183},"linkedin","https:\u002F\u002Fwww.linkedin.com\u002Fin\u002Falexandre-carette\u002F",{"platform":186,"href":187,"label":186},"malt","https:\u002F\u002Fwww.malt.fr\u002Fprofile\u002Falexandrecarette",{"platform":189,"href":190,"label":189},"github","https:\u002F\u002Fgithub.com\u002Fprest4cafe",{"copyright":25},{"show":32,"title":25,"description":25,"placeholder":25,"ctaLabel":25,"consentText":193},"J'accepte de recevoir par e-mail les actualités de CodeMyShop et d'Alexandre Carette : nouveaux modules libres, astuces PrestaShop, SEO et performance. Je peux me désinscrire à tout moment grâce au lien présent dans chaque message.",{"header":195},{"logo":196,"topBar":199,"contactEmail":202,"contactPhone":25,"features":203,"navBar":25,"headerLinks":205,"storesHref":25},{"src":178,"alt":197,"text":169,"href":179,"class":198},"Alexandre Carette — Architecte E-commerce Souverain","h-10 w-10",{"message":25,"messageMobile":25,"showLanguages":32,"align":200,"languages":201},"left",[],"contact@alexandrecarette.fr",{"showSearch":32,"showWishlist":32,"showLogin":20,"showContact":32,"showCart":32,"showQuoteButton":20,"showBlogLink":32,"showContactLink":32,"showGiftcardLink":32,"showStoresLink":32,"stickyHeader":20,"staticHeader":32,"headerLayout":204},"inline",{},{"tree_loaded":20,"found":20,"kind":33,"id":207,"path":208,"path_fr":208,"pilier_slug":209,"pilier_slug_fr":209,"slug":210,"name":211,"description":212,"meta_title":213,"meta_description":214,"breadcrumb":215,"children":220},568,"prestashop\u002Fdeveloppement","prestashop","developpement","Développement","Développement de modules et thèmes PrestaShop.","Développement PrestaShop — Blog Alexandre Carette","Développer un module PrestaShop : hooks, ObjectModel, bonnes pratiques.",[216,219],{"id":217,"slug":209,"path":209,"label":218},556,"PrestaShop",{"id":207,"slug":210,"path":208,"label":211},[],{"ok":20,"alternates":222},{"fr":223},"\u002Fblog\u002Fprestashop\u002Fdeveloppement\u002Fjquery-dans-prestashop-8-9-pourquoi-il-reste-comment-maitriser",{"academy":225,"blog":226,"expertise":227},[],[],[],{"id":229,"canonicalInnerPath":230,"indexable":20,"title":231,"h1":232,"category":209,"categoryName":211,"pillarName":218,"subcategory":210,"slug":233,"coverImage":234,"thumbnailImage":234,"content":235,"visuels":236,"faq":237,"metaDescription":283,"active":20,"datePublished":284,"dateUpdated":285,"readingTime":286,"mentor":25,"alternates":287,"langsWithContent":288,"audioEnabled":32,"audioUrl":34,"author":290},111,"prestashop\u002Fdeveloppement\u002Fjquery-dans-prestashop-8-9-pourquoi-il-reste-comment-maitriser","jQuery dans PrestaShop 8 et 9 : pourquoi il reste et","jQuery dans PrestaShop 8 et 9 : ce qui change vraiment pour votre boutique","developpement--jquery-dans-prestashop-8-9-pourquoi-il-reste-comment-maitriser","\u002Fblog-covers\u002F9b04f4b6e4e0.webp","\u003Cp>Ouvrez l'inspecteur réseau de n'importe quelle boutique PrestaShop 8 ou 9, ancienne ou fraîchement installée : parmi les premières requêtes, il y a jQuery. En 2026, alors que le reste du web a tourné la page des frameworks DOM, la plateforme e-commerce open source la plus utilisée de France francophone embarque encore cette bibliothèque de 2006. Réaction fréquente des développeurs qui découvrent ça : crier à la dette. Réaction des gens qui maintiennent une boutique en production : vérifier ce qui casserait si on l'enlevait. Cet article prend le parti du second groupe. Nous allons voir pourquoi jQuery est encore là, comment PrestaShop le charge exactement, dans quels cas vous devez le garder, comment l'alléger sans rien casser, et ce que la voie headless change à l'équation.\u003C\u002Fp>\n\n\u003Ch2>Pourquoi jQuery est encore là dans PrestaShop 8 et 9\u003C\u002Fh2>\n\u003Cp>La réponse tient en un mot : l'écosystème. Des dizaines de milliers de modules existent sur le marché officiel et chez les éditeurs indépendants, et une part écrasante d'entre eux s'appuient sur jQuery pour leur interface — sélecteurs, événements, appels AJAX. Retirer la bibliothèque du socle, c'est déclarer obsolète du jour au lendemain une partie du catalogue d'extensions qui fait la valeur pratique de la plateforme. PrestaShop a fait ce calcul il y a des années et l'a refait à chaque version majeure : le coût de la compatibilité l'emporte sur le gain de la pureté technique.\u003C\u002Fp>\n\u003Cp>Ce choix se traduit par un contrat implicite : toute page du front-office comme du back-office met à disposition jQuery et ses extensions historiques. Les thèmes du marché sont bâtis dessus, les modules s'appuient dessus, les tutoriels de la documentation officielle l'utilisent dans leurs exemples de code frontal. Quand vous installez PrestaShop 9, vous n'installez pas un front moderne débarrassé de ses anciens réflexes : vous installez une plateforme qui promet à son écosystème que \u003Ccode>$\u003C\u002Fcode> existera.\u003C\u002Fp>\n\u003Cp>Il faut le dire honnêtement : ce n'est pas de la paresse. La question « pourquoi ne pas passer à du JavaScript vanilla » a été posée cent fois dans les discussions du projet, et la réponse a toujours été la même — casser des milliers de modules pour économiser trente kilo-octets n'est pas un échange raisonnable pour des boutiques qui vivent de leurs extensions. Vous pouvez juger ce compromis discutable, il a au moins le mérite d'être explicite.\u003C\u002Fp>\n\n\u003Ch2>Comment PrestaShop charge jQuery, concrètement\u003C\u002Fh2>\n\u003Cp>Dans le thème classique comme dans la plupart des thèmes du marché, le chargement est orchestré par le gabarit \u003Ccode>scripts.tpl\u003C\u002Fcode> du thème, appelé depuis les layouts de pages. Vous y trouverez les appels qui insèrent la feuille de route des scripts : jQuery d'abord, puis les extensions (jQuery UI pour les widgets d'interface, jquery-migrate pour la rétrocompatibilité), puis le code du thème. L'ordre n'est pas décoratif : chaque brique suppose que la précédente est déjà interprétée.\u003C\u002Fp>\n\u003Cp>Ce chargement est doublé d'une second mécanique moins visible : les modules qui déclarent leurs propres scripts via les hooks d'en-tête. Et c'est là que naît le vrai désordre des boutiques vieillissantes. Un module mal élevé ré-inclut sa propre copie de jQuery, parfois une version différente, parfois depuis un CDN tiers. Résultat mesuré sur des audits réels : deux, trois, parfois quatre copies de la même bibliothèque interprétées sur une même page, chacune écrasant les plugins enregistrés par la précédente. L'erreur \u003Ccode>$().datepicker is not a function\u003C\u002Fcode> qui apparaît « sans raison » après l'installation d'un module a presque toujours cette origine.\u003C\u002Fp>\n\u003Cp>Pour localiser les coupables, la démarche est mécanique :\u003C\u002Fp>\n\u003Cul>\n\u003Cli>ouvrez la page avec l'inspecteur réseau filtré sur « js » et comptez les requêtes dont le nom contient « jquery » — au-delà d'une, vous avez un doublon ;\u003C\u002Fli>\n\u003Cli>cherchez dans le code des modules installés (dossier \u003Ccode>modules\u002F\u003C\u002Fcode>) les occurrences de « jquery » dans les gabarits et les contrôleurs qui injectent des scripts ;\u003C\u002Fli>\n\u003Cli>vérifiez le gabarit \u003Ccode>scripts.tpl\u003C\u002Fcode> de votre thème : il est éditable, et c'est le premier endroit où un précéd développeur a pu laisser une copie figée ;\u003C\u002Fli>\n\u003Cli>désactivez temporairement les modules un à un en environnement de test jusqu'à voir disparaître la requête en trop — méthode lourde mais infaillible.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>Ce diagnostic est le seul geste technique rentable avant toute décision : on n'allège bien que ce qu'on a mesuré.\u003C\u002Fp>\n\n\u003Ch2>Les cas où vous devez garder jQuery — et l'assumer\u003C\u002Fh2>\n\u003Cp>Si votre boutique utilise des modules du marché pour des fonctions visibles — carrousel de page d'accueil, sélecteur de déclinaisons avancé, zoom sur fiches produit, wishlist, chat — jQuery reste. Ces modules injectent des comportements qui s'accrochent au DOM via la bibliothèque, et leur code n'existe pas en version alternative. Vous pouvez le déplorer, vous ne pouvez pas le réécrire : le code source des modules commerciaux n'est pas à vous.\u003C\u002Fp>\n\u003Cp>Garder jQuery impose alors une contrepartie que peu de maintenance prévoient : suivre ses correctifs. La bibliothèque a connu ses propres vulnérabilités — falsification de propriété \u003Ccode>Object.prototype\u003C\u002Fcode> sur les anciennes versions, ReDoS dans l'analyseur d'expressions — et une copie figée dans un thème depuis trois ans ne reçoit rien de ces correctifs. La \u003Ca href=\"https:\u002F\u002Fapi.jquery.com\u002F\">référence officielle de l'API jQuery\u003C\u002Fa> documente les comportements attendus version par version : c'est la boussole quand un module exige « jQuery 1.x » et que vous ne savez plus ce que vous avez le droit de monter.\u003C\u002Fp>\n\u003Cblockquote>La dette frontale ne se rembourse pas en la niant : elle se rembourse en l'inventoriant, en la figeant volontairement là où elle est raisonnable, et en traçant une frontière nette au-delà de laquelle le nouveau code n'y touche plus.\u003C\u002Fblockquote>\n\u003Cp>La position pragmatique, celle que nous recommandons aux gérants qui nous consultent : jQuery est un composant comme les autres. Il a une version, des correctifs, un périmètre — et une règle : le nouveau code que vous écrivez n'en dépend plus. La dette cesse de croître, c'est déjà la moitié du travail.\u003C\u002Fp>\n\n\u003Ch2>Alléger jQuery sans le retirer : les gains réalistes\u003C\u002Fh2>\n\u003Cp>Entre « tout garder tel quel » et « tout réécrire », il existe une palier intermédiaire : réduire l'empreinte et le périmètre de la bibliothèque sans rompre le contrat des modules. Les leviers sont connus, il faut surtout les appliquer dans l'ordre et mesurer à chaque étape.\u003C\u002Fp>\n\u003Cp>Le premier est la suppression de jquery-migrate. Cette extension ne sert qu'à faire tourner du code écrit pour jQuery antérieur à la version 1.9 — elle restaure les API retirées et journalise leurs usages dans la console. Si aucun de vos modules n'est antique, elle ne fait qu'ajouter du poids et masquer les avertissements qui vous préviendraient qu'un module est plus vieux que prévu. La méthode : la désactiver en environnement de test, surveiller la console sur les pages clés pendant une semaine de navigation réelle, et ne rétablir que si un module proteste.\u003C\u002Fp>\n\u003Cp>Le deuxième levier est le chargement conditionnel : toutes les pages n'ont pas besoin de la machinerie. La page de contenu institutionnel d'une vitrine n'a rien à faire avec jQuery UI et ses widgets ; le tunnel de commande, lui, en vit probablement. Conditionner l'inclusion au contrôleur concerné, dans le gabarit du thème, retire des dizaines de kilo-octets aux pages qui n'en ont aucun usage — et ce sont souvent les pages à fort trafic SEO.\u003C\u002Fp>\n\u003Cp>Le tableau suivant résume les quatre stratégies possibles et leur échange réel :\u003C\u002Fp>\n\u003Ctable>\n\u003Cthead>\u003Ctr>\u003Cth>Stratégie\u003C\u002Fth>\u003Cth>Effort\u003C\u002Fth>\u003Cth>Risque de casse modules\u003C\u002Fth>\u003Cth>Gain front réel\u003C\u002Fth>\u003C\u002Ftr>\u003C\u002Fthead>\n\u003Ctbody>\n\u003Ctr>\u003Ctd>Tel quel (statu quo)\u003C\u002Ftd>\u003Ctd>Aucun\u003C\u002Ftd>\u003Ctd>Nul\u003C\u002Ftd>\u003Ctd>Nul — dette constante\u003C\u002Ftd>\u003C\u002Ftr>\n\u003Ctr>\u003Ctd>Allègement ciblé (migrate, chargement conditionnel)\u003C\u002Ftd>\u003Ctd>Jours\u003C\u002Ftd>\u003Ctd>Faible, réversible\u003C\u002Ftd>\u003Ctd>Modéré : 30 à 80 Ko par page concernée\u003C\u002Ftd>\u003C\u002Ftr>\n\u003Ctr>\u003Ctd>Thème maison sans jQuery\u003C\u002Ftd>\u003Ctd>Semaines\u003C\u002Ftd>\u003Ctd>Élevé si modules frontaux\u003C\u002Ftd>\u003Ctd>Bon, mais la dette revient avec chaque module\u003C\u002Ftd>\u003C\u002Ftr>\n\u003Ctr>\u003Ctd>Front headless (Nuxt ou équivalent)\u003C\u002Ftd>\u003Ctd>Mois\u003C\u002Ftd>\u003Ctd>Nul côté front — les modules restent au back\u003C\u002Ftd>\u003Ctd>Total sur le front : vous décidez de tout\u003C\u002Ftd>\u003C\u002Ftr>\n\u003C\u002Ftbody>\n\u003C\u002Ftable>\n\u003Cp>Une précision d'honnêteté technique : jQuery minifié et compressé représente environ trente kilo-octets, cache chaude. Ce n'est pas le gouffre que certains articles de blog vendent. Le coût réel est ailleurs — dans les copies multiples, les extensions UI chargées pour rien, et le code applicatif qui s'accumule par-dessus. C'est pourquoi l'allègement passe d'abord par l'inventaire, jamais par la suppression aveugle.\u003C\u002Fp>\n\n\u003Ch2>La sortie par le haut : thème maison, puis front headless\u003C\u002Fh2>\n\u003Cp>Le jour où la question n'est plus « comment alléger » mais « comment ne plus en dépendre », deux chemins s'ouvrent. Le premier est le thème maison en JavaScript standard : tout est possible, le navigateur moderne couvre nativement ce pour quoi jQuery a été inventé — \u003Ccode>querySelector\u003C\u002Fcode> pour les sélecteurs, \u003Ccode>fetch\u003C\u002Fcode> pour AJAX, \u003Ccode>addEventListener\u003C\u002Fcode> pour les événements. Le thème classique de PrestaShop est un point de départ documenté, et nous détaillons cette mécanique dans notre retour d'expérience sur la \u003Ca href=\"\u002Fblog\u002Fprestashop\u002Fhub-pro-headless-nuxt-docker\">construction d'un hub Pro avec PrestaShop headless et Nuxt\u003C\u002Fa>. Mais soyez lucide : si votre boutique dépend de modules frontaux du marché, le thème sans jQuery ne les rend pas compatibles — il les casse. Cette voie n'est saine que pour des boutiques à périmètre de modules maîtrisé.\u003C\u002Fp>\n\u003Cp>Le second chemin est le headless : PrestaShop devient la couche de données — catalogue, commandes, clients, stocks — exposée par son API, et le frontal que vous bâtissez décide de ses propres dépendances. jQuery cesse d'être votre problème parce que le front n'est plus PrestaShop. C'est une refonte, pas un correctif : nous en avons décrit le coût et les arbitrages dans notre \u003Ca href=\"\u002Fblog\u002Fprestashop\u002Fheadless-vs-shopify-comparatif\">comparatif entre PrestaShop headless et Shopify\u003C\u002Fa>, et l'architecture d'exécution — conteneurs, isolation, supervision — dans notre guide sur l'\u003Ca href=\"\u002Fblog\u002Fprestashop\u002Fdocker-headless-multi-conteneurs\">architecture multi-conteneurs PrestaShop headless en production\u003C\u002Fa>.\u003C\u002Fp>\n\u003Cp>Ce chemin a un coût d'entrée réel, mais il a ceci de définitif : la question « que fait-on de jQuery » ne se reposera plus jamais, parce qu'elle est devenue une décision qui vous appartient au lieu d'un héritage que vous subissez. Les équipes qui industrialisent cette frontière — déploiement continu, tests automatisés du front — en profitent d'ailleurs au-delà du poids des scripts, comme nous le racontons dans notre retour sur la \u003Ca href=\"\u002Fblog\u002Fprestashop\u002Fcicd-github-actions-headless-nuxt\">CI\u002FCD d'un PrestaShop headless déployé par GitHub Actions\u003C\u002Fa>.\u003C\u002Fp>\n\n\u003Ch2>Migrer de PrestaShop 8 vers 9 : ce que jQuery change dans votre plan\u003C\u002Fh2>\n\u003Cp>La version 9 de PrestaShop ne bouleverse pas la donne : jQuery demeure au front-office, le thème classique demeure compatible, et l'essentiel des ruptures de la migration se joue ailleurs — PHP, schéma, back-office. Mais la migration est précisément le moment où le désordre frontal accumulé pendant des années se paie : scripts dupliqués, versions figées, dépendances non déclarées. Autant nettoyer avant de déplacer.\u003C\u002Fp>\n\u003Cp>La séquence qui a fait ses preuves sur nos migrations :\u003C\u002Fp>\n\u003Cul>\n\u003Cli>inventorier les modules qui chargent ou dépendent de jQuery, et vérifier leur compatibilité déclarée avec la version 9 avant tout le reste ;\u003C\u002Fli>\n\u003Cli>reproduire la boutique cible dans un environnement d'exécution isolé — notre \u003Ca href=\"\u002Fblog\u002Fdevops\u002Fdocker-compose-prestashop-production\">configuration Docker Compose de PrestaShop en production\u003C\u002Fa> sert aussi de base d'environnement de test ;\u003C\u002Fli>\n\u003Cli>supprimer les doublons de chargement détectés, en commençant par les copies de modules, avant de toucher au gabarit du thème ;\u003C\u002Fli>\n\u003Cli>tester la migration sans jquery-migrate pour révéler les modules réellement anciens — leurs plaintes en console valent inventaire ;\u003C\u002Fli>\n\u003Cli>valider les parcours critiques (fiche produit, panier, tunnel, compte client) sur mobile et desktop avant de basculer.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>Après la bascule, tenez une règle simple : chaque nouveau développement frontal s'écrit en JavaScript standard, jQuery ne servant qu'aux modules qui l'exigent. La dette gèle au lieu de croître, et la prochaine migration en sera d'autant plus simple.\u003C\u002Fp>\n\n\u003Ch2>Le référencement ne paie pas votre jQuery — mais il compte les millisecondes\u003C\u002Fh2>\n\u003Cp>Restons mesurés : aucun classement ne s'est effondré pour trente kilo-octets de bibliothèque locale et cachée. Les signaux de performance de Google — les Core Web Vitals, dont l'Interaction to Next Pin — regardent la réactivité mesurée chez vos visiteurs, pas votre stack en particulier. Mais une page qui interprète trois copies de jQuery avant de pouvoir répondre au premier clic, elle, dégrade réellement ce signal, surtout sur mobile d'entrée de gamme en réseau médiocre.\u003C\u002Fp>\n\u003Cp>La hiérarchie des priorités SEO est donc simple à énoncer : corrigez d'abord les contenus et la structure — c'est là que se gagne la visibilité —, puis traitez la performance quand elle est mesurée comme traînante, en commençant par les doublons de scripts qui coûtent le plus pour le moindre risque. Notre retour d'expérience sur un \u003Ca href=\"\u002Fblog\u002Fseo\u002Fpipeline-automatise-resultats\">pipeline SEO automatisé sur PrestaShop\u003C\u002Fa> montre cet ordre de grandeur à l'œuvre : les gains de contenu dominent toujours, la performance vient consolider.\u003C\u002Fp>\n\u003Cp>En résumé : jQuery dans PrestaShop 8 et 9 n'est ni un scandale ni un détail. C'est une dépendance d'écosystème, gérable par l'inventaire, l'allègement mesuré et une frontière nette pour le nouveau code — et définitivement soluble le jour où le front vous appartient.\u003C\u002Fp>",[],[238,241,244,247,250,253,256,259,262,265,268,271,274,277,280],{"q":239,"a":240},"Quelle version de jQuery utilise PrestaShop 9 ?","Le cœur embarque une version moderne de la branche 3.x, chargée par le gabarit de scripts du thème. La version exacte dépend de votre mise à jour : vérifiez le nom de fichier chargé dans l'inspecteur réseau plutôt que la documentation, qui peut prendre du retard sur les correctifs intermédiaires.",{"q":242,"a":243},"Peut-on désactiver jQuery dans PrestaShop ?","Il n'existe pas d'option officielle de désactivation : la bibliothèque fait partie du contrat du front. On peut la retirer d'un thème maison page par page, mais dès qu'un module du marché s'appuie dessus, la page casse. C'est une décision d'architecture, pas un réglage.",{"q":245,"a":246},"L'erreur « $ is not defined » sur ma boutique, d'où vient-elle ?","Presque toujours d'un script qui s'exécute avant le chargement de jQuery — ordre d'inversion dans le gabarit, chargement en defer mal ordonné, ou copie de la bibliothèque supprimée par un nettoyage trop zélé. Vérifiez l'ordre des balises de script et la présence effective de la requête jquery dans le réseau.",{"q":248,"a":249},"jquery-migrate est-il vraiment nécessaire ?","Il ne sert qu'aux modules écrits pour jQuery antérieur à 1.9. Sur une boutique récente dont les modules sont maintenus, il ne fait qu'ajouter du poids et masquer des avertissements utiles. Testez sa suppression en environnement et surveillez la console pendant une semaine.",{"q":251,"a":252},"Comment savoir quels modules chargent leur propre jQuery ?","Filtrez l'inspecteur réseau sur « jquery » et comptez les requêtes : au-delà d'une, cherchez le doublon en désactivant les modules un à un en test. Le gabarit scripts.tpl du thème est l'autre suspect classique, notamment s'il a été édité par un prestataire.",{"q":254,"a":255},"jQuery ralentit-il mon référencement ?","La bibliothèque seule, minifiée et cachée, représente environ trente kilo-octets : négligeable. Ce qui pèse, ce sont les copies multiples, les extensions UI chargées sans usage et le code applicatif empilé sans mesure — ils dégradent les métriques de réactivité que Google prend en compte.",{"q":257,"a":258},"Peut-on charger jQuery depuis un CDN public ?","Techniquement oui, et la pratique a été populaire. Elle ajoute une dépendance à un tiers, un aller-retour DNS supplémentaire et une surface de confidentialité à documenter. En 2026, l'auto-hébergement local, caché par le navigateur, est l'option par défaut recommandée.",{"q":260,"a":261},"Mon thème acheté casse sans jQuery : est-ce normal ?","Oui. La quasi-totalité des thèmes du marché PrestaShop s'appuient sur jQuery et ses extensions pour leurs comportements dynamiques. Un thème sans jQuery est soit un thème maison récent, soit une refonte frontale assumée — pas la norme de l'écosystème.",{"q":263,"a":264},"jQuery UI est-il inclus avec jQuery dans PrestaShop ?","Le cœur et le thème classique embarquent les composants de jQuery UI nécessaires aux widgets d'interface — calendriers, tri, onglets. Les modules peuvent en demander davantage. Là encore, l'inspecteur réseau vous dira ce qui est réellement chargé sur chaque page.",{"q":266,"a":267},"En headless, jQuery disparaît-il complètement ?","Du front public, oui : le frontal devient une application que vous maîtrisez — Nuxt, Next ou autre — avec ses propres dépendances. Côté back-office PrestaShop, jQuery demeure pour les écrans d'administration et les modules. La dette ne disparaît pas, elle change de périmètre et cesse d'être publique.",{"q":269,"a":270},"Comment tester ces changements sans risquer la production ?","Dupliquez la boutique dans un environnement isolé — conteneur Docker ou préproduction — et jouez les parcours critiques là-bas : fiche produit, panier, tunnel, compte client. Les régressions frontales se voient à la console et à l'interaction réelle, pas aux tests unitaires seuls.",{"q":272,"a":273},"PrestaShop va-t-il retirer jQuery un jour ?","Aucune échéance annoncée. Le projet a toujours arbitré en faveur de la compatibilité de l'écosystème des modules, et la voie headless offre déjà à ceux qui veulent s'en passer une sortie propre. Pariez sur le contrat actuel et gardez votre code neuf indépendant de la bibliothèque.",{"q":275,"a":276},"jQuery a connu des failles : ma boutique est-elle en danger ?","Les vulnérabilités publiées touchent surtout des usages précis et d'anciennes versions. Le risque réel vient des copies figées dans les thèmes et modules, qui ne reçoivent aucun correctif. Inventoriez vos versions chargées et suivez les avis de sécurité du projet.",{"q":278,"a":279},"Combien pèse réellement jQuery sur une page ?","Environ trente kilo-octets minifié et compressé pour le cœur, une fois en cache navigateur. Le poids problématique vient des doublons et de jQuery UI complet chargé pour un seul widget — c'est là que les économies se font, pas sur la bibliothèque elle-même.",{"q":281,"a":282},"Faut-il migrer vers PrestaShop 9 pour améliorer la performance frontale ?","Non : la migration se justifie par PHP, la sécurité et le back-office, pas par un gain frontal direct. Allégez d'abord sur votre version actuelle — doublons, migrate, chargements conditionnels — et migrerez sur une base propre, ce qui est toujours plus simple.","jQuery reste au front de PrestaShop 8 et 9 : comprendre son rôle réel, l'alléger sans casser vos modules, puis vous en affranchir — du diagnostic au headless.","2026-09-13T12:55:56.000Z","2026-09-13T12:51:01.000Z",11,{"fr":223},[289],"fr",{"id":54,"slug":291,"name":169,"firstname":292,"lastname":293,"title":294,"bio":295,"image":296,"linkedinUrl":297,"url":298},"alexandre-carette","Alexandre","Carette","Architecte e-commerce, SEO technique, AIO\u002FGEO","Consultant freelance e-commerce et SEO IA (AIO\u002FGEO), basé à Metz. Architecte PrestaShop Headless, SEO technique, visibilité dans les moteurs conversationnels (ChatGPT, Perplexity, Gemini). Zéro sous-traitance : un seul interlocuteur.","\u002Falexandre-carette-256.webp","https:\u002F\u002Fwww.linkedin.com\u002Fin\u002Fcarette-alexandre","\u002Fauteur\u002Falexandre-carette",[],[301,315,326,337],{"id":302,"title":303,"category":209,"subcategory":304,"slug":305,"segment":306,"categoryPath":307,"path":308,"linkRewrite":309,"excerpt":310,"coverImage":311,"thumbnailImage":311,"nuxtUrl":312,"indexable":20,"datePublished":313,"dateUpdated":313,"readingTime":314,"faqCount":46},122,"Micro-caching Nginx PrestaShop : 1 000 req\u002Fs sans saturer","performance","performance--cache-http-microcaching-nginx-prestashop","cache-http-microcaching-nginx-prestashop","prestashop\u002Fperformance","prestashop\u002Fperformance\u002Fcache-http-microcaching-nginx-prestashop","prestashop--performance--cache-http-microcaching-nginx-prestashop","Découvrez comment configurer le micro-caching Nginx pour PrestaShop, absorber 1 000 requêtes par seconde et isoler strictement paniers et comptes clients.","\u002Fblog-covers\u002Fa7dac614da63.webp","\u002Fblog\u002Fprestashop\u002Fperformance\u002Fcache-http-microcaching-nginx-prestashop","2026-10-05T06:00:02.000Z",14,{"id":316,"title":317,"category":209,"subcategory":304,"slug":318,"segment":319,"categoryPath":307,"path":320,"linkRewrite":321,"excerpt":322,"coverImage":323,"thumbnailImage":323,"nuxtUrl":324,"indexable":20,"datePublished":325,"dateUpdated":325,"readingTime":286,"faqCount":46},121,"Optimisation SQL PrestaShop : diviser le TTFB MariaDB par 3","performance--optimisation-sql-index-mariadb-prestashop-ttfb","optimisation-sql-index-mariadb-prestashop-ttfb","prestashop\u002Fperformance\u002Foptimisation-sql-index-mariadb-prestashop-ttfb","prestashop--performance--optimisation-sql-index-mariadb-prestashop-ttfb","Accélérez PrestaShop : découvrez les index MariaDB critiques, la purge des tables volumineuses et le réglage InnoDB pour diviser votre TTFB par trois.","\u002Fblog-covers\u002Fcb78a78910ec.webp","\u002Fblog\u002Fprestashop\u002Fperformance\u002Foptimisation-sql-index-mariadb-prestashop-ttfb","2026-10-02T06:00:03.000Z",{"id":327,"title":328,"category":209,"subcategory":304,"slug":329,"segment":330,"categoryPath":307,"path":331,"linkRewrite":332,"excerpt":333,"coverImage":334,"thumbnailImage":334,"nuxtUrl":335,"indexable":20,"datePublished":336,"dateUpdated":336,"readingTime":286,"faqCount":46},120,"PrestaShop page blanche : corriger l'erreur 500","performance--page-blanche-prestashop-diagnostiquer-corriger-erreur-500","page-blanche-prestashop-diagnostiquer-corriger-erreur-500","prestashop\u002Fperformance\u002Fpage-blanche-prestashop-diagnostiquer-corriger-erreur-500","prestashop--performance--page-blanche-prestashop-diagnostiquer-corriger-erreur-500","Page blanche ou erreur 500 sur PrestaShop ? Mode debug, logs d'erreurs, arrêt d'un module en base et purge du cache : suivez ce protocole d'urgence pas à pas.","\u002Fblog-covers\u002Fb81d9e1317f3.webp","\u002Fblog\u002Fprestashop\u002Fperformance\u002Fpage-blanche-prestashop-diagnostiquer-corriger-erreur-500","2026-10-01T06:00:03.000Z",{"id":338,"title":339,"category":209,"subcategory":304,"slug":340,"segment":341,"categoryPath":307,"path":342,"linkRewrite":343,"excerpt":344,"coverImage":345,"thumbnailImage":345,"nuxtUrl":346,"indexable":20,"datePublished":347,"dateUpdated":347,"readingTime":348,"faqCount":46},119,"Lenteur PrestaShop : audit et optimisation technique","performance--lenteur-prestashop-methode-audit-optimisation","lenteur-prestashop-methode-audit-optimisation","prestashop\u002Fperformance\u002Flenteur-prestashop-methode-audit-optimisation","prestashop--performance--lenteur-prestashop-methode-audit-optimisation","Résolvez la lenteur de PrestaShop avec une méthode d'ingénieur : diagnostic du TTFB, profiling SQL MariaDB, assainissement des hooks et gains mesurés.","\u002Fblog-covers\u002Fe806df171bd6.webp","\u002Fblog\u002Fprestashop\u002Fperformance\u002Flenteur-prestashop-methode-audit-optimisation","2026-09-30T06:00:03.000Z",12]