Overview
Breadcrumb provides semantic path navigation with explicit slot components.
- Use it for hierarchy and orientation (
Home / Docs / API). - Do not use it as a stepper or a tab replacement.
<nav aria-label="breadcrumb">, and the current page is represented with aria-current="page".
Installation
Import
Basic Example
Advanced Example
Size Scale
Breadcrumb supports xs | sm | md | lg | xl sizing on the root and all subprimitives.
API Reference
Breadcrumb
Root navigation container with aria-label.Size of the breadcrumb:
xs | sm | md | lg | xl.BreadcrumbList
Ordered list wrapper (<ol>).
Size override for the list.
BreadcrumbItem
Individual list item container.Size override for the item.
BreadcrumbLink
Interactive ancestor link. Supports Base UIrender composition for custom link components.
Size override for the link.
Custom render function for polymorphic composition (e.g., Next.js Link).
BreadcrumbPage
Current location marker witharia-current="page".
Size override for the page.
BreadcrumbSeparator
Visual separator between items. Defaults to arrow icon.Size override for the separator.
BreadcrumbEllipsis
Compact overflow marker for deep paths.Size override for the ellipsis.
Accessibility
- Keep breadcrumb order aligned with real navigation hierarchy.
- Exactly one item should be
BreadcrumbPagefor the current location. - If you use
BreadcrumbEllipsis, provide another path-discovery mechanism (menu, sitemap, parent page links).
SSR and RSC Notes
- Breadcrumb markup is server-friendly and works in RSC.
- When paths are dynamic, compute breadcrumb segments on the server and render links directly.
- Use a client boundary only when breadcrumbs depend on client-only state.
Styling and Tokens
- Default styles already use semantic tokens (
text-muted-foreground,text-foreground). - Keep separators subtle; avoid saturated custom colors that compete with page headings.
- Use spacing and typography primitives for hierarchy before adding extra decoration.
Troubleshooting
- Breadcrumb is not announced as navigation: keep
Breadcrumbas the root soaria-label="breadcrumb"remains present. - Current page still looks clickable: use
BreadcrumbPageinstead ofBreadcrumbLinkfor the final item. - Overflow paths become unreadable: collapse middle segments with
BreadcrumbEllipsis.