Migrer une SPA React vers SSR sans casser le SEO
Une SPA React rendue uniquement côté client pose un problème simple : tant que le JavaScript ne s exécute pas, le HTML est quasiment vide. Googlebot finit par exécuter le JS dans une seconde vague de crawl, mais le délai est variable, et la plupart des crawlers IA, eux, ne l exécutent pas du tout. Anthropic documente explicitement que ClaudeBot ne rend pas JavaScript. L étude Vercel et MERJ sur 500 millions de fetches GPTBot confirme que les bots IA crawlent en volume mais ne rendent pas le DOM côté client. Pour un site qui veut être cité par les LLM en 2026, migrer vers SSR ou SSG n est plus un choix esthétique, c est une condition d existence. Ce guide détaille la migration côté code, redirections, JSON-LD et monitoring, sans casser le SEO existant.
Pourquoi une SPA React est invisible pour la moitié des crawlers IA
Une SPA React standard sert un HTML quasi vide, contenant un div root et un bundle JavaScript. Le contenu n existe qu après exécution du JS dans le navigateur. Googlebot exécute du JS, mais avec un délai et des limites de budget. La plupart des crawlers IA, eux, ne l exécutent pas.
La documentation publique d Anthropic précise que ClaudeBot ne rend pas le JavaScript. OpenAI documente que GPTBot crawle le HTML servi initialement. L étude Vercel et MERJ sur 500 millions de fetches GPTBot montre un volume de crawl IA très significatif, mais sur du HTML brut. Conclusion : si votre SPA n a pas de SSR, vous êtes invisible pour Claude, et largement sous-représenté chez ChatGPT.
Le pattern typique observé sur les SPA migrées : trafic organique stable pendant les premières semaines, puis montée progressive des mentions de marque dans les réponses LLM à partir du moment où les crawlers IA repassent sur les URLs nouvellement rendues côté serveur. Le délai n est pas immédiat, il est conditionné au cycle de re-crawl de chaque bot.
Auditer le rendu actuel avant toute migration
Avant de toucher au code, mesurez ce que voient réellement les crawlers. La règle : si curl ne renvoie pas votre contenu principal, aucun crawler IA ne le verra non plus.
Lancez trois commandes diagnostiques. Premièrement, curl -A "GPTBot" https://votresite.com/page-cible pour voir exactement ce que GPTBot reçoit. Deuxièmement, view-source: dans Chrome pour comparer avec le DOM rendu après JS. Troisièmement, l outil d inspection mobile-friendly de Google ou Rich Results Test, qui montre le HTML après rendu Googlebot.
Comptez ensuite le ratio de contenu textuel présent dans le HTML initial versus dans le DOM final. Si le ratio est inférieur à 20%, vous êtes en SPA pure non indexable par les LLM. Entre 20 et 60%, vous avez probablement du SSR partiel mal configuré. Au-dessus de 80%, votre infrastructure est déjà majoritairement SSR et la migration se résume à du polish.
Choisir entre Next.js, Remix, Astro et framework custom
Le choix du framework cible dépend du poids du code React existant et de la part de logique côté client à préserver. Trois options dominent en 2026 : Next.js App Router pour les apps React complexes, Remix pour les apps orientées formulaires et data mutations, Astro pour les sites majoritairement statiques avec îlots React.
Next.js App Router (versions 15+) offre le meilleur ratio bénéfice/effort pour migrer une SPA React existante : vous gardez les composants, vous ajoutez la directive "use client" sur ceux qui ont besoin d état, et le reste devient Server Components rendus côté serveur. La doc officielle Next.js détaille la stratégie de migration progressive depuis Create React App ou Vite.
Remix (désormais React Router v7) est plus radical dans son modèle data loader/action et impose souvent une refonte des appels API. Astro est idéal si votre SPA est en réalité un site de contenu déguisé : portfolio, blog, doc, marketing. Pour une vraie app SaaS avec dashboard, Astro est sous-dimensionné.
Pour la plupart des migrations SPA React, Next.js App Router est recommandé par sa documentation officielle grâce au modèle Server Components / Client Components qui permet une migration progressive.. La raison est pragmatique : la transition Server Component / Client Component permet de migrer route par route sans tout réécrire d un coup.
Migrer route par route en priorisant le trafic organique
Une migration big-bang d une SPA en production est le plus mauvais choix possible. La méthode sûre : migrer route par route, en commençant par les pages qui portent le trafic organique et la citabilité IA.
Point 1 : exporter la liste des URLs ordonnée par trafic organique des 90 derniers jours via Search Console. Point 2 : identifier les top 20 pages, qui concentrent typiquement 60 à 80% du trafic. Point 3 : migrer ces 20 pages en premier vers le nouveau stack SSR. Point 4 : garder l ancienne SPA pour le reste en mode legacy le temps de la transition. Point 5 : utiliser un proxy applicatif ou un edge middleware pour router selon le path vers l ancien ou le nouveau stack.
Cette approche limite le risque : si une route SSR migrée casse, elle est isolée et rollback rapide. Une migration progressive ciblant d'abord les 20 URLs prioritaires se valide généralement en 2 à 3 semaines selon les bonnes pratiques de gestion de projet, avant d'élargir le périmètre. avant d ouvrir le périmètre. Pour cadrer cette priorisation sur votre cas, le sprint d accompagnement GEO démarre par cet audit de routes : voir [accompagnement GEO](/accompagnement#form-sprint_geo).
Gérer les redirections 301 sans perdre de jus SEO
Le risque numéro un d une migration SPA vers SSR n est pas le rendu, c est le changement de structure d URL. Si vos anciennes routes étaient en hash (/#/produits/123) ou en query params, et que vos nouvelles sont en path classique (/produits/123), vous perdez 100% des backlinks pointant vers les anciennes URLs si vous ne redirigez pas.
Trois règles non négociables. Première règle : toute ancienne URL doit renvoyer un statut 301 vers sa nouvelle URL équivalente, jamais un 302 ni un soft 404. Deuxième règle : les URLs à hash routing (/#/path) ne peuvent pas être redirigées côté serveur car le fragment n est jamais envoyé au serveur. Il faut une route SSR qui sert un HTML minimal contenant un script de redirection JavaScript, ou idéalement une stratégie d URLs canoniques côté frontend depuis longtemps. Troisième règle : conservez les sitemap.xml anciens et nouveaux pendant au moins 90 jours pour signaler à Google la cartographie de redirection.
L étude Ahrefs publiée en mars 2026 sur 1885 pages testées montre que les pages avec JSON-LD structuré et redirections propres sont 2,3 fois plus citées par les LLM que les pages équivalentes sans données structurées. La structure d URL stable est un signal de confiance pour les crawlers IA comme pour Google.
Injecter le JSON-LD et le format answer-first côté serveur
Le SSR ne sert à rien si vous n en profitez pas pour optimiser la structure pour les LLM. Une migration SPA vers SSR est l occasion unique de réécrire le HTML servi en format answer-first et d injecter du JSON-LD propre côté serveur.
Sur chaque page critique, le pattern à appliquer : un <h1> qui pose la question, un paragraphe de 50 à 130 mots juste en dessous qui répond directement, puis le développement en sous-sections h2 chacune ouvrant par une réponse autonome. Ce format pyramide inversée est cité littéralement dans le papier GEO de Princeton, Allen Institute et Georgia Tech publié en novembre 2023.
Pour le JSON-LD, injecter au minimum les schemas Article, Organization, BreadcrumbList et FAQPage quand pertinent. Next.js App Router permet de générer le JSON-LD directement dans les Server Components, ce qui garantit qu il est présent dans le HTML initial servi aux crawlers IA. C est exactement ce que mesure le score JSON-LD dans la méthodologie ScoreGeo.
Monitorer crawl IA et trafic organique sur 4 à 8 semaines
Une migration SPA vers SSR ne se valide pas en une semaine. Il faut 4 à 8 semaines de monitoring pour confirmer que le SEO n a pas régressé et que les crawlers IA voient bien le nouveau contenu.
Trois métriques à suivre. Premièrement, le crawl rate GPTBot, ClaudeBot, OAI-SearchBot et Googlebot dans les logs serveur. Vous devez voir ces user-agents passer sur les URLs migrées avec un taux comparable à l avant-migration, idéalement supérieur. Deuxièmement, le trafic organique Google par URL via Search Console : une chute supérieure à 15% sur une URL stratégique pendant plus de 21 jours est un signal d alerte. Troisièmement, les mentions de marque dans les réponses ChatGPT, Claude, Perplexity et Gemini sur vos requêtes cibles, à mesurer manuellement ou via un outil de suivi.
Sistrix mesurait en avril 2026 que 58% des requêtes Google en France déclenchent un AI Overview. Cela signifie que la moitié de votre trafic organique futur dépend de votre citabilité IA, pas seulement de votre position SEO classique. Migrer vers SSR sans optimiser pour les LLM, c est faire la moitié du chemin. Si vous voulez un cadre méthodologique complet, consultez notre méthodologie ScoreGeo et le détail des erreurs GEO récurrentes sur les apps React migrées.
Questions fréquentes
Faut-il forcément migrer vers Next.js pour faire du SSR React ?
Non, mais Next.js reste le choix par défaut en 2026 pour migrer une SPA React existante grâce à son modèle Server Components / Client Components qui permet une migration progressive. Remix (React Router v7) est solide pour les apps orientées data, et Astro pour les sites de contenu. Un framework custom basé sur React 19 + Vite SSR est viable mais demande beaucoup plus de maintenance.
Combien de temps prend une migration SPA vers SSR en pratique ?
Pour une SPA React de 30 à 80 routes avec une base de code propre, comptez 6 à 12 semaines en équipe de 2 à 3 développeurs : 2 semaines d audit et choix stack, 4 à 8 semaines de migration route par route, 2 semaines de monitoring et ajustement post-déploiement. Une SPA très intriquée avec beaucoup d état partagé peut doubler ces délais.
Le SSR va-t-il ralentir mon site ?
Au contraire, dans la majorité des cas le SSR améliore les Core Web Vitals, en particulier le LCP (Largest Contentful Paint) qui chute fortement parce que le contenu est servi directement en HTML au lieu d attendre l exécution du JavaScript. Le TTFB peut augmenter de quelques dizaines de millisecondes, mais c est largement compensé. Avec ISR ou edge caching, le SSR devient même plus rapide qu une SPA cold.
ClaudeBot et GPTBot exécutent-ils le JavaScript ?
Non pour ClaudeBot, c est explicitement documenté par Anthropic. Pour GPTBot, la documentation OpenAI publique indique un crawl du HTML servi initialement sans rendu JavaScript côté client. C est la raison principale pour laquelle une SPA pure est invisible pour la majorité des LLM, même si Googlebot finit par exécuter le JS lors d une seconde passe de rendu.
Dois-je gérer les redirections côté serveur ou côté framework ?
Côté serveur pour les redirections 301 permanentes, via le fichier `next.config.js`, `redirects.config` ou directement la configuration CDN edge. Les redirections côté framework JavaScript (useEffect avec router.push) sont catastrophiques pour le SEO car elles ne renvoient pas de statut HTTP 301 et perdent le jus de lien. Seule exception : les anciennes routes en hash routing qui imposent une redirection JS côté client.
Le SSR suffit-il à être cité par les IA ?
Non, le SSR est une condition nécessaire mais pas suffisante. Une fois le HTML servi côté serveur, il faut encore appliquer un format answer-first dans le contenu, injecter du JSON-LD structuré, soigner les mentions de marque et l autorité off-page. Le SSR débloque la lisibilité par les LLM, mais la citabilité dépend ensuite de la qualité éditoriale et structurelle du contenu rendu.
Faut-il un fichier llms.txt après la migration ?
Recommandé mais pas obligatoire en 2026. Le standard llms.txt n est pas universellement adopté par les LLM, mais il est lu par certains crawlers IA et coûte peu à mettre en place. Le placer à la racine du domaine avec un résumé du site et les URLs prioritaires renforce la cohérence du signal envoyé aux IA. C est plus impactant sur les sites complexes avec beaucoup de routes que sur les sites vitrines.