/lesson-22
JavaScript SEO : Garantir l'indexation de votre application
Comprenez l’impact de JavaScript sur le SEO : rendu client, rendu serveur et génération statique, vrais liens, métadonnées par page et tests.
Leçon 22 sur 3015 min de lectureMis à jour le 27 sept. 2026
À retenir
- Avec le rendu côté client, Google voit d’abord une coquille vide et doit exécuter le JavaScript pour voir le contenu.
- Le rendu côté serveur ou la génération statique placent tout le contenu, les liens et les métadonnées dans la première réponse HTML.
- Utilisez de vrais liens <a href>, un titre et une meta description uniques par route, et ne bloquez jamais JS ou CSS dans le robots.txt.
- Vérifiez la page rendue avec l’outil d’inspection d’URL de la Search Console et en chargeant la page sans JavaScript.
Le développement web moderne s'est fortement orienté vers les frameworks JavaScript comme React, Vue et Angular. Bien que ces frameworks créent des expériences utilisateur fantastiques, semblables à des applications, ils peuvent créer des obstacles importants pour les moteurs de recherche s'ils ne sont pas configurés correctement.
Le problème central est le Rendu (Rendering). Googlebot est intelligent, mais ce n'est pas un utilisateur humain. Si votre contenu dépend entièrement de l'exécution de JavaScript dans le navigateur, vous risquez d'être invisible.
1. Le problème : Rendu côté client (CSR)
Par défaut, la plupart des applications à page unique (SPA) utilisent le rendu côté client.
Comment ça marche :
Le serveur envoie un fichier HTML presque vide (souvent juste un <div id="root">). Le navigateur télécharge ensuite un gros paquet JavaScript, l'exécute et remplit la page avec du contenu.
Ce que Google voit :
Lorsque Googlebot explore l'URL pour la première fois, il voit la coquille HTML vide.
Le risque :
Google peut exécuter JavaScript, mais cela nécessite une puissance de traitement massive. Par conséquent, Google diffère ce processus.
- Première vague (Crawl) : Google voit la coquille vide.
- La file d’attente: La page attend dans une file de rendu. Google indique que c’est généralement rapide, mais c’est une étape de plus où le contenu peut être retardé ou manqué.
- Deuxième vague (Rendu) : Google exécute enfin le JS pour voir le contenu.
En résumé : Le CSR pur peut entraîner une indexation retardée et du contenu manqué si le rendu expire.
2. La solution : Rendu côté serveur (SSR) et SSG
Pour garantir que Google voit votre contenu immédiatement, vous devez déplacer le processus de rendu du navigateur de l'utilisateur vers le serveur (ou au moment de la construction).
A. Rendu côté serveur (SSR)
Comment ça marche : Lorsqu'un bot (ou un utilisateur) demande une page, le serveur exécute le JavaScript, construit la chaîne HTML complète et envoie une page entièrement remplie au navigateur.
- Avantage : Googlebot voit le contenu complet (texte, liens, métadonnées) dans la réponse HTML initiale. Google n’a pas besoin d’attendre le rendu pour voir le contenu.
- Frameworks :
- React : Utilisez Next.js ou Remix.
- Vue : Utilisez Nuxt.js.
- Angular : Utilisez Angular SSR (anciennement Angular Universal).
B. Génération de site statique (SSG)
Comment ça marche : Vous générez toutes vos pages HTML au moment de la construction (avant le déploiement). Le serveur sert de simples fichiers HTML statiques.
- Avantage : Performance extrêmement rapide (génial pour les Core Web Vitals) et SEO parfait.
- Cas d'utilisation : Blogs, sites marketing et projets pSEO.
- Frameworks : Next.js, Gatsby, Astro.
Comparaison : CSR vs SSR vs SSG
| Fonctionnalité | CSR (Côté Client) | SSR (Côté Serveur) | SSG (Statique) |
|---|---|---|---|
| HTML Initial | Vide (Chargement...) | Contenu Complet | Contenu Complet |
| Convivialité SEO | Faible / Risqué | Élevé | Élevé |
| Charge Serveur | Faible | Élevée | Faible |
| Idéal Pour | Tableaux de bord, Apps Privées | Flux Dynamiques, Réseaux Sociaux | Blogs, Docs, Pages de Destination |
3. Meilleures pratiques critiques pour JS SEO
Même avec SSR, les développeurs commettent souvent des erreurs qui nuisent à l'indexation.
A. Utilisez de vrais liens (<a href>)
Googlebot découvre de nouvelles pages en suivant des liens.
- Mauvais :
<div onClick={goToPage}>Produit</div>(Googlebot ne clique pas). - Bon :
<a href="/product">Produit</a>(Googlebot suit ceci).
Note : Dans les frameworks comme Next.js, utilisez le composant <Link>, qui rend une balise <a> sous-jacente.
B. Gestion des métadonnées (Le <head>)
Dans une application à page unique, les balises <title> et <meta> restent souvent statiques (par exemple, "Mon App") sur chaque page.
Le correctif : Vous devez injecter des métadonnées dynamiques pour chaque route.
- React : Utilisez react-helmet-async ou l'API Metadata de Next.js.
- Vue : Utilisez @unhead/vue.
Vérifier : Vérifiez que le titre change dans l'onglet du navigateur lorsque vous naviguez entre les pages.
C. Ne bloquez pas les ressources
Assurez-vous que votre fichier robots.txt ne bloque pas vos fichiers JavaScript (.js) ou CSS (.css). Google a besoin d'accéder à ces fichiers pour rendre la page correctement.
4. Comment tester votre application JS
Ne devinez jamais ; vérifiez toujours ce que voit Google.
- Google Search Console (Inspection d'URL) : Entrez votre URL et cliquez sur "Test Live URL". Cliquez sur "View Tested Page" > "Screenshot". Résultat : Si la capture d'écran est vide ou affiche une roue de chargement, Google ne peut pas voir votre contenu. Si vous voyez le texte, vous êtes en sécurité.
- Test des résultats enrichis : Cet outil exécute le véritable moteur de rendu de Google. S'il peut détecter votre balisage Schema, cela signifie généralement qu'il a rendu la page avec succès.
- Désactiver JavaScript dans Chrome : Utilisez une extension de navigateur pour désactiver JS. Rechargez votre page. Si l'écran est vide, vous dépendez entièrement du CSR.
Conclusion
Pour le SEO moderne, le rendu côté serveur (SSR) ou la génération de site statique (SSG) est la norme. Bien que Google puisse indexer les applications rendues côté client, s'y fier est comme jouer à la roulette avec vos classements. En utilisant des frameworks comme Next.js ou Nuxt, vous donnez aux moteurs de recherche exactement ce qu'ils veulent : un HTML rapide, accessible et entièrement rendu.