Comment référencer une page sur Google
Dans cette leçon on va apprendre à référencer vos pages React Router 7 : créer la fonction meta pour titles, descriptions et images OG dynamiques.
Dans cette leçon, tu vas découvrir comment ajouter des balises meta dans tes routes React Router 7 pour améliorer le référencement sur Google et la prévisualisation sur les réseaux sociaux (Twitter, Facebook, LinkedIn…). On voit :
- Pourquoi et où déclarer la fonction
meta - La configuration par défaut dans
root.tsx - L’ajout de meta statiques dans une route simple
- La génération de meta dynamiques pour une route paramétrée
- Comment protéger le meta en cas d’erreur
Pourquoi déclarer des balises meta
Les moteurs de recherche (Google, Bing…) et les réseaux sociaux lisent les balises <title> et <meta name="description"> pour :
- Afficher le titre et la description dans les résultats de recherche
- Générer la prévisualisation lors d’un partage (og:title, og:description, og:image)
- Améliorer le SEO (ranking) et l’expérience utilisateur
Sans ces balises, Google va extraire du contenu aléatoire de ta page, et tes partages sur Slack, Twitter, Facebook risquent d’être peu explicites.
Ajouter un meta par défaut dans root.tsx
Commence par définir un titre et une description par défaut dans le point d’entrée de ton app (root.tsx). Ces valeurs seront utilisées si aucune route ne surcharge meta.
1import { Meta, Links, Outlet, Scripts } from "react-router";23export function meta() {4return [5{ title: "Mon super site | Algomax" },6{ name: "description", content: "Découvre React Router 7 avec Algomax" },7];8}910// … dans ton composant Layout()11<head>12<Meta /> // ^? Insère les balises meta dynamiques13<Links />14</head>
Tip
Les balises définies ici servent de fallback. Toute route peut les remplacer
en exportant sa propre fonction meta.
Surcharger la meta dans une route statique
Pour une page statique, par exemple la liste des utilisateurs, ajoute un export meta() dans app/routes/users.tsx :
1export function meta() {2return [3{ title: "Liste des utilisateurs" },4{ name: "description", content: "Tous les utilisateurs enregistrés" },5{ property: "og:title", content: "Utilisateurs Algomax" },6];7}89export default function Users() {10// render…11}
Les balises renvoyées par cette fonction remplaceront celles du root.tsx uniquement pour cette route.
Générer des meta dynamiques dans une route paramétrée
Sur une route dynamique ($userSlug.tsx), on utilise les données chargées par le loader pour créer un titre personnalisé :
1import { useLoaderData } from "react-router";2import type { Route } from "./+types/users.$userSlug";34export async function loader({ params }: Route.LoaderArgs) {5const user = await getUserBySlug(params.userSlug);6if (!user) throw new Response("Not found", { status: 404 });7return { user };8}910export function meta({ data }: Route.MetaArgs<Route.Info>) {11if (!data) {12return [13{ title: "Utilisateur non trouvé" },14{ name: "description", content: "Ce profil n'existe pas" },15];16}17return [18{ title: `${data.user.name} • Profil` },19{20name: "description",21content: `Découvre le profil de ${data.user.name} sur Algomax`,22},23{24property: "og:image",25content: data.user.avatarUrl, // ^? URL de l’image de profil26},27];28}2930export default function UserProfile() {31const { user } = useLoaderData<typeof loader>();32// render…33}
Dans
meta({ data }),dataest le résultat duloader. Sidataestundefinedà cause d’une erreur 404, on renvoie un meta adapté.
Page non trouvée
Ne référence pas une page 404 dans Google ! Dans le module SEO, tu verras comment
bloquer l’indexation avec robots.txt ou <meta name="robots" content="noindex">.
Points clés
export function meta()permet de définir toutes les balises meta pour une route<Meta />dansroot.tsxinjecte ces balises dans le<head>- Les valeurs statiques et dynamiques se configurent route par route
- Prends soin de gérer le cas d’erreur pour éviter de référencer un contenu manquant
- Pour aller plus loin, consulte le module Maîtrise le SEO dans React Router 7
Exercices rapides
- Page « À propos » statique
- Crée
/about.tsx, ajoute unmeta()avec un titre et une description centrés sur ta formation.
- Crée
- Blocage d’indexation
- Sur la page de confirmation (
/merci), exporte un meta<meta name="robots" content="noindex" />.
- Sur la page de confirmation (
- Image sociale dynamique
- Modifie la route
users.$userSlug.tsxpour inclure<meta property="og:image"seulement si l’utilisateur a uncoverUrl.
- Modifie la route
Comprendre les concepts fondamentaux
Quelle est la principale différence entre les composants client et serveur dans React ?
Optimisation des performances
Quelle technique est recommandée pour éviter les rendus inutiles dans React ?
Architecture des données
Quel hook permet de gérer les effets de bord dans un composant React ?