Weave Code
Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Laravel Seo Laravel Package

arcanedev/laravel-seo

Laravel SEO package for managing page metadata such as titles, meta tags, and Open Graph data. Provides a fluent API to define SEO fields in your app and render them in Blade views, keeping optimization logic centralized.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Architecture fit. arcanedev/laravel-seo follows the classic Laravel 5 package shape: a service provider that merges a published config file, a facade over a SEOMeta-style singleton that accumulates title/description/keywords/Open Graph/Twitter Card values, and Blade partials/directives that render the accumulated tags into the document <head>. It is small, dependency-light, and does not reach into the database or HTTP layer. For a team already on Laravel's service container and Blade, the architectural pattern is a clean fit — the problem is not the design, it is the era.

Integration feasibility. As-is consumption is effectively blocked for any modern Laravel. A 2017 release implies illuminate/support constraints around 5.x and PHP constraints around ^5.6|^7.0, which Composer will refuse to resolve against Laravel 9/10/11 on PHP 8.1+. Realistically there are only two viable paths: (a) fork and modernize, or (b) treat it as a reference implementation and adopt a maintained equivalent. The code surface is small enough that a fork is a 1–3 day exercise for a mid-level engineer, so feasibility is high if the team accepts ownership.

Technical risk. High. This is an abandoned package: last release September 2017, four stars, zero dependents, single-maintainer provenance, and no community validation to lean on for security review. Laravel 5.x has been end-of-life for years, so there are no upstream security patches and no compatibility work. Beyond staleness, the functional surface is dated: meta keyword tags are ignored by major engines, and the package predates the industry's shift to JSON-LD/Schema.org structured data, canonical and hreflang management, and Core Web Vitals-oriented output. Adopting it buys legacy meta-tag plumbing, not modern SEO capability. There is also a latent correctness risk if the SEO object is bound as a singleton — under Laravel Octane or a long-lived worker, per-request title/description state can bleed across requests.

Key questions.

  • Does the package emit JSON-LD, or only legacy meta/OG/Twitter tags?
  • Is the SEO state container a singleton, and is it reset per request (Octane safety)?
  • Are title/description values escaped on output, or is there an XSS path if user- or CMS-supplied text is injected?
  • Does it support canonical URLs, robots directives, and multi-locale hreflang?
  • What is the actual composer.json constraint set, and how much of the code depends on Laravel 5-only APIs?
  • Is there a test suite, and does it run on PHP 8.x?
  • Does the MIT license permit an internal fork and rebrand without friction? (Yes, but confirm no bundled assets with different terms.)
  • Where does this sit relative to our existing SEO requirements — is it a stopgap or a strategic choice?

Integration Approach

Stack fit. The package assumes Laravel 5.5–5.8 and PHP 7.x. If the estate includes a legacy Laravel 5 application still in service, it is a reasonable low-effort drop-in. For anything on Laravel 9+, it does not fit and should not be forced.

Migration path. Recommended sequencing is replace-not-fork unless a legacy Laravel 5 app must be kept alive:

  1. Inventory the SEO surface actually needed: title patterns, meta description, canonical, Open Graph, Twitter Cards, robots, JSON-LD, sitemap, hreflang.
  2. Evaluate maintained alternatives — ralphjsmit/laravel-seo or artesaos/seotools for meta/OG/Twitter, paired with spatie/schema-org for structured data and spatie/laravel-sitemap for sitemaps. These cover the same facade-driven ergonomics with active maintenance.
  3. Build an adapter — a thin internal Seo service that wraps whichever implementation we pick, so controllers and Blade templates call one stable API. This isolates the next swap.
  4. Port call sites mechanically (the API shapes are similar: set title, set description, add OG property).
  5. Add the capabilities the old package lacks — JSON-LD, canonical, robots, hreflang — as first-class methods on the adapter.
  6. Decommission the old package and remove the fork if one was created.

If a fork is chosen instead, the work is: update composer.json to ^10.0|^11.0 and PHP ^8.1, add return types and declare(strict_types=1), convert the facade binding to a scoped/request-bound instance for Octane safety, add output escaping, and write a Pest/PHPUnit suite covering rendered head output.

Compatibility. Watch three seams: (1) vendor:publish tags and config key names, which will differ from the modern replacement and will silently break templates still reading old keys; (2) auto-discovery, available only from Laravel 5.5 onward, so the service provider must be registered manually on older apps; (3) any Blade @seo-style directive usage in templates — these must be found and rewritten deliberately, not left to fail at render time.

Sequencing. Discovery and requirements inventory → build spike (fork vs. replace, one week boxed) → decision and ADR → adapter implementation → controller/template port behind a feature flag → SEO QA (Google Rich Results Test, Search Console URL inspection, social card validators) → cutover. Do not run two SEO packages emitting tags simultaneously; duplicate meta tags are worse than none.

Operational Impact

Maintenance. Upstream is dead; whoever adopts this inherits it. A fork carries an ongoing tax of roughly one to three engineer-days per quarter to track framework majors, PHP releases, and any security advisories in transitive dependencies. A maintained alternative shifts that to ordinary dependency hygiene. Either way, name an owner — an unowned SEO layer is a silent-rot risk because nothing fails loudly when titles stop rendering.

Support. There is no upstream support channel, no issue triage, and no CVE response. Internal documentation must be written from scratch; the README is the only artifact and it is nine years old. Budget for knowledge concentration: if one engineer forks it, that engineer is the support contract.

Scaling. Runtime cost is negligible — this is string assembly in the request path. The real scaling concern is architectural: a request-scoped singleton under Octane or queue workers can leak state between requests, producing wrong titles on cached or concurrent pages. Cache rendered head fragments only if the SEO values are deterministic per route. Multi-tenant or multi-locale deployments need explicit per-request reset semantics, which the package almost certainly does not provide.

Failure modes.

  • Silent render regression — the highest-probability failure. A template refactor drops the SEO partial and pages ship with no title/description; no test catches it and no exception fires.
  • Composer resolution failure — a framework upgrade blocks composer update and stalls the whole dependency graph, not just SEO.
  • PHP 8 deprecation noise — implicit nullable parameters and dynamic properties will emit warnings that pollute logs and can mask real errors.
  • Injection — unescaped title/description rendered into <head> is a stored-XSS vector if content is CMS- or user-supplied.
  • Duplicate tags — if the package coexists with hand-written meta tags during migration, crawlers see conflicting canonicals and descriptions.
  • SEO decay, not outage — the failure that matters most to the business produces no alert: rankings erode because structured data is absent and canonicals are wrong, and it is discovered weeks later in Search Console.

Ramp-up. Trivial for developers — the facade-plus-config pattern is idiomatic Laravel and any mid-level engineer is productive in under an hour. The expensive ramp-up is organizational, not technical: someone must own the decision, the fork or replacement, and the SEO QA loop. Recommend treating this package as a reference implementation to mine for API shape, not a dependency to install, unless a legacy Laravel 5 application specifically requires it.

Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
abbasudo/artisan-route
mirvan/ippanel
ignibyte/aic-framework
glavweb/data-schema-bundle
glavweb/datagrid-bundle
tacticmedia/scim-server
uni-method/frame
neika-ai/sdk
adachsoft/php-code-style
pharaonic/laravel-notification-dependencies
beautinow/translug
dev-brainiac/bot-cloaked
octoberrain/html
octoberrain/extension
octoberrain/exception
octoberrain/contracts
adachsoft/api-version-bundle
cgv/localized-resource
noith/settings
kda/laravel-package