diff --git a/apps/web/public/assets/posts/dynamic-breadcrumb-nextjs/breadcrumb.png b/apps/web/public/assets/posts/dynamic-breadcrumb-nextjs/breadcrumb.png new file mode 100644 index 0000000000000000000000000000000000000000..c578b8e0045918b4b6da157438836b37bb9a2ed1 GIT binary patch literal 32834 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 Dogs` or `Home > Cats` + +3. On individual pet pages: + +Here we only have the pet id, so we need to fetch the pet name from the server side and display it in the breadcrumb. + +`Home > Dogs > Dog Name` + +The key is to fetch the necessary data on the server side and dynamically update the breadcrumb based on the current route instead of displaying the pet id. + + + +### Parallel route 🚀 + +[Parallel routes](https://nextjs.org/docs/app/building-your-application/routing/parallel-routes) in Next.js allow us to render multiple pages in the same layout simultaneously. This feature is particularly useful for our breadcrumb implementation as it allows us to maintain a consistent navigation structure across different page types. + + +#### Homepage + +In our root layout we will use slot to render the breadcrumb component. + +```tsx +export default function RootLayout({ + breadcrumb, + children, +}: Readonly<{ + breadcrumb: React.ReactNode; + children: React.ReactNode; +}>) { + return ( + + + {breadcrumb} + {children} + + + ); +} +``` + +We need to create a new folder `@breadcrumb` in the `app` folder + +Here we create a new file `page.tsx` that will be responsible for rendering the breadcrumb. + +```tsx +import { + Breadcrumb, + BreadcrumbItem, + BreadcrumbLink, + BreadcrumbList, +} from "@/components/ui/breadcrumb"; + +export default function BreadcrumbSlot() { + return ( + + + + Home + + + + ); +} +``` + +#### Pet pages + +We also want to create a catch all components for the dynamic routes in the `app` folder, to achieve this we need to create a new file `page.tsx` in the `@breadcrumb/[...all]` folder. + +```tsx +import { + Breadcrumb, + BreadcrumbItem, + BreadcrumbLink, + BreadcrumbList, + BreadcrumbPage, + BreadcrumbSeparator, +} from "@/components/ui/breadcrumb"; +import React from "react"; +import type { ReactElement } from "react"; + +export default function BreadcrumbSlot({ + params, +}: { params: { all: string[] } }) { + const breadcrumbItems: ReactElement[] = []; + let breadcrumbPage: ReactElement = <>; + for (let i = 0; i < params.all.length; i++) { + const route = params.all[i]; + const href = `/${params.all.at(0)}/${route}`; + if (i === params.all.length - 1) { + breadcrumbPage = ( + + {route} + + ); + } else { + breadcrumbItems.push( + + + + {route} + + + , + ); + } + } + + return ( + + + + Home + + {breadcrumbItems} + + {breadcrumbPage} + + + ); +} +``` +This code was taken from the [Jeremy's post](https://jeremykreutzbender.com/blog/app-router-dynamic-breadcrumbs) about dynamic breadcrumbs in Next.js. + +#### Dogs and Cats pages + +We need to create a new file `page.tsx` in the `@breadcrumb/dogs/[id]` folder, we must follow the exact same structure as our specific pet pages. +In this component we will fetch the pet name from the server side and display it in the breadcrumb. + +```tsx + +import { + BreadcrumbItem, + BreadcrumbLink, + BreadcrumbList, + BreadcrumbPage, + BreadcrumbSeparator, +} from "@/components/ui/breadcrumb"; + +export default async function BreadcrumbSlot({params}: {params: {id: string}}) { + // Fetch our cat information from the database + const cat = await fetchCat({id: params.id}); + + return ( + + + Home + + + + Cats + + + + {cat.name} + + + ); +} +``` + + +## Conclusion + +By leveraging Next.js parallel routes and server-side rendering, we've created a dynamic breadcrumb component that updates based on the current route and fetches data efficiently on the server side. This approach provides a smooth user experience while maintaining good performance. + +Remember to check out the full working example on [GitHub](https://github.com/openstatusHQ/nextjs-dynamic-breadcrumb/) to see how all the pieces fit together in a Next.js 15 project. + +Happy coding! \ No newline at end of file