feat(seo): add semantic breadcrumbs and BreadcrumbList structured data
Personne n'a encore pris cette issue.
Évaluation
- Difficulté
- 4/5
- Temps estimé
- 3-5 jours
- Accessibilité débutants
- 48/100
- Type d'issue
- Fonctionnalité
- Clarté
- Plutôt claire
- Activité
- Calme
- Stack technique
- typescript
- Domaine
- documentation, web-dev
Piste de recherche
Commencez par src/components/Breadcrumbs.tsx et la Google Breadcrumb structured-data guidance, puis suivez les routes représentatives de library, docs, blog, charts et partner mentionnées dans l’issue. Le travail est terminé lorsque des données Breadcrumb partagées alimentent une navigation visible accessible ainsi que du JSON-LD visible côté SSR, avec la validation indiquée et une couverture automatisée de l’ordre, des URLs, de l’échappement et des routes exclues.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
Context
TanStack has a deep, meaningful content hierarchy, especially across library landing pages, documentation, blog posts, chart examples, and partner pages. These pages currently do not emit BreadcrumbList JSON-LD.
The shared src/components/Breadcrumbs.tsx component is currently a section label plus an on-page table-of-contents control. It renders div elements rather than a complete semantic breadcrumb trail, so it cannot serve as the source of truth for either accessible navigation or structured data.
Google documentation: https://developers.google.com/search/docs/appearance/structured-data/breadcrumb
Proposed scope
- Define a shared breadcrumb item model with a label and optional absolute or site-relative URL.
- Render visible breadcrumbs as nav with aria-label="Breadcrumb".
- Generate an SSR-visible BreadcrumbList JSON-LD object from the same breadcrumb items.
- Use representative user paths rather than mechanically mirroring URL segments.
- Cover at least:
- Library landing pages: Libraries → Query
- Docs: Libraries → Query → React Docs → Guides → Query Keys
- Blog posts: Blog → Post title
- Charts catalog examples: Charts → Catalog → Example title
- Partner detail pages: Partners → Partner name
- Do not emit breadcrumb markup on the homepage, errors, or non-indexable pages.
Acceptance criteria
- Visible breadcrumbs and JSON-LD are derived from one shared data model.
- BreadcrumbList is present in the raw SSR response, not added only after hydration.
- Every BreadcrumbList contains at least two ListItem entries with contiguous positions.
- Linked breadcrumb items use absolute canonical HTTPS URLs in JSON-LD.
- The current page name matches the visible page heading/title.
- Representative routes pass Google Rich Results Test validation.
- Automated tests cover ordering, URL generation, escaping, and routes that should not emit breadcrumbs.
Notes
The current UI component can retain its on-this-page control, but that control should be separate from the hierarchical breadcrumb data.
- Langage dominant
- TypeScript
- Étoiles
- 1.1k
- Forks
- 401
- Merge moyen
- 16 h 8 min
- PR mergées (30 j)
- 58
Guide de contribution
Aucun guide de contribution indexé pour ce dépôt
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de TanStack/tanstack.com
-
Difficulté 1/5 Moins d'une heure Accessibilité débutants 90/100
TanStack/tanstack.com#1293 ·
-
source-audit
Difficulté 1/5 Moins d'une heure Accessibilité débutants 84/100
TanStack/tanstack.com#1195 ·
-
source-audit
Difficulté 2/5 1-3 heures Accessibilité débutants 68/100
TanStack/tanstack.com#1194 · 2 commentaires ·
-
source-audit
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100
TanStack/tanstack.com#1177 · 1 commentaire ·
-
Difficulté 2/5 1-3 heures Accessibilité débutants 64/100
TanStack/tanstack.com#1059 ·
Toutes les issues de TanStack/tanstack.com
Issues similaires
-
Difficulté 2/5 1-3 heures Accessibilité débutants 75/100
vercel-labs/just-bash#464 ·
-
looksLikeSlug() is ASCII-only, so non-Latin entity slugs (e.g. Korean) skip exact match and collapse Ouverte
Difficulté 2/5 1-3 heures Accessibilité débutants 75/100
-
Difficulté 2/5 1-3 heures Accessibilité débutants 65/100
-
Difficulté 2/5 1-3 heures Accessibilité débutants 65/100
-
bug
Difficulté 2/5 1-3 heures Accessibilité débutants 75/100