[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"$fz2AGhV5Gi5ew8_OPPvtxMn8zHij_OqJkU-jJ3gBjFUM":3,"$fuZxBonRFEuE-D4sKxy-sM-lctgj5hZrYx8aXnT-NPNk":24,"$fcTFjTaPPT1sVcnh1wWEGoTWMSaOD4bwmwntkMae6w5s":111},{"_id":4,"slug":5,"__v":6,"author":7,"body":8,"canonical":9,"category":10,"createdAt":11,"date":12,"description":13,"htmlContent":14,"image":15,"imageAlt":15,"readingTime":16,"tags":17,"title":22,"updatedAt":23},"6a363ab5aa6b273b0c949ac4","spa-non-indexee-google-page-blanche-diagnostic",0,"Equipe Seogard","Votre SPA n'apparaît pas dans l'index. Avant de tout migrer en SSR, confirmez le diagnostic. Dans 90 % des cas, Googlebot reçoit un `\u003Cdiv id=\"root\">\u003C/div>` vide : votre contenu existe dans le DOM rendu côté client, pas dans le HTML brut servi à la requête initiale. Voici comment le vérifier sans deviner, puis détecter automatiquement quelles pages tombent en page blanche.\n\n## Le mécanisme exact de la page blanche\n\nGooglebot crawle en deux temps. Googlebot explore vos URLs et lit le HTML brut, puis un moteur de rendu basé sur Chrome exécute le JavaScript pour reconstruire le DOM complet, et le contenu rendu est analysé puis éventuellement ajouté à l'index. Le problème : sur un site classique côté serveur, presque tout le contenu est disponible dès le HTML initial ; sur un site React, Vue ou Angular, c'est souvent l'inverse.\n\nDeux conséquences mal comprises. D'abord, le rendu JS n'est pas garanti ni immédiat : pour du contenu sensible au temps, ne misez pas sur la file de rendu de Google. Ensuite, et c'est le point que la plupart des guides ignorent, Google peut utiliser des signaux provenant des deux versions, notamment en cas de contradiction entre la version HTML brut et le rendu HTML final. Un `\u003Ctitle>` générique dans le HTML brut et un `\u003Ctitle>` spécifique injecté en JS peut produire un mismatch que Google arbitre — rarement en votre faveur.\n\nL'enjeu dépasse Google. GPTBot, ClaudeBot, PerplexityBot et les autres crawlers IA n'exécutent pas le JavaScript : ils parsent uniquement le HTML brut. Une SPA en page blanche pour Googlebot est totalement invisible pour les moteurs IA.\n\n## Étape 1 — Vérifier le HTML brut servi à la requête\n\nLe test le plus rapide : `curl` sans exécution JS.\n\n```bash\ncurl -sL https://votresite.com/une-page-cle | grep -i \"\u003Ctitle>\\|\u003Ch1\\|votre contenu attendu\"\n```\n\nSi vous obtenez un `\u003Ctitle>` générique d'app shell et aucun `\u003Ch1>` ni texte de contenu, vous avez votre réponse : le HTML brut est vide. C'est exactement ce que voient les crawlers IA et ce que Googlebot reçoit avant le rendu.\n\nConfirmez visuellement en désactivant JavaScript dans Chrome DevTools (`Cmd/Ctrl+Shift+P` → \"Disable JavaScript\") puis rechargez. Page blanche = CSR pur sans fallback.\n\n## Étape 2 — Comparer HTML brut et HTML rendu\n\nC'est l'étape que les guides « comment indexer ma SPA » sautent. Utilisez la vue « code source rendu » dans les crawlers SEO et comparez le HTML brut (sans JS) au HTML rendu pour détecter les éléments SEO manquants.\n\nConcrètement, listez ligne par ligne :\n\n- `\u003Ctitle>` brut vs rendu\n- `\u003Ch1>` brut vs rendu\n- balises canonical, meta description, hreflang\n- liens internes (`\u003Ca href>`) présents dans le brut\n\nUn crawler comme Screaming Frog en mode rendu JS expose les deux versions côte à côte. Screaming Frog, OnCrawl et Sitebulb sont capables de rendre le JavaScript pour détecter les liens internes, les balises meta et les erreurs techniques. Tout élément présent uniquement dans le rendu est un risque d'indexation.\n\n## Étape 3 — Confronter à ce que Google capture réellement\n\nL'outil d'inspection d'URL de la Search Console est la source de vérité. Cliquez sur « Afficher la page testée » pour afficher une capture d'écran de la page affichée, le code HTML brut renvoyé, les en-têtes HTTP, le résultat de la console JavaScript et les ressources chargées.\n\nDeux signaux à lire absolument :\n\n1. **La capture rendue.** Page blanche ici = Googlebot n'a pas réussi à rendre votre contenu.\n2. **La console JavaScript.** Une erreur de script qui crash l'arbre de composants produit une indexation vide. Un script analytics tiers qui lève une erreur, ou une réponse API manquante qui crash l'arbre de composants, et Google indexe une page blanche. Ce cas est insidieux car il est intermittent : la page rend correctement la plupart du temps, puis échoue silencieusement sur le renderer de Google.\n\nVérifiez aussi vos ressources critiques. Les instructions du fichier robots.txt sont suivies par Googlebot pour tous les fichiers explorés ; si vous bloquez l'exploration de fichiers CSS ou JavaScript, ils ne figureront pas dans le rendu. Un bundle JS bloqué en `robots.txt` = page blanche garantie.\n\n## Étape 4 — Vérifier la découvrabilité des routes\n\nUne SPA peut rendre correctement une URL et rester invisible faute de liens crawlables. Les SPA à routage client n'exposent pas leur structure d'URL via des liens HTML comme les sites multipages ; sans sitemap, Google découvre les pages uniquement via des liens crawlables, et si votre maillage interne est piloté en JavaScript, il peut ne rien trouver.\n\nTest rapide : dans le HTML brut (`curl`), comptez les `\u003Ca href>` réels. Si votre navigation est faite de `\u003Cdiv onClick>` ou de `\u003CLink>` qui ne génèrent pas d'ancre dans le HTML initial, vos routes profondes sont orphelines. Croisez avec un sitemap.xml exhaustif soumis en Search Console.\n\n## Étape 5 — Automatiser la détection du mismatch\n\nLe diagnostic manuel ne tient pas à l'échelle. Inspecter dix URLs à la main fonctionne une fois ; le faire à chaque deploy sur 500 routes, non. C'est précisément ce que Seogard surveille en continu : il crawle vos URLs en deux passes — HTML brut puis rendu JS — et déclenche la règle `ssr_content_mismatch` quand le contenu rendu diverge du HTML servi. Les règles `ssr_title_mismatch` et `rec_canonical_missing_in_ssr` ciblent les cas où le `\u003Ctitle>` ou la canonical n'existent que dans le DOM rendu — exactement le scénario où Google arbitre entre deux versions contradictoires.\n\nLe bénéfice : vous détectez la régression **avant** Google. Un commit qui passe une page de SSR à CSR pur, une dépendance qui crash le rendu, une route qui repart en page blanche — le contrôle échoue avant la mise en production. Vous pouvez même [bloquer un déploiement régressif dans votre pipeline CI/CD](/blog/gate-seo-github-actions-echouer-deploiement-regressif) plutôt que de le constater dans la Search Console des semaines plus tard.\n\n## Que faire une fois le diagnostic confirmé\n\nSi le HTML brut est vide, la solution est structurelle, pas cosmétique : SSR, SSG ou prerendering pour servir du contenu dès la réponse initiale. Le framework importe peu — ce qui compte, c'est que la réponse HTML initiale contienne votre contenu.\n\nAttention aux faux positifs côté CMS, fréquents en stack headless. Un champ SEO mal synchronisé peut servir un titre par défaut côté serveur pendant que le bon titre n'apparaît qu'en JS : c'est typiquement le cas d'un [title injecté côté CSR où Google ne voit que la valeur par défaut](/blog/multi-currency-dropdown-change-le-title-cote-csr-google-voit-le-default-usd). Le diagnostic est identique : comparez brut vs rendu, corrigez à la source, puis surveillez en continu depuis [la plateforme de monitoring Seogard](/).\n\nLa règle d'or : ne supposez jamais ce que Google voit. Mesurez-le, sur chaque deploy.\n\n## Sources\n\n- [Outil d'inspection d'URL — Google Search Console](https://support.google.com/webmasters/answer/9012289?hl=fr)\n- [Questions fréquentes sur l'exploration et l'indexation — Google Search Central](https://developers.google.com/search/help/crawling-index-faq?hl=fr)\n```","https://seogard.io/blog/spa-non-indexee-google-page-blanche-diagnostic","SSR / CSR","2026-06-20T07:01:09.673Z","2026-06-20","Diagnostic actionnable pour confirmer que Googlebot voit une page blanche sur votre SPA, comparer HTML brut vs rendu JS et corriger avant l'indexation.","\u003Cp>Votre SPA n'apparaît pas dans l'index. Avant de tout migrer en SSR, confirmez le diagnostic. Dans 90 % des cas, Googlebot reçoit un \u003Ccode>&#x3C;div id=\"root\">&#x3C;/div>\u003C/code> vide : votre contenu existe dans le DOM rendu côté client, pas dans le HTML brut servi à la requête initiale. Voici comment le vérifier sans deviner, puis détecter automatiquement quelles pages tombent en page blanche.\u003C/p>\n\u003Ch2>Le mécanisme exact de la page blanche\u003C/h2>\n\u003Cp>Googlebot crawle en deux temps. Googlebot explore vos URLs et lit le HTML brut, puis un moteur de rendu basé sur Chrome exécute le JavaScript pour reconstruire le DOM complet, et le contenu rendu est analysé puis éventuellement ajouté à l'index. Le problème : sur un site classique côté serveur, presque tout le contenu est disponible dès le HTML initial ; sur un site React, Vue ou Angular, c'est souvent l'inverse.\u003C/p>\n\u003Cp>Deux conséquences mal comprises. D'abord, le rendu JS n'est pas garanti ni immédiat : pour du contenu sensible au temps, ne misez pas sur la file de rendu de Google. Ensuite, et c'est le point que la plupart des guides ignorent, Google peut utiliser des signaux provenant des deux versions, notamment en cas de contradiction entre la version HTML brut et le rendu HTML final. Un \u003Ccode>&#x3C;title>\u003C/code> générique dans le HTML brut et un \u003Ccode>&#x3C;title>\u003C/code> spécifique injecté en JS peut produire un mismatch que Google arbitre — rarement en votre faveur.\u003C/p>\n\u003Cp>L'enjeu dépasse Google. GPTBot, ClaudeBot, PerplexityBot et les autres crawlers IA n'exécutent pas le JavaScript : ils parsent uniquement le HTML brut. Une SPA en page blanche pour Googlebot est totalement invisible pour les moteurs IA.\u003C/p>\n\u003Ch2>Étape 1 — Vérifier le HTML brut servi à la requête\u003C/h2>\n\u003Cp>Le test le plus rapide : \u003Ccode>curl\u003C/code> sans exécution JS.\u003C/p>\n\u003Cpre class=\"shiki github-dark\" style=\"background-color:#24292e;color:#e1e4e8\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#B392F0\">curl\u003C/span>\u003Cspan style=\"color:#79B8FF\"> -sL\u003C/span>\u003Cspan style=\"color:#9ECBFF\"> https://votresite.com/une-page-cle\u003C/span>\u003Cspan style=\"color:#F97583\"> |\u003C/span>\u003Cspan style=\"color:#B392F0\"> grep\u003C/span>\u003Cspan style=\"color:#79B8FF\"> -i\u003C/span>\u003Cspan style=\"color:#9ECBFF\"> \"&#x3C;title>\\|&#x3C;h1\\|votre contenu attendu\"\u003C/span>\u003C/span>\u003C/code>\u003C/pre>\n\u003Cp>Si vous obtenez un \u003Ccode>&#x3C;title>\u003C/code> générique d'app shell et aucun \u003Ccode>&#x3C;h1>\u003C/code> ni texte de contenu, vous avez votre réponse : le HTML brut est vide. C'est exactement ce que voient les crawlers IA et ce que Googlebot reçoit avant le rendu.\u003C/p>\n\u003Cp>Confirmez visuellement en désactivant JavaScript dans Chrome DevTools (\u003Ccode>Cmd/Ctrl+Shift+P\u003C/code> → \"Disable JavaScript\") puis rechargez. Page blanche = CSR pur sans fallback.\u003C/p>\n\u003Ch2>Étape 2 — Comparer HTML brut et HTML rendu\u003C/h2>\n\u003Cp>C'est l'étape que les guides « comment indexer ma SPA » sautent. Utilisez la vue « code source rendu » dans les crawlers SEO et comparez le HTML brut (sans JS) au HTML rendu pour détecter les éléments SEO manquants.\u003C/p>\n\u003Cp>Concrètement, listez ligne par ligne :\u003C/p>\n\u003Cul>\n\u003Cli>\u003Ccode>&#x3C;title>\u003C/code> brut vs rendu\u003C/li>\n\u003Cli>\u003Ccode>&#x3C;h1>\u003C/code> brut vs rendu\u003C/li>\n\u003Cli>balises canonical, meta description, hreflang\u003C/li>\n\u003Cli>liens internes (\u003Ccode>&#x3C;a href>\u003C/code>) présents dans le brut\u003C/li>\n\u003C/ul>\n\u003Cp>Un crawler comme Screaming Frog en mode rendu JS expose les deux versions côte à côte. Screaming Frog, OnCrawl et Sitebulb sont capables de rendre le JavaScript pour détecter les liens internes, les balises meta et les erreurs techniques. Tout élément présent uniquement dans le rendu est un risque d'indexation.\u003C/p>\n\u003Ch2>Étape 3 — Confronter à ce que Google capture réellement\u003C/h2>\n\u003Cp>L'outil d'inspection d'URL de la Search Console est la source de vérité. Cliquez sur « Afficher la page testée » pour afficher une capture d'écran de la page affichée, le code HTML brut renvoyé, les en-têtes HTTP, le résultat de la console JavaScript et les ressources chargées.\u003C/p>\n\u003Cp>Deux signaux à lire absolument :\u003C/p>\n\u003Col>\n\u003Cli>\u003Cstrong>La capture rendue.\u003C/strong> Page blanche ici = Googlebot n'a pas réussi à rendre votre contenu.\u003C/li>\n\u003Cli>\u003Cstrong>La console JavaScript.\u003C/strong> Une erreur de script qui crash l'arbre de composants produit une indexation vide. Un script analytics tiers qui lève une erreur, ou une réponse API manquante qui crash l'arbre de composants, et Google indexe une page blanche. Ce cas est insidieux car il est intermittent : la page rend correctement la plupart du temps, puis échoue silencieusement sur le renderer de Google.\u003C/li>\n\u003C/ol>\n\u003Cp>Vérifiez aussi vos ressources critiques. Les instructions du fichier robots.txt sont suivies par Googlebot pour tous les fichiers explorés ; si vous bloquez l'exploration de fichiers CSS ou JavaScript, ils ne figureront pas dans le rendu. Un bundle JS bloqué en \u003Ccode>robots.txt\u003C/code> = page blanche garantie.\u003C/p>\n\u003Ch2>Étape 4 — Vérifier la découvrabilité des routes\u003C/h2>\n\u003Cp>Une SPA peut rendre correctement une URL et rester invisible faute de liens crawlables. Les SPA à routage client n'exposent pas leur structure d'URL via des liens HTML comme les sites multipages ; sans sitemap, Google découvre les pages uniquement via des liens crawlables, et si votre maillage interne est piloté en JavaScript, il peut ne rien trouver.\u003C/p>\n\u003Cp>Test rapide : dans le HTML brut (\u003Ccode>curl\u003C/code>), comptez les \u003Ccode>&#x3C;a href>\u003C/code> réels. Si votre navigation est faite de \u003Ccode>&#x3C;div onClick>\u003C/code> ou de \u003Ccode>&#x3C;Link>\u003C/code> qui ne génèrent pas d'ancre dans le HTML initial, vos routes profondes sont orphelines. Croisez avec un sitemap.xml exhaustif soumis en Search Console.\u003C/p>\n\u003Ch2>Étape 5 — Automatiser la détection du mismatch\u003C/h2>\n\u003Cp>Le diagnostic manuel ne tient pas à l'échelle. Inspecter dix URLs à la main fonctionne une fois ; le faire à chaque deploy sur 500 routes, non. C'est précisément ce que Seogard surveille en continu : il crawle vos URLs en deux passes — HTML brut puis rendu JS — et déclenche la règle \u003Ccode>ssr_content_mismatch\u003C/code> quand le contenu rendu diverge du HTML servi. Les règles \u003Ccode>ssr_title_mismatch\u003C/code> et \u003Ccode>rec_canonical_missing_in_ssr\u003C/code> ciblent les cas où le \u003Ccode>&#x3C;title>\u003C/code> ou la canonical n'existent que dans le DOM rendu — exactement le scénario où Google arbitre entre deux versions contradictoires.\u003C/p>\n\u003Cp>Le bénéfice : vous détectez la régression \u003Cstrong>avant\u003C/strong> Google. Un commit qui passe une page de SSR à CSR pur, une dépendance qui crash le rendu, une route qui repart en page blanche — le contrôle échoue avant la mise en production. Vous pouvez même \u003Ca href=\"/blog/gate-seo-github-actions-echouer-deploiement-regressif\">bloquer un déploiement régressif dans votre pipeline CI/CD\u003C/a> plutôt que de le constater dans la Search Console des semaines plus tard.\u003C/p>\n\u003Ch2>Que faire une fois le diagnostic confirmé\u003C/h2>\n\u003Cp>Si le HTML brut est vide, la solution est structurelle, pas cosmétique : SSR, SSG ou prerendering pour servir du contenu dès la réponse initiale. Le framework importe peu — ce qui compte, c'est que la réponse HTML initiale contienne votre contenu.\u003C/p>\n\u003Cp>Attention aux faux positifs côté CMS, fréquents en stack headless. Un champ SEO mal synchronisé peut servir un titre par défaut côté serveur pendant que le bon titre n'apparaît qu'en JS : c'est typiquement le cas d'un \u003Ca href=\"/blog/multi-currency-dropdown-change-le-title-cote-csr-google-voit-le-default-usd\">title injecté côté CSR où Google ne voit que la valeur par défaut\u003C/a>. Le diagnostic est identique : comparez brut vs rendu, corrigez à la source, puis surveillez en continu depuis \u003Ca href=\"/\">la plateforme de monitoring Seogard\u003C/a>.\u003C/p>\n\u003Cp>La règle d'or : ne supposez jamais ce que Google voit. Mesurez-le, sur chaque deploy.\u003C/p>\n\u003Ch2>Sources\u003C/h2>\n\u003Cul>\n\u003Cli>\u003Ca href=\"https://support.google.com/webmasters/answer/9012289?hl=fr\">Outil d'inspection d'URL — Google Search Console\u003C/a>\u003C/li>\n\u003Cli>\u003Ca href=\"https://developers.google.com/search/help/crawling-index-faq?hl=fr\">Questions fréquentes sur l'exploration et l'indexation — Google Search Central\u003C/a>\u003C/li>\n\u003C/ul>\n\u003Cpre>\u003Ccode>\u003C/code>\u003C/pre>",null,8,[18,19,20,21],"spa","indexation","csr","googlebot","SPA non indexée : détecter la page blanche vue par Google","Sat Jun 20 2026 07:01:09 GMT+0000 (Coordinated Universal Time)",[25,39,56,70,83,97],{"_id":26,"slug":27,"__v":6,"author":7,"canonical":28,"category":10,"createdAt":29,"date":30,"description":31,"image":15,"imageAlt":15,"readingTime":32,"tags":33,"title":37,"updatedAt":38,"categoryLegacy":36},"6a3567e0aa6b273b0ce66e5a","multi-currency-dropdown-change-le-title-cote-csr-google-voit-le-default-usd","https://seogard.io/blog/multi-currency-dropdown-change-le-title-cote-csr-google-voit-le-default-usd","2026-06-19T16:01:36.079Z","2026-06-19","Un sélecteur de devise JS réécrit le title au runtime. Google indexe la version USD sur tous les marchés. Récit, diagnostic et correctif.",11,[34,20,35,18,36],"multi currency","title","i18n","Multi-currency dropdown réécrit le title côté CSR : fix","Fri Jun 19 2026 16:01:36 GMT+0000 (Coordinated Universal Time)",{"_id":40,"slug":41,"__v":6,"author":7,"canonical":42,"category":10,"createdAt":43,"date":44,"description":45,"image":15,"imageAlt":15,"readingTime":46,"tags":47,"title":53,"updatedAt":54,"categoryLegacy":55},"6a317369aa6b273b0cb03aa2","strapi-public-role-bloque-l-api-lecture-ssr-void-googlebot-voit-page-blanche","https://seogard.io/blog/strapi-public-role-bloque-l-api-lecture-ssr-void-googlebot-voit-page-blanche","2026-06-16T16:01:45.497Z","2026-06-16","Un seed Strapi écrase le rôle Public. L'API renvoie 403, le SSR sert du vide. Récit complet : diagnostic, fix, récupération SEO en 19 jours.",12,[48,49,50,51,52],"strapi","permissions","ssr","api","headless-cms","Strapi public role 403 : SSR vide, Googlebot indexe du blanc","Tue Jun 16 2026 16:01:45 GMT+0000 (Coordinated Universal Time)","Headless",{"_id":57,"slug":58,"__v":6,"author":7,"canonical":59,"category":10,"createdAt":60,"date":61,"description":62,"image":15,"imageAlt":15,"readingTime":46,"tags":63,"title":67,"updatedAt":68,"categoryLegacy":69},"6a2cf253aa6b273b0c0c9a5f","tanstack-router-ssr-title-pris-du-layout-au-lieu-de-la-leaf-route","https://seogard.io/blog/tanstack-router-ssr-title-pris-du-layout-au-lieu-de-la-leaf-route","2026-06-13T06:01:55.020Z","2026-06-13","Un e-commerce perd 40 % de clics organiques : TanStack Router applique le title du layout parent au lieu de la leaf route. Récit, diagnostic, fix.",[64,65,50,35,66],"tanstack router","react","meta tags","TanStack Router SSR : le title vient du layout, pas de la page","Sat Jun 13 2026 06:01:55 GMT+0000 (Coordinated Universal Time)","Framework",{"_id":71,"slug":72,"__v":6,"author":7,"canonical":73,"category":10,"createdAt":74,"date":75,"description":76,"image":15,"imageAlt":15,"readingTime":46,"tags":77,"title":81,"updatedAt":82,"categoryLegacy":69},"6a2adbecaa6b273b0c53007c","remix-meta-async-non-awaited-metas-vides-en-streaming","https://seogard.io/blog/remix-meta-async-non-awaited-metas-vides-en-streaming","2026-06-11T16:01:48.933Z","2026-06-11","Un site Remix perd 30% de trafic organique. La cause : meta() async non awaited, les balises arrivent après la fermeture du head en streaming.",[78,79,80,50],"remix","meta","streaming","Remix meta() async : metas vides en streaming SSR","Thu Jun 11 2026 16:01:48 GMT+0000 (Coordinated Universal Time)",{"_id":84,"slug":85,"__v":6,"author":7,"canonical":86,"category":10,"createdAt":87,"date":88,"description":89,"image":15,"imageAlt":15,"readingTime":46,"tags":90,"title":94,"updatedAt":95,"categoryLegacy":96},"6a23b7d0aa6b273b0c6c840f","splash-screen-noscript-mal-place-qui-contient-le-vrai-contenu-pour-googlebot-sansjs","https://seogard.io/blog/splash-screen-noscript-mal-place-qui-contient-le-vrai-contenu-pour-googlebot-sansjs","2026-06-06T06:01:52.615Z","2026-06-06","Un e-commerce SPA cache son contenu dans une balise noscript pour les bots. Google détecte du cloaking. Récit, diagnostic et fix complet.",[91,92,18,93],"noscript","cloaking","splash","noscript cloaking : splash screen SPA piège Google","Sat Jun 06 2026 06:01:52 GMT+0000 (Coordinated Universal Time)","Rendering",{"_id":98,"slug":99,"__v":6,"author":7,"canonical":100,"category":10,"createdAt":101,"date":102,"description":103,"image":15,"imageAlt":15,"readingTime":46,"tags":104,"title":108,"updatedAt":109,"categoryLegacy":110},"6a141e10aa6b273b0c8a4eb7","react-17-vers-react-18-suspense-ssr-fait-crasher-next-head-en-streaming","https://seogard.io/blog/react-17-vers-react-18-suspense-ssr-fait-crasher-next-head-en-streaming","2026-05-25T10:01:52.337Z","2026-05-25","Migration React 17→18 : le streaming SSR réordonne les chunks et supprime les meta tags. Récit d'incident, diagnostic complet et patch Next.js.",[105,106,50,107,80],"react 18","suspense","next/head","React 18 Suspense SSR : next/head cassé par le streaming","Mon May 25 2026 10:01:52 GMT+0000 (Coordinated Universal Time)","Migration",{"categories":112},[113,117,121,125,128,132,136],{"category":114,"slug":115,"count":116},"Régressions SEO","regressions-seo",137,{"category":118,"slug":119,"count":120},"GEO / IA","geo-ia",98,{"category":122,"slug":123,"count":124},"Indexation & crawl","indexation-crawl",32,{"category":10,"slug":126,"count":127},"ssr-csr",23,{"category":129,"slug":130,"count":131},"Données structurées","donnees-structurees",6,{"category":133,"slug":134,"count":135},"CI/CD SEO","ci-cd-seo",4,{"category":137,"slug":138,"count":139},"Monitoring continu","monitoring-continu",3]