- How do I install butschster/meta-tags in a Laravel application?
- Install it with Composer using composer require butschster/meta-tags; the service provider is auto-discovered so no manual registration is required. Publish the package config, then define a MetaTagCollection subclass for each content type and render the collection in your master Blade layout. The package is presentation-layer only, so it does not touch controllers, models, or migrations, which keeps the integration non-invasive.
- Does butschster/meta-tags support Open Graph and Twitter Card tags?
- Yes. The package ships builders for Open Graph and Twitter Card metadata alongside the standard title, description, canonical, and robots tags. You compose them into a single collection per page, so the same object renders classic SEO tags and social preview tags together. Because the output is a single render call, your social tags stay in sync with the page title and description instead of drifting in hardcoded Blade partials.
- Can I generate JSON-LD structured data with butschster/meta-tags?
- Yes, JSON-LD structured data is part of the package's scope, and you add it through custom tag groups or builders on your collection. For schema types like Product, Article, BreadcrumbList, or Organization, define a reusable builder once and attach it wherever that content type is rendered. Verify coverage for your specific schema types before adopting, and plan to extend the builders if a type is not provided out of the box.
- Which Laravel and PHP versions does butschster/meta-tags support?
- The package targets modern Laravel releases with server-rendered Blade front ends, and it is commonly evaluated against Laravel 9 through 12. Always check the composer.json version constraints in the repository before upgrading, since that file is the authoritative source for the supported Laravel and PHP matrix. If your platform roadmap includes a Laravel major upgrade, confirm the constraint allows it or be prepared to fork and adjust a small, readable codebase.
- How should I test rendered SEO meta tags in CI?
- Missing or stale meta tags fail silently and only show up as slow organic traffic regressions, so treat test coverage as your responsibility rather than the package's. The practical approach is snapshot or assertion tests against the collection's render() output per route, committed alongside your feature tests. Build a baseline inventory of each route's expected title, description, canonical, robots, Open Graph, Twitter, and JSON-LD output, then assert against it so drift fails the build.
- Does butschster/meta-tags work with Inertia, Livewire, or an SPA?
- Rendering is Blade-centric, so the package works cleanly with Inertia and Livewire only when the initial HTML response for each route is server-rendered with the correct collection. There is no client-side hydration path, meaning an SPA shell that populates metadata in JavaScript will leave crawlers with nothing useful. If your frontend architecture is heading toward a headless or SPA model, plan a server-rendering layer for metadata first.
- Is butschster/meta-tags compatible with php artisan config:cache and Laravel Octane?
- The package has no persistence, queue, or eventing surface, so there is no long-lived state to corrupt under Octane. The real requirement is on your side: collection construction must happen per request and must be stateless and cheap, with no mutation of config values at runtime. Validate this with an Octane smoke test and a config:cache run in staging before relying on it in production.
- How does butschster/meta-tags compare to artesaos/seotools or romanzipp/laravel-seo?
- The differentiator is the collection-and-builder model with custom tag groups, which keeps metadata composition consistent across many page types instead of scattering tags through Blade partials. If another SEO package is already in use, map each existing concept to a MetaTagCollection builder before you start, and keep both installed only during the diff window. Do not run two meta tag packages in production indefinitely, since duplicate or conflicting tags are worse than either package alone.
- Is butschster/meta-tags actively maintained, and what happens if the maintainer stops?
- It is effectively a single-maintainer project, which is the main lifecycle risk rather than any runtime concern. The MIT license, an active release cadence, and a small readable codebase mitigate this: worst case you vendor-fork the package and keep it on your own release cycle. There are zero Packagist dependents, so no downstream community has stress-tested upgrade paths across Laravel majors, meaning you should rely on the maintainer's version constraints and your own CI.
- Can I manage multi-locale SEO such as hreflang and per-locale canonicals with butschster/meta-tags?
- The package renders whatever tags you put in a collection, so per-locale canonicals fit naturally when collections are built from locale-aware route data. Hreflang alternates are less standardized in most meta tag libraries, so confirm support in the source or add them as a custom tag group before committing to a multi-locale roadmap. If multi-locale SEO is in scope for the next twelve months, prototype one locale pair early to prove the pattern.