Skip to content

Upgrading from fibonoir/laravel-seo v1

v2.0.0 renames the package to rankbeam/laravel-seo and carves it down to a focused core: meta resolution, rendering, JSON-LD, and sitemaps. The analyzer, scanner, redirects, 404 monitor, and admin UI moved to separate packages.

1. Swap the package

bash
composer remove fibonoir/laravel-seo
composer require rankbeam/laravel-seo

2. Update namespaces

Class names are unchanged; only the root namespace moved: Fibonoir\LaravelSEO\*Rankbeam\Seo\*. A project-wide find-and-replace covers it. The SEO facade alias and the @seo Blade directives are unchanged.

3. Delete stale published files

Before removing files or tables, back up the published configuration and export the affected data. Verify that you can restore it. This guide does not migrate v1 redirect, 404 or scan history into Pro's different schema; the core-table compatibility below applies only to seo_meta and seo_defaults.

This bites silently

v1's seo:install published files into your app that will fight the v2 package without producing a single error message.

  • config/seo.php — if yours was published by v1 (or by ralphjsmit/laravel-seo, which v1's installer could leave behind), it shadows the package config and can null out site_name and every {site_name} template. Delete it, then re-publish: php artisan vendor:publish --tag=seo-config.
  • v1 migrations for tables the core no longer owns: seo_redirects, seo_404_logs, seo_scan_runs, seo_scan_issues, seo_analytics_cache, seo_internal_links_index. Remove the migration files. If the tables exist in production, drop them before installing rankbeam/laravel-seo-pro — Pro recreates them with a different schema.
  • Published stubs under app/ and resources/js from v1's Filament 3 / Livewire / Vue / React flow — they reference classes that no longer exist.

The two core tables (seo_meta, seo_defaults) are schema-compatible; your data survives the upgrade.

4. Removed features and where they went

v1 featureWhere it lives now
Filament SEO form sectionrankbeam/laravel-seo-filament (free, MIT)
Content analyzer (32 rules)The old analyzer is not carried forward by this migration. Technical-SEO issue detection lives in rankbeam/laravel-seo-pro's site scanner; the numeric SEO score is a Pro feature (issue-derived).
Sitewide scannerrankbeam/laravel-seo-pro — queued pipeline + dashboard
Redirect managerrankbeam/laravel-seo-pro — hardened (regex validation, open-redirect guards)
404 monitorrankbeam/laravel-seo-pro — privacy-first (no IPs stored by default)
GA4 analytics, internal linksrankbeam/laravel-seo-pro backlog
seo:install installerGone — install is require, publish config, migrate

5. Behavior changes to review

  • og:image / twitter:image are always absolute URLs. v1 emitted manually-set relative paths verbatim.
  • Derived canonicals strip the query string. Explicit canonicals are preserved verbatim.
  • Sitemap auto-discovery defers to registered sources — no more duplicate sitemap-post.xml next to a registered sitemap-posts.xml.
  • JSON-LD is JSON_HEX_*-escaped — if you post-process raw script output, expect <-style escapes.

6. Known gotchas

  • Laravel's default DatabaseSeeder uses WithoutModelEvents, which disables HasSEO's auto-create hook in seeders.
  • If a route-default title template already contains your brand, end the template with the configured title_suffix — the resolver then skips appending it again.

rankbeam/laravel-seo is released under the MIT License.