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.
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:
1.0.x with a single-maintainer provenance (3x1io) and a first external contribution landing in this very release. Bus-factor risk is real.spatie/laravel-settings; the package's version constraints must be reconciled against whatever Filament and Settings versions the host app already pins.1.0.0 is a signal about test coverage on fresh installs.Key questions (the release notes alone do not answer these, and no repository metadata was supplied):
sitemap.xml? This is the difference between usable at 5k URLs and unusable at 500k.robots.txt emission handled, and is there any exclusion/noindex handling for unpublished or draft content?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:
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:
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.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.
How can I help you explore Laravel packages today?