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

Filament Seo Laravel Package

digit7s/filament-seo

digit7s/filament-seo brings SEO management into Filament admin panels, letting you add editable meta titles, descriptions, and social sharing tags to your resources so content teams can tune search snippets without touching code. Lightweight and simple to drop into existing resources.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Architecture fit. The package follows conventional Laravel package anatomy: a service provider, publishable config and migrations, an Eloquent model with a polymorphic relation, Filament 5 schema/infolist/table components, and a Blade component for output. That is the correct decomposition for a Filament add-on and it keeps concerns separated — storage (polymorphic SEO table), authoring (Filament fields/tabs), presentation (Blade renderer). The frontend renderer being opt-in and explicitly placed is a deliberate and defensible choice: it avoids the common failure mode of SEO packages that inject tags globally and collide with existing <head> output.

Integration feasibility. Mechanically trivial — three artisan commands and a composer require. The gate is the runtime matrix: PHP 8.4+, Laravel 13, Filament 5. This is bleeding-edge. Any estate on Laravel 11/12 or Filament 3/4 cannot adopt without a framework upgrade, so feasibility is conditional on already being on that stack rather than a general-purpose option. The polymorphic relation means adoption is additive per model — you can attach SEO to one content type without touching others.

Technical risk.

  • Version maturity: 0.1.0 signals no backward-compatibility promise. Expect breaking changes in 0.x minors.
  • Vendor concentration: single-vendor (Digit7s), no stated support model, no visible CI/test signal in the release notes. Mitigated somewhat by small surface area — a fork is realistic.
  • Migration ownership transfer: publishing migrations moves schema control into the application. Good for auditability, awkward for upgrades — future package migration changes must be hand-reconciled against the published copy.
  • Scope ceiling: no JSON-LD, no sitemap, no hreflang, no crawl/rank measurement, no metadata translation. This is a meta-tag authoring and rendering tool, not an SEO platform. Rich-result eligibility (Article, Product, FAQ, Breadcrumb) is out of reach without building structured data yourself.
  • Localization gap: UI is translated to English/Myanmar/Thai, which hints at a multilingual target market — but stored metadata is not localized. Multi-locale SEO likely requires per-locale rows or a schema extension, and the release notes don't confirm whether the schema supports that.
  • Silent-omission semantics: "safe omission of unsupported or missing image values" is right for escaping/XSS, but it means misconfiguration degrades to no tag rather than an error. SEO regressions become invisible in production.

Key questions.

  1. Does the SEO table support one record per model per locale, or one per model? Any unique constraint?
  2. Is there a fallback chain (model attribute → SEO record → config default), or is the component all-or-nothing?
  3. Does the Blade component deduplicate against tags the application already emits, or will placement alongside an existing <title>/og:* produce duplicates?
  4. Are canonical and robots validated (absolute URL, allowlisted directives), or passed through as free text?
  5. What does the "score" column actually compute, is the algorithm documented, and is it exposed programmatically?
  6. Is there an authorization/policy hook governing who may edit SEO metadata in Filament?
  7. Are there tests/CI, and what is the maintainer's response expectation on issues?
  8. Does it conflict with or duplicate spatie/laravel-seo or similar, and can both coexist?
  9. Is Filament 5 a hard requirement or just the tested target?

Integration Approach

Stack fit. Adopt only if the target application is already on Laravel 13 / Filament 5 / PHP 8.4. Otherwise this is a blocked-on-upgrade item, not an integration task; treat it as a signal to revisit after the platform upgrade lands. Where the stack does fit, the package is a low-ceremony fit for Filament-administered content models.

Migration path. Greenfield adoption — no data migration required. The only schema change is one additive polymorphic table plus indexes. Rollback is clean: remove the composer dependency, drop the table, delete the published config. Note the migration is published, not loaded from the package, so it becomes our schema and our responsibility to review before running.

