Aller au contenu
NessFlow
Menu

SEO JavaScript : faire explorer une application monopage

Pourquoi votre application React ou Vue apparaît vide aux outils d’audit, comment vérifier ce qu’un moteur voit réellement, et les cinq défauts qui reviennent sur presque tous les projets.

L’équipe NessFlow (Ingénierie produit, NessFlow) · · 4 min de lecture

Capture de l’écran Étendue du passage d’exploration de NessFlow, sur un jeu de démonstration.

Écran réel du produit, rendu sur un jeu de démonstration fictif : les chiffres affichés ne sont ceux d’aucun client.

« Notre site est invisible sur Google » est rarement un problème de contenu quand l’application est rendue côté client. C’est presque toujours un problème de ce qui existe au moment où on regarde.

Le malentendu de départ

Une requête HTTP vers votre page renvoie du HTML. Sur une application monopage, ce HTML contient un conteneur vide et une balise de script. Tout le contenu apparaît ensuite, quand le navigateur exécute le JavaScript.

Trois catégories d’outils lisent cela différemment :

  • Un crawler qui ne rend pas voit le conteneur vide. Il conclut que la page n’a ni titre utile, ni texte, ni liens, et il a raison, du point de vue du document qu’il a reçu.
  • Un moteur de recherche moderne rend, mais dans une file séparée du crawl initial. Le délai est variable et non contractuel.
  • Un moteur de réponse IA dépend de son propre robot ; tous ne rendent pas le JavaScript.

Conclusion pratique : ce que votre visiteur voit n’est pas ce que la moitié de vos lecteurs automatiques reçoit.

Vérifier, en trois contrôles

1. Le HTML brut

curl -s https://votre-domaine/une-page | wc -c
curl -s https://votre-domaine/une-page | grep -o '<title>[^<]*</title>'

Si le corps fait deux kilo-octets et que le titre est celui de l’application entière plutôt que celui de la page, vous avez votre réponse.

2. Le rendu

Rendez la même page avec un navigateur sans interface, puis comparez la quantité de texte et le nombre de liens avec le HTML brut. L’écart est exactement ce que perd un lecteur qui ne rend pas.

3. Les journaux serveur

C’est le contrôle que personne ne fait, et c’est le plus concluant. Regardez si les robots demandent vos routes applicatives ou seulement la racine. Si vous ne voyez que la racine, vos routes ne sont pas découvrables : le problème est en amont du rendu.

Les cinq défauts les plus fréquents

1. Des liens qui ne sont pas des liens

Une navigation construite avec onClick et un routeur JavaScript ne produit aucun <a href>. Un moteur ne clique pas : il suit des liens. La règle est simple et sans exception : toute route atteignable doit l’être par une balise <a> portant un href réel. Le routeur peut intercepter le clic ensuite ; l’attribut doit exister.

2. Des métadonnées identiques partout

Le titre et la description sont posés dans le gabarit de l’application et jamais mis à jour à la navigation, ou mis à jour trop tard. Résultat : toutes vos pages portent le même titre. Sur un rendu différé, seul l’état initial compte.

3. Des codes de statut faux

Une route inexistante affiche un composant « page introuvable »… en répondant 200. Pour un moteur, ce sont des milliers de pages valides au contenu identique. Une page introuvable doit répondre 404, et une redirection doit être une redirection HTTP, pas un remplacement d’écran.

4. Du contenu derrière une interaction

Les onglets, accordéons et boutons « voir plus » qui ne chargent leur contenu qu’au clic rendent ce contenu invisible pour tout lecteur automatique. S’il compte pour votre visibilité, il doit être dans le document rendu, quitte à être masqué en CSS.

5. Une hydratation qui échoue en silence

Le cas le plus désagréable, parce qu’il ne se voit pas en développement. Une erreur JavaScript sur une page particulière (un jeu de données inhabituel, une locale non gérée) interrompt le rendu. Le visiteur voit une page à moitié construite ; le lecteur automatique voit un conteneur vide. Sans surveillance des erreurs en production, cela peut durer des mois.

Ce qu’il faut décider

Il n’y a pas une bonne architecture, il y en a trois, et le choix se fait sur le contenu :

Rendu serveur. Le serveur produit le HTML complet. C’est le plus sûr et le plus coûteux à maintenir. Recommandé dès que le contenu est votre canal d’acquisition.

Génération statique. Les pages sont produites à la construction. Idéal pour de la documentation ou un catalogue qui change peu. Inadapté à ce qui dépend de l’utilisateur.

Rendu client seul. Acceptable pour une application derrière authentification, où rien n’a vocation à être indexé. C’est le seul cas où le SEO JavaScript ne se pose pas, parce qu’il n’y a rien à explorer.

Le cas coûteux est l’intermédiaire : une application publique en rendu client, dont on veut la visibilité d’un site rendu au serveur. Les contournements existent, ils ajoutent tous une pièce mobile de plus.

Vérifier après correction

Trois contrôles, dans cet ordre :

  1. Le HTML brut porte le titre, la description et les liens de la page, pas ceux de l’application.
  2. Un crawl avec rendu et un crawl sans rendu trouvent le même nombre de liens. Si l’écart persiste, il reste des liens produits en JavaScript.
  3. Les journaux montrent des robots demandant vos routes, pas seulement la racine. C’est la seule preuve que la découverte fonctionne.

Le troisième contrôle est le seul qui parle du monde réel. Les deux premiers disent ce qu’un moteur pourrait voir ; celui-là dit ce qu’il a effectivement demandé.

Capture de l’écran Autorité du profil de liens entrants de NessFlow, sur un jeu de démonstration.

tutoriel

Analyser un profil de liens entrants : la méthode, pas le score

Un total de liens entrants ne décide de rien. Les cinq questions à poser à un profil, la façon de compter les domaines référents sans les compter deux fois, ce que vaut un score de risque acheté, et la seule comparaison concurrentielle qui produise un constat.

L’équipe NessFlow · · 6 min de lecture

Capture de l’écran Répartition des positions suivies de NessFlow, sur un jeu de démonstration.

tutoriel

Suivi de positions : construire un relevé comparable dans le temps

Une position n’est pas une propriété de votre page : c’est le résultat d’une mesure, et une mesure se compare seulement à une autre prise dans les mêmes conditions. Les cinq réglages à figer, les trois états d’un relevé, et la référence sur laquelle juger une chute.

L’équipe NessFlow · · 7 min de lecture

Commencez par une mesure, pas par une promesse

Lancez un audit sur votre site et lisez ce que le moteur trouve. Si vous avez besoin d’un cadrage, demandez une démo : nous la faisons sur votre site, avec vos propres URL à l’écran.

Les accès s’ouvrent par vagues, nous prévenons par e-mail.