Laravel Vitals v1.3
Star Install
Changelog

Releases

Versioned with semver. The 1.x line will receive non-breaking changes only — breaking changes go to 2.x with a migration guide. Subscribe to the RSS feed or watch the GitHub releases.

feature
v1.3.0
July 26, 2026

MCP server + database index advisor

Two features that make Vitals act on your app: an MCP server so AI agents can read and run audits, and a database index advisor that turns captured slow queries into ready-to-paste index migrations.

MCP server for AI agents
  • · A built-in [Model Context Protocol](https://modelcontextprotocol.io) server (vitals), powered by laravel/mcp, with three tools: latest_audit (scores, Core Web Vitals, backend telemetry), list_recommendations (prioritised findings with their file:line references), and run_audit.
  • · Registered automatically as a local stdio server; opt into an HTTP endpoint with vitals.mcp.web_route. Configure under vitals.mcp. _laravel/mcp is pre-1.0; the tool surface may evolve with it._
Database index advisor
  • · Reads the slow queries backend telemetry already captures, statically parses the columns each one filters / joins / sorts on, and emits a missing-index recommendation with a paste-ready Schema::table(...)->index(...) migration.
  • · Static and advisory by design — it never runs the captured SQL, never applies a migration, skips the package's own vitals_* tables, and validates against the live schema so parser guesses can't produce false suggestions. Toggle with VITALS_DB_ADVISOR_ENABLED.
feature
v1.2.0
July 26, 2026

Agent readiness

A new "Agent readiness" category in the SEO check engine (8 checks, 30 total) that measures whether AI agents can read and operate your pages — aligned with Lighthouse agentic-browsing and Cloudflare agent-ready.

Static checks (any driver)
  • · llms.txt present and well-formed, AI bots allowed in robots.txt, sitemap discoverable, accessible names on interactive elements, and layout stability (CLS).
  • · They surface as their own section on /vitals/audits/{id}/seo and in the /vitals/seo category filter, with low weights so an emerging-web miss never distorts your SEO score.
WebMCP via the Playwright driver
  • · Detects declarative and imperative WebMCP tool exposure in a live browser session — tools available, forms exposing declarative WebMCP, and tools declaring an input schema.
  • · The probe runs in an isolated context after the audit, so it can never alter the Lighthouse result; on other drivers these checks pass with a "not measured" note.
Configuration
  • · Toggle the group with VITALS_SEO_AGENTIC_ENABLED=false, or per-check via vitals.seo.disabled_checks. Thresholds and the AI-bot list live under vitals.seo.agentic.
patch
v1.1.1
June 16, 2026

PostgreSQL hardening

Driver-portability fixes surfaced by the new PostgreSQL CI lane.

Fixed
  • · The public status page no longer crashes on PostgreSQL — the uptime calculation was rewritten to COUNT(DISTINCT DATE(...)), which also fixes a latent active-days miscount.
  • · Audit detail pages and the JSON API now return 404 (not 500) for malformed ids across every database driver.
patch
v1.1.0
June 16, 2026

PostgreSQL in CI

PostgreSQL is now a first-class, CI-covered database driver.

Fixed
  • · The cross-URL SEO overview no longer crashes on PostgreSQL — the MAX(uuid) aggregation was replaced with a PHP-side reduction over eager-loaded recommendations (one fewer query, fully portable).
Added
  • · A dedicated Postgres CI lane runs the full Pest suite against postgres:16, so driver-specific issues are caught before release.
stable
v1.0.0
May 22, 2026

First stable release

A Laravel-native performance audit dashboard built on Livewire 4 + Flux Free 2 + Tailwind 4, with full support for Laravel 11 / 12 / 13.

Audit drivers
  • · Lighthouse audits with four interchangeable drivers (local, playwright, pagespeed, stub). Each returns Performance / Accessibility / Best Practices / SEO scores plus raw metric values (LCP, INP, CLS, TTFB, FCP, TBT, Speed Index).
  • · Backend telemetry — query count, query time, N+1 suspicion, peak memory, views rendered, jobs dispatched, events fired, cache hits/misses. Sampled via a signed X-Vitals-Audit-Id header so production traffic is never affected.
  • · Code analysis — static scanners attach exact file:line references to Lighthouse findings by reading Blade views, Vite config, and composer.json.
Surfaces
  • · /vitals — overview with health snapshot and sparkline trends across all monitored URLs.
  • · /vitals/urls and /vitals/urls/{id} — per-URL detail with audit history, average scores, period filter, and metric toggle.
  • · /vitals/audits/{id} — full audit detail with score gauges, Core Web Vitals cards, front-end ↔ back-end breakdown, severity-tinted recommendations.
  • · /vitals/issues — top issues, regressions, and all recommendations grouped by audit key.
  • · /vitals/seo — cross-URL SEO overview with custom check breakdown, top failing checks, and category filter.
  • · /vitals/rum — Real User Monitoring with INP attribution (element + event type).
  • · /vitals/queries — per-route query baselines with N+1 surfacing and repeated SQL patterns.
  • · /vitals/learn — knowledge base of every detectable issue, browsable by category with code snippets.
  • · /vitals/budgets — per-metric thresholds with violation history.
  • · Spotlight (Cmd/Ctrl+K) — global search across audits, URLs, recommendations, and learn entries.
SEO checks subsystem
  • · 22 checks aligned with Google's 2026 best practices — Configuration (3), Content (5), Meta (7), Performance (7).
  • · The Audit::vitals_seo_score accessor blends Lighthouse SEO (50%) with the weighted custom-check pass rate (50%), producing a stricter 0–100 score.
Real User Monitoring
  • · @vitalsRum Blade directive — lightweight (~11 KB, gzip ~4 KB), uses web-vitals v4 with attribution data.
  • · Privacy-respecting: no IP storage, no fingerprinting.
  • · INP attribution: extracts the slowest interaction's target selector + event type so you can fix the right element.
Developer affordances
  • · Open in editor — 11 editor presets (VSCode, Cursor, PHPStorm, IntelliJ IDEA, Sublime Text, Atom, TextMate, MacVim, Emacs, Nova, Zed). Custom templates via VITALS_EDITOR_URL_TEMPLATE.
  • · JSON API v1 — /vitals/api/v1/{audits,urls,recommendations} with pagination, date filtering, and viewVitals Gate-protected access.
  • · Demo seeder — php artisan vitals:demo populates synthetic data so the dashboard is explorable before any real audits run.
Notifications
  • · Email + Slack channels for Regression Detected and Budget Violated events.
  • · Slack messages thread per URL — subsequent regressions reply to the original post.
i18n
  • · Full UI in EN, FR, DE, ES — ~1100 translation strings across pages, components, recommendations, SEO check titles/descriptions/hints, and tooltips.
Theme
  • · OKLCH-native palette with rose accent and tinted-neutral ink scale.
  • · Self-hosted Geist Sans + Geist Mono via @fontsource-variable.
  • · Light + dark mode driven by a .dark class on <html>, persisted via the navbar toggle.
Tests
  • · 550+ Pest tests (unit + feature + integration) covering audit pipelines, SEO checks, Livewire components, JSON API, notifications, telemetry capture, and budget evaluation. PHPStan level max, no baseline.