TanStack / TanStack/tanstack.com
feat(seo): add semantic breadcrumbs and BreadcrumbList structured data
Nessuno ha ancora preso questa issue.
- Lingua principale
- TypeScript
- Stelle
- 1.1k
- Fork
- 401
- Merge medio
- 18h 14m
- PR unite (30g)
- 56
Descrizione
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.
Guida per i contributori
Nessuna guida per i contributori indicizzata per questo repository
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Direzione di ricerca
Inizia da src/components/Breadcrumbs.tsx e dalla Google Breadcrumb structured-data guidance, quindi segui le route rappresentative di library, docs, blog, charts e partner indicate nell’issue. Il lavoro è completato quando dati Breadcrumb condivisi alimentano una navigazione visibile accessibile e JSON-LD visibile in SSR, con la validazione indicata e la copertura automatizzata per l’ordinamento, gli URL, l’escaping e le route escluse.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Valutazione
- Stack tecnologico
- typescript
- Ambito
- documentation, web-dev
- Tipo di issue
- Funzionalità
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Stato di attività
- Tranquilla
- Chiarezza
- Abbastanza chiara
- Idoneità per principianti
- 48/100