exs/schema-breadcrumb-bundle
Symfony bundle that generates schema.org BreadcrumbList JSON-LD script tags from Twig. Pass an ordered array of breadcrumb items with name, URL, and optional image to the getJsonBreadcrumb() function to output valid structured data for search engines.
BreadcrumbList JSON-LD that Google uses to render breadcrumb trails in search results. If improving organic click-through or SERP presentation on deep pages is on the roadmap, this is a small enabler for that initiative — but the package itself is only one slice of it.{name, url, image} into one <script type="application/ld+json"> block. That is roughly 30–60 lines of well-understood code. Taking a dependency to avoid writing it is a poor trade at this maturity level.AppKernel::registerBundles() and exposes a Twig global function. In a Laravel product it cannot be adopted as-is — there is no service provider, facade, config publishing, or auto-discovery. The only transferable decision is the capability: "we should emit BreadcrumbList structured data," implemented as a Blade component or small service class.BreadcrumbList, Product, Organization, FAQPage, Article) in a single JSON-LD @graph. This package answers exactly one type and cannot compose with others, so treat it as a reference implementation, not a foundation.Consider it only when all of the following hold:
AppKernel::registerBundles() (Symfony 2.x/3.x). Symfony 4+ with Flex and Symfony 6/7 differ in registration and autoloading and would require a rewrite anyway.Look elsewhere — or write the helper yourself — when:
@graph combining several schema types. One script per type is harder to validate and maintain.<noscript>/microdata fallbacks — none of which are covered here.For teams that want a maintained dependency rather than hand-rolled code, spatie/schema-org is the better buy: Laravel-native, actively maintained, and composes with other schema types.
For executives (one paragraph): This is a very small SEO utility that adds the machine-readable breadcrumb data Google uses to display breadcrumb trails in search results. The upside is real but modest — better SERP presentation and click-through on deep pages — and the build cost is near zero. The catch is that the library itself has no user base and no active maintenance, so I do not recommend adopting it as a strategic dependency. My recommendation is to treat it as a reference and implement the equivalent (~50 lines) in-house, or fold breadcrumbs into a broader structured-data initiative where they are one of several schema types we emit. Either path gives the same SEO value with no third-party risk and costs well under a day of engineering.
For engineering (summary):
exs/schema-breadcrumb-bundle is a Symfony bundle, not a Laravel package. It exposes a Twig function getJsonBreadcrumb(items) that serializes an ordered array of {name, url, image} into a schema.org BreadcrumbList JSON-LD <script> block, with 1-indexed position derived from array order. It targets the legacy AppKernel registration era and will not install cleanly into a modern Laravel or Symfony 4+ app. Signals: 0 stars, 0 dependents, MIT, README-only maturity, deprecated Travis CI, no visible tests or version constraints. Risks: abandoned upstream, no PHP 8 / Symfony 5+ compatibility, no schema validation, XSS if name/url/image are not escaped inside the <script> context, json_encode silently returning false on invalid UTF-8, and array-order-as-hierarchy breaking quietly on reorder. Recommendation: do not add as a dependency. Reproduce the behavior in our codebase with (1) a BreadcrumbList builder taking explicit position from a DTO rather than array order, (2) json_encode with JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE | JSON_THROW_ON_ERROR, (3) a Blade <x-breadcrumbs-schema> component (or Twig extension on Symfony), and (4) a snapshot test asserting the tag parses as valid JSON plus a manual pass through Google's Rich Results Test. Identical SEO value, no third-party risk, under a day of work.
How can I help you explore Laravel packages today?