Compatibility. Pin to the exact patch (0.1.0) rather than the floating ^0.1 shown in the README, and commit the lockfile. Wrap usage behind our own layout partial and a thin internal presenter/accessor so the rendering layer is swappable — this decouples us from the component's tag output shape and from 0.x churn. Treat the published config and migration as forked artifacts and record the origin version in a comment.

Sequencing.

  1. Spike in a scratch branch on a real Laravel 13 / Filament 5 app: publish, migrate, attach to one model, render into a layout head, inspect output for duplicates and escaping.
  2. Resolve the locale question before rollout — retrofitting per-locale metadata after editors have populated single-locale records is expensive.
  3. Decide and document the single-emitter policy: exactly one place in the layout emits SEO tags, and it is this component.
  4. Pilot on one low-risk content type (e.g., CMS pages) behind a feature flag; validate with a crawler/rich-results check and a tag-diff against the current head output.
  5. Expand to remaining models with eager-loaded relations.
  6. In parallel, evaluate the build-vs-buy alternative (spatie/laravel-seo plus hand-rolled Filament fields) — the delta may be small enough that owning ~200 lines beats a pre-1.0 dependency.

Operational Impact

Maintenance. Low ongoing effort but non-zero and forced: the hard version floors (PHP 8.4 / Laravel 13 / Filament 5) mean every future framework major is a potential package-blocking event, and a 0.x package can break on minor bumps. Budget a small recurring line item for dependency tracking, plus a realistic possibility of maintaining a fork. Small codebase makes forking cheap — decide the fork policy now rather than during an incident.

Support. No published SLA; GitHub issues are the only channel. Escalation is effectively "vendor it and patch it ourselves." Confirm there is at least one named maintainer with recent activity before committing, and record that finding.

Scaling. Runtime cost is negligible: one indexed polymorphic lookup per rendered page, plus public-disk URL validation on image fields. Watch for N+1 only in list/index views that render many models per request — eager-load the morph relation. Table growth is one row per model (or per model × locale) and will never be a concern. The Blade component runs in the request path for every page, so keep it out of any hot loop that re-renders heads.

Failure modes.

  • Silent degradation: missing or invalid metadata emits nothing. Good for safety, bad for observability — add a smoke test or scheduled crawl that asserts the presence of title/description on key URLs.
  • Duplicate tags: if the app already emits <title> or og:* outside the component, output will double up and may be ignored or misparsed by crawlers. Enforce the single-emitter policy in code review.
  • Lost OG image: invalid/unavailable public-disk path is dropped without warning; validate at save time in Filament, not just at render time.
  • Framework upgrade blockage: a Laravel 14 or Filament 6 upgrade could stall on this dependency. Track it in the upgrade runbook.
  • Migration drift: published migration diverging from the package's current version on later releases; requires manual diff on every bump.
  • Expectation mismatch: the "score" column will be read by editors as a ranking or quality signal. Brief content editors explicitly on what it does and does not measure.

Ramp-up. Low for anyone fluent in Filament — the patterns (schema components, infolist section, table column, publishable config) are idiomatic. Estimate half a day for the spike, one to two days to integrate, document, and pilot on a single content type. The real learning is not the API but the two policy decisions it forces: where tags are emitted, and how localized metadata is modeled. Both should be settled before the second content type is onboarded.

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.
adachsoft/changelog-linter
adachsoft/collection
payerurl/telegrambot-crypto-payment-instant-payout
dskripchenko/laravel-hybrid-search
riorizkyrainey/lara-ced
mehedimi/static-vel
zharp/zharp
nonsapiens/bigquery-model-sync
lgu-bayambang-ict-office/lgu-laravel-development-standards
andydefer/laravel-support
se7enxweb/flysystem
lampwick/laravel
jeslage/statamic-emojis
micahdshackelford/rmap-laravel
draftsmaninc/draftsman
square-bit/laravel-volition
himito/laravel-mailman
htinlynn/genius-helper
maco-studios/hephaestus
elmogy/larafast