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

vormkracht10/laravel-seo-scanner

Scan any Laravel site for SEO issues with a single Artisan command. laravel-seo-scanner checks titles, meta descriptions, headings, images, internal links and more, flagging problems in a clear report so you can fix them fast and improve rankings. Configurable checks make it easy to tailor.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Architecture fit

  • backstagephp/laravel-seo-scanner is a Laravel-native package that slots into the existing service-provider/config/queue conventions, so it aligns with a standard Laravel app architecture rather than requiring a parallel stack.
  • v5.22.0 reinforces a batch-oriented architecture: work is chunked into queued jobs, checks are executed per-page, and results are aggregated. This is the right shape for a TPM framing it as a scheduled, asynchronous audit pipeline rather than a synchronous request-time feature.
  • The new SPA rendering capability (PR #128) extends the architecture from "fetch HTML and parse" to "optionally render JavaScript before parsing," which introduces a browser-automation runtime into the deployment topology. That is an architectural addition, not just a code change.

Integration feasibility

  • Low-to-moderate effort for the core scanner: install, publish config, configure queue connection, and schedule the scan command. No data-model migration expected beyond the package's own published migrations.
  • The SPA mode is the only meaningful new integration ask. It implies a headless browser runtime (Node/Chromium) available to the worker fleet, with a documented "safe fallback" when rendering is unavailable. That fallback is the key de-risking detail — it means a partial or failed render degrades to static HTML parsing rather than hard-failing the scan.
  • Dependency bumps (actions/checkout 6→7, actions/cache 5→6) are CI-only and have no bearing on consuming applications.

Technical risk

  • Residual risk: low for the patch-level fixes. Failure isolation (#122) and throttle-aware retries (#124) are strictly risk-reducing. Prior to #122, a single malformed page could abort an entire scan — a real reliability defect now closed.
  • Residual risk: moderate for SPA mode. Headless rendering brings non-determinism: variable render timing, memory pressure on workers, and site-specific JS behaviour. The safe fallback materially caps the blast radius but does not eliminate slow-scan or worker-saturation risk.
  • Retry semantics change (#124) means throttled chunk jobs will now retry rather than exhaust MaxAttempts. This is correct behaviour but alters queue timing characteristics — scans will take longer under throttling instead of failing fast. Worth flagging to anyone with tight scan windows.
  • Observability gap: the hermetic test suite (#125) improves CI confidence but tells us nothing about production signal. Confirm the package surfaces per-check failure detail so isolation failures are visible rather than silently swallowed.

Key questions

  • What is the exact headless browser dependency for SPA mode, and is it optional/opt-in via config?
  • Does the failure-isolation fix emit a structured event or log per failed check, and is that consumable for alerting?
  • How is the JS render timeout configured, and what is the default?
  • Are throttling parameters and retry counts surfaced in config, or are they hard-coded?
  • Is v5.22.0 backward compatible with v5.21.0 config and published migrations?
  • What is the maintainer's release cadence and issue-response history, and is the project single-maintainer?

Integration Approach

Stack fit

  • Fits a conventional Laravel stack: PHP 8.x, Laravel service provider auto-discovery, database-backed result storage, and the application's existing queue driver (Redis, SQS, or database).
  • Queue-backed execution means no new infrastructure for the base scanner. SPA mode is the sole delta — it requires a worker image capable of running the headless browser, or a dedicated queue/worker pool.

Migration path

  • Treat as a drop-in minor upgrade from v5.21.x. No breaking changes advertised in the release notes; semver-consistent.
  • Recommended sequence: (1) upgrade and run the existing scan against a staging target to confirm parity, (2) enable the failure-isolation and retry fixes implicitly (no config change), (3) pilot SPA mode against a single known SPA route with the fallback confirmed working, (4) roll out SPA mode per-target.
  • If a dedicated SPA worker pool is introduced, keep it on a separate queue name so headless rendering cannot starve the standard scan queue.

Compatibility

  • No PHP/Laravel version constraints changed in this release. CI workflow bumps are internal.
  • SPA mode introduces an environment-level compatibility requirement (browser binary present, sufficient memory) that should be validated in the deployment image before enabling.
  • The retry-on-throttle change may interact with any application-level job timeout or retry_after settings on the queue — verify retry_after exceeds expected job duration now that retries are more likely.

Sequencing

  1. Upgrade package; verify migrations and config publish are unchanged.
  2. Validate scan parity on a representative site in staging.
  3. Enable per-target SPA mode behind config, starting with one low-risk target.
  4. Confirm failure isolation produces visible per-check telemetry.
  5. Confirm throttled scans complete within the scheduled window; adjust chunk size/throttle or window if not.
  6. Roll out broadly; document the fallback behaviour in the runbook.

Operational Impact

Maintenance

  • Low steady-state maintenance for the base scanner: routine minor upgrades and dependabot-driven CI bumps, which the maintainer is clearly absorbing.
  • SPA mode adds ongoing maintenance: browser binary version pinning, image rebuilds, and periodic validation that rendering still works against target sites as they change their front-end.
  • The hermetic test suite is a genuine operational positive — it means the project's own CI is no longer dependent on live network conditions, which reduces false-negative noise when evaluating candidate upgrades.

Support

  • Single-maintainer project (@Baspa) with a small contributor base. Bus factor is the primary support risk; mitigate by pinning versions and avoiding deep customisation of internals.
  • Release notes are clear and PR-linked, which supports self-service triage. No formal LTS or enterprise support should be assumed.
  • The SPA rendering feature is new in this release — expect limited field-hardening and a higher likelihood of follow-up patches in the next minor versions.

Scaling

  • Scan cost scales with page count × checks per page. Chunked queued jobs make this horizontally scalable by adding workers.
  • Throttling is the deliberate counterweight to scale — it protects target sites from being hammered. Post-#124, throttling produces retries rather than failures, so throughput is bounded by throttle settings, not worker count alone.
  • SPA mode multiplies per-page cost significantly (browser launch, render wait, memory per worker). Size this separately: expect fewer concurrent SPA checks per worker than static checks, and plan worker memory accordingly.

Failure modes

  • Isolated check failure (post-#122): logged/skipped, scan continues. Desired.
  • Page-level failure: should be contained to that page's result set. Verify this is the actual scope of the isolation fix.
  • Throttle saturation: jobs retry; scan duration extends. Risk is window overrun rather than data loss.
  • MaxAttempts exhaustion under sustained throttling: still possible if retries are capped — confirm cap and alerting.
  • JS render timeout / browser crash: falls back to static HTML per the safe-fallback design; scan result may be incomplete for SPA targets without an obvious error. Needs explicit surfacing.
  • Worker memory exhaustion from headless browser: hard failure of the worker; mitigate with isolated pool and memory limits.

Ramp-up

  • Base scanner: low — a Laravel developer can install, schedule, and interpret results within a day.
  • SPA mode: moderate — requires someone comfortable with headless browser ops, worker image management, and queue tuning.
  • Recommend a short internal spike (1–2 days) validating SPA mode against one real SPA target before committing to it in the roadmap. That spike also answers most of the open configuration questions above.
  • Overall recommendation: adopt v5.22.0 for the reliability fixes now; treat SPA mode as a separately-sequenced, opt-in capability pending the spike.
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.
gmostafa/php-graphql-client
xeviant/paystack
snowsoft/faker
meditationsteps/blogetc
animalyoung/laravel-influxdb
onix-solutions/sms-telera
lonely-lights/prosetta
oxygen/data
oxygen/core
jengo/base
xiloryx/log-collector
a21ns1g4ts/filament-stripe
la-php/laravel-admin
artisan-build/community-prompts
vleroy/smart
ayles-software/laravel-australian-public-holidays
cboxdk/laravel-id-spatie
cboxdk/laravel-id-billing
cboxdk/laravel-id-billing-bridge
simple-as-fuck/php-performance-log