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 Sitemap Laravel Package

3x1io/filament-sitemap

Filament Sitemap by 3x1io generates and manages XML sitemaps directly from your Filament admin panel. Register models or custom URLs, configure priorities and update frequencies, and serve search-engine-ready sitemap files with ease. Built for Laravel and Filament SEO workflows.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Architecture fit: 3x1io/filament-sitemap is a Filament panel plugin that adds sitemap generation and management to the admin surface, persisting configuration through spatie/laravel-settings. Architecturally it is a thin, additive layer: it registers via the Filament plugin contract, ships publishable config and migrations, and sits alongside rather than inside core application code. That is a low-coupling shape, which is favourable — but it also means the package owns a database table and a settings repository, so it is not purely stateless tooling.

Integration feasibility: Straightforward for a team already on Filament v3 + Laravel 10/11. The work is composer install, vendor:publish for config and migrations, php artisan migrate, and registering the plugin in the relevant panel provider. v1.0.1 materially improves this path: the new migration-publish option with an explicit timestamp avoids a collision with spatie/laravel-settings migrations, which was the most likely first-install failure and the kind of error that erodes confidence in an admin plugin during a trial.

Technical risk: Moderate, concentrated in maturity rather than complexity:

  • Version 1.0.x with a single-maintainer provenance (3x1io) and a first external contribution landing in this very release. Bus-factor risk is real.
  • Hard runtime dependency on both Filament and spatie/laravel-settings; the package's version constraints must be reconciled against whatever Filament and Settings versions the host app already pins.
  • The migration-timestamp fix suggests the package previously had an install-order hazard. That it was found and fixed quickly is positive; that it existed at 1.0.0 is a signal about test coverage on fresh installs.
  • The v1.0.1 config toggle to hide the settings hint indicates UI-level rough edges are still being sanded down — cosmetic, but indicative of early-stage polish.

Key questions (the release notes alone do not answer these, and no repository metadata was supplied):

  1. Supported version matrix — Laravel 10/11/12, Filament v3 vs v4, PHP 8.1+? This determines whether the package is viable at all for a given product.
  2. Does it support a sitemap index with chunked child sitemaps, or only a single flat sitemap.xml? This is the difference between usable at 5k URLs and unusable at 500k.
  3. Is generation synchronous on request, artisan-invoked, or schedulable/queueable? Only the latter two are production-viable.
  4. Multi-panel and multi-domain/multi-locale support — one sitemap per panel, per domain, and hreflang alternates?
  5. Where does the generated XML live — public disk, storage with a route, or generated on the fly? Affects caching, CDN, and permissions.
  6. Is robots.txt emission handled, and is there any exclusion/noindex handling for unpublished or draft content?
  7. What is the test suite and CI posture? No evidence in the release notes.

Integration Approach

Stack fit: Good for the specific target — a Laravel application whose admin is Filament. Poor fit for non-Filament Laravel apps (you would be pulling in the entire Filament dependency tree for a sitemap generator, which is not justifiable) and irrelevant to non-Laravel stacks.

Migration path: This is a greenfield install, not a migration — there is no incumbent to displace unless the team is currently hand-rolling a sitemap route. The practical migration is: replace any bespoke Route::get('/sitemap.xml', ...) closure with the plugin, reconcile the URL set for parity (including any editorial exclusions currently encoded in that closure), and confirm search-engine submission still resolves to the same path so previously indexed sitemap URLs do not 404.

Compatibility: The gating check is composer why-not against the host's Filament and spatie/laravel-settings versions before committing. Because v1.0.1 is explicitly coupled to spatie-laravel-settings migration behaviour, pin the exact patch version in composer.json rather than floating a ^1.0 constraint, and re-verify on every bump during the first few months.

Sequencing:

  1. Spike (≤1 day): install on a branch, publish config and migrations using the new timestamped publish option, migrate, register the plugin on a non-production panel, and generate against a realistic content volume.
  2. Validate the unknowns: answer the chunking/index, scheduling, and multi-domain questions above from the spike rather than from documentation.
  3. Design the generation trigger: decide between scheduler-driven regeneration and on-publish event regeneration; do not ship request-time generation.
  4. Roll out to staging, diff the generated URL set against the current sitemap, and confirm parity plus intentional deltas.
  5. Production, with the plugin registered on the intended panel only, and search-engine consoles re-verified.

Operational Impact

Maintenance: Low ongoing code maintenance, but non-trivial upgrade-watch burden. A single-maintainer 1.0.x package with a dependency on the Filament release cadence will require re-validation at each Filament major. Budget a recurring line item for that; treat the pin as deliberate rather than as neglect. The presence of an external contributor in this release is mildly reassuring on project health but is one data point.

Support: GitHub issues only, no commercial backing. Escalation path is "fork it" — acceptable for a small, readable plugin, unacceptable if sitemap generation becomes business-critical for a large catalogue. Mitigate by keeping the generated output path and URL-set definition independent of the package's internals, so a fork or replacement is a contained swap.

Scaling: The dominant risk. Sitemap generation cost scales with published-entity count, and the package's chunking/index behaviour is unverified. At low volume (hundreds to low thousands of URLs) this is a non-issue. Above roughly 50k URLs, treat the absence of a confirmed sitemap-index implementation as a blocker and either validate it in the spike or plan to generate child sitemaps yourself and let the plugin manage only the index. Watch memory ceiling and query count on full regeneration; whatever the mechanism, it should run out-of-band.

Failure modes:

  • Install-time: migration name collision with spatie/laravel-settings — the v1.0.1 timestamped publish option addresses this, and the publish step must use it consistently across environments, including fresh CI databases.
  • Staleness: if regeneration is scheduler-driven and the scheduler is not monitored, the sitemap silently ages. Emit a metric on last-generated timestamp and alert on breach.
  • Scale: memory exhaustion or timeout on large datasets during regeneration, most likely to surface in production at first full run rather than in testing.
  • Dependency skew: a Filament upgrade breaks plugin registration or the settings page; the symptom is an admin panel that fails to boot, which is high-blast-radius for a sitemap feature. Register on a single panel and cover panel boot with an existing smoke test so this fails loudly in CI, not in production.
  • Cosmetic: the settings hint is now hideable via config — low impact, but worth setting to reduce admin confusion.

Ramp-up: Minimal for any developer already fluent in Filament plugin registration and Laravel settings packages — an afternoon, most of it spent on the spike in step 1. Developers without Filament familiarity should not be the ones integrating it. Document the chosen generation trigger, the publish flags used, and the pinned version in the team's integration notes; that record is what makes the eventual upgrade or fork cheap.

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.
skyraptor/chatter
edlugz/sasapay
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