
6 minutes read
Laravel 12: new starter kits, some breaking changes, and upgrade tips
Table of contents
Introduction
I first published this piece to track what might land in Laravel 12. Now that Laravel 12 shipped on February 24, 2025, I have refreshed the post to cover what actually changed, how long it is supported, and a quick path to upgrade. If you maintain a Laravel 11 application or you are starting a new project, this guide is for you. See the official Laravel 12 Release Notes for the canonical summary.
Release date and support policy
Laravel 12 was released on February 24, 2025. Laravel 11 supports PHP 8.2–8.4 and receives bug fixes until September 3, 2025, and security fixes until March 12, 2026. Laravel 12 supports PHP 8.2–8.4 and receives bug fixes until August 13, 2026, and security fixes until February 24, 2027. Modern, non‑LTS releases receive 18 months of bug fixes and two years of security fixes.
Version | PHP | Release | Bug Fixes Until | Security Fixes Until |
---|---|---|---|---|
11 | 8.2–8.4 | March 12, 2024 | September 3, 2025 | March 12, 2026 |
12 | 8.2–8.4 | February 24, 2025 | August 13, 2026 | February 24, 2027 |
Note: The last LTS release was Laravel 6. LTS policy details remain documented on the Laravel 6 page.
What’s new in Laravel 12
Laravel 12 focuses on quality of life, clear defaults, and a modern application start. Here are the headline features I think most teams will care about.
New starter kits, plus an AuthKit variant
Laravel 12 introduces official starter kits for React, Vue, and Livewire. The React and Vue kits use Inertia 2, TypeScript, Tailwind, and shadcn UI. The Livewire kit uses Flux UI and Laravel Volt. Each kit can also be generated in a WorkOS AuthKit variant that includes social login, passkeys, and SSO. Breeze and Jetstream are no longer receiving additional updates. For guidance and options, see the Starter Kits documentation.
What to do: choose the kit that matches your team’s stack. Pick React or Vue if you want an SPA‑style experience through Inertia, or Livewire if you prefer Blade‑first development.
UUIDv7 by default in HasUuids
Models that use the HasUuids
trait now generate ordered UUIDv7 identifiers by default. If you need to keep UUIDv4, import and alias the provided trait to preserve your existing signatures:
use Illuminate\Database\Eloquent\Concerns\HasUuids; use Illuminate\Database\Eloquent\Concerns\HasVersion4Uuids as HasUuids;
See the Laravel 12 Upgrade Guide for details.
Carbon 3 requirement
Laravel 12 requires Carbon 3, which replaces Carbon 2 in the framework’s dependencies. Most apps will not need code changes, but verify any direct Carbon APIs your app uses. See the Upgrade Guide.
PHP 8.4 support
Laravel 12 supports PHP 8.2 through 8.4 and aims for minimal breaking changes. If you are on PHP 8.2 or 8.3 today, upgrade your runtime when convenient. Reference the Support Policy table.
xxHash replaces md5 in internal paths
Key internal hashing paths have moved from md5 to xxHash for better performance. This is an internal framework improvement and should not require changes in application code. See the 12.x changelog.
Other noteworthy changes
- MariaDB schema dump now uses MariaDB‑native CLI tools (
mariadb-dump
andmariadb
) for better compatibility, and the unsupported--column-statistics
flag is not used when dumping for MariaDB. - Chunked queries now honor user‑defined limits and offsets, which fixes edge cases in pagination or batched processing.
$request->mergeIfMissing()
supports nested data via dot notation.- The
image
validation rule excludes SVGs by default. Opt in withimage:allow_svg
orFile::image(allowSvg: true)
. ResponseFactory
now formally includesstreamJson
, and the responses docs cover streaming usage. See HTTP Responses.- Validator preserves numeric rule keys.
Str::is()
matches multiline strings consistently.
Upgrading from 11 to 12
Estimated time: a few minutes for most apps. Start with the official Upgrade Guide.
Before you upgrade:
- Run your test suite and back up your database.
- Search your codebase for HasUuids, custom
ResponseFactory
implementations, and SVG image validation rules.
Checklist:
-
Update dependencies using
composer require laravel/framework:^12.0 -W
Also, update your test runner versions as noted in the guide. -
Ensure Carbon 3 is installed and remove any Carbon 2 constraints.
-
Decide on UUID behavior. If you need UUIDv4, alias
HasVersion4Uuids
as shown above and review any ordering assumptions around IDs. -
Review validation for images. If you rely on SVG uploads, explicitly allow them with
image:allow_svg
orFile::image(allowSvg: true)
. -
If you use chunked queries, re‑run your tests around pagination or batched imports to confirm limits and offsets behave as expected.
-
If you run
schema:dump
on MariaDB, make suremariadb
andmariadb-dump
are available on your PATH. -
If you implement
Illuminate\Contracts\Routing\ResponseFactory
, add thestreamJson
method.
Install Laravel 12 today
The installer is the recommended path. It prompts you for your testing framework, database, and starter kit.
laravel new example-app
After creation, install frontend dependencies and start the dev servers:
cd example-app npm install && npm run build composer run dev
See the Installation guide for details. If you prefer Composer, constrain to the current major:
composer create-project laravel/laravel:^12.0 my-app
The official docs emphasize the installer and its prompts.
Contribute to Laravel
If you want to help, here is the short version I follow:
- Bug fixes can target the
12.x
branch, while new features should targetmaster
for the next release. Review the laravel/framework pull requests. - Read the Contribution Guide for branch targeting, tests, and review expectations.
FAQ
-
Is Laravel 12 an LTS release? No. The last LTS was Laravel 6. Current releases receive 18 months of bug fixes and two years of security fixes. See the Support Policy and the Laravel 6 LTS page.
-
Which PHP versions does Laravel 12 support? PHP 8.2 through 8.4, as listed in the Release Notes.
-
What changed about UUIDs, and how do I keep v4? HasUuids now emits UUIDv7. To keep v4, alias
HasVersion4Uuids
asHasUuids
in your models. See the Upgrade Guide. -
How do I choose a starter kit? Use React or Vue if you want an Inertia‑powered SPA experience with TypeScript and shadcn UI. Choose Livewire if you prefer Blade‑first development with Volt (optional) and Flux. The Starter Kits docs have examples.
-
How long will Laravel 12 receive security updates? Through February 24, 2027. See the Release Notes.
Conclusion
I upgraded a small Laravel 11 app to 12 in one sitting, and it was straightforward. If you are on PHP 8.2 or newer and do not rely on Carbon 2 or custom UUIDv4 semantics, I recommend upgrading soon to take advantage of the new starter kits and to stay within the current support window. New projects should start on 12.x by default.
Did you like this article? Then, keep learning:
- Discover best Laravel books for mastering version 12 and beyond
- Find the best cloud hosting options tailored for Laravel in 2024
- Learn how to clear Laravel cache effectively, important for upgrades
- Master error handling in Laravel's HTTP client for robust applications
- Learn how to create and customize Laravel Filament stats widgets
- Step-by-step guidance on upgrading Laravel 11 to Laravel 12 efficiently
- Explore new Laravel features and major changes before Laravel 12
- Discover Laravel's default architecture best practices for collaboration
- Practical step-by-step install guide helps you start Laravel on macOS
- Unlock Laravel's query builder power with advanced where clauses usage
2 comments
Eagerly waiting for release
This article haven't been updated for a while, sorry! Laravel 12 has been out for a few months now.