The one-line version
- Stay on Laravel 12 (for now) if you are stable on PHP 8.2, your UI stack is already chosen, and you do not need first-party AI, JSON:API resources, or database-level vector similarity this quarter.
- Prioritize Laravel 13 if you need those capabilities inside the framework’s supported path, want the extended security window, or are already moving to PHP 8.3+ anyway.
- Greenfield with a new frontend kit? Laravel 12’s starter-kit story may still influence how you scaffold—but the runtime and package floor for new work should align with where Laravel itself is headed (PHP 8.3+ on 13).
For a feature-by-feature tour of Laravel 13, see What’s New in Laravel 13 for Modern SaaS and Custom CMS Projects.
What Laravel 12 actually delivered
Laravel 12 shipped on February 24, 2025, supporting PHP 8.2 through 8.5. Official policy: bug fixes until August 13, 2026 and security fixes until February 24, 2027.
Framework marketing called it a relatively minor “maintenance release”: refresh dependencies, keep upgrades boring, avoid rewriting working apps. The standout product change was new application starter kits for React, Svelte, Vue, and Livewire—React/Svelte/Vue paths use Inertia 2, TypeScript, shadcn/ui, and Tailwind; Livewire kits use the Tailwind-based Flux UI library and Laravel Volt. Each flow still leans on Laravel’s built-in authentication for login, registration, password reset, and email verification.
Laravel 12 also introduced WorkOS AuthKit-powered variants of those kits, adding social login, passkeys, and SSO—with WorkOS offering free auth for applications up to one million monthly active users. Finally, Laravel Breeze and Jetstream are no longer receiving updates, so new projects are nudged toward the modern kit stack rather than those older scaffolds.
Real-world takeaway: if your “upgrade pain” was mostly starting a polished SPA or Livewire admin, Laravel 12 was the release that paid rent. If your app is years old with bespoke Blade, APIs, and queues, you may have upgraded to 12 almost transparently—and noticed little beyond fewer dependency surprises.
What Laravel 13 adds that 12 does not package the same way
Laravel 13 arrived on March 17, 2026, targets PHP 8.3–8.5, and requires PHP 8.3 minimum. Support runs longer than 12’s: bug fixes into Q3 2027 and security fixes until March 17, 2028 per the official support table.
Capability-wise, 13 is where Laravel leans into AI-native workflows and stricter HTTP defaults without forcing a rewrite:
- Laravel AI SDK — first-party, provider-agnostic primitives for text, agents/tooling, embeddings, audio, images, and vector-store integrations.
- JSON:API resources — spec-oriented serialization (relationships, sparse fieldsets, headers) for public and partner APIs.
- Semantic / vector search — query-builder support for similarity against embeddings, documented alongside PostgreSQL and
pgvector. Queue::route()— central routing of jobs to connections/queues by class.- Expanded PHP attributes — more declarative middleware, authorization, job retry/backoff/timeout controls, and coverage across Eloquent, events, notifications, validation, testing, and resources.
Cache::touch()— extend TTL without read/write churn on large cached payloads.PreventRequestForgery— evolved CSRF middleware with origin-aware checks layered on token-based protection.
None of that replaces Laravel 12’s starter kits—you can run 13 with whatever frontend you already committed to. The upgrade matters most when those 13-specific primitives replace custom glue you were about to write and maintain yourself.
Ranked: which upgrade moves the needle in production
Not every team should rank features the same way. This ordering reflects typical brownfield SaaS and API-heavy apps—adjust if you are mostly content sites or internal CRUD.
- PHP 8.3+ and security timeline — If compliance or platform vendors push you off 8.2, Laravel 13’s floor matches reality. The longer security window also matters when you cannot redeploy every quarter.
- JSON:API resources — If customers integrate against your REST surface, spec compliance reduces support tickets and client-specific hacks. This is often a product win, not a cosmetic refactor.
- Vector / semantic search — If “search” is becoming RAG, help-center quality, or media discovery, first-party query support beats ad-hoc SQL and mystery extensions—assuming Postgres/pgvector fits your architecture.
- Laravel AI SDK — High leverage when you are standardizing multiple AI features behind one Laravel-native abstraction; lower urgency if you already run a dedicated inference service you trust.
-
Queue::route()+ job attributes — Operational wins scale with team size and job cardinality; small apps may barely feel the change. -
Cache::touch()— Niche but valuable for large cached fragments, rate windows, and “keep-alive” keys. - Hardened CSRF story — Everyone benefits on upgrade, but the work shows up in QA around cross-origin dashboards and exotic embeds.
Laravel 12’s upgrade still matters—just to a different audience
If you are bootstrapping a new UI-heavy product in 2025–2026, Laravel 12’s starter kits and WorkOS-backed auth can shave weeks off time-to-login and time-to-settings-screens. That is a legitimate reason to standardize on 12 temporarily—then plan PHP and framework moves once your deployment story stabilizes.
If you are maintaining a mature API with mobile clients, webhooks, and background processors, Laravel 12’s headline features may have felt invisible. For that profile, Laravel 13 is the more meaningful jump because it targets the seams where complexity accumulates: AI, search, serialization, queues, and HTTP security.
A sane migration path
In the field, the least drama follows this sequence:
- Upgrade PHP to 8.3+ in staging and workers first; fix extensions and deprecations.
- Move Laravel 12 → 13 using the official upgrade guide; lean on tests around auth, queues, and custom middleware.
- Roll out one major feature slice (for example JSON:API for a new API version, or vector search on a non-critical index) rather than flipping every subsystem at once.
- Watch CSRF-sensitive flows and cross-origin admin tools after deploying
PreventRequestForgery.
Major-version churn is cheap only when your observability and test pyramid are honest. Laravel 12 and 13 both promise fast upgrades—your app’s hidden coupling still sets the real schedule.