Key Takeaways
- Laravel 12 focuses on performance, stability, and long-term maintainability rather than headline features.
- Most Laravel 11 applications can upgrade to Laravel 12 with minimal changes or risk.
- Several rumored features did not ship in Laravel 12, making accuracy important when planning upgrades.
- Cloudways supports Laravel 12, but existing applications may need a manual framework upgrade.
Laravel 12 has been in use long enough for patterns to show up. Teams have upgraded. Others have tested it against existing projects.
Some updates make applications run faster. Others clean up long-standing quirks in areas like jobs, caching, testing, and database handling. These aren’t features you turn on.
They show up while you’re working.
After a year of real usage, the changes in Laravel 12 are easier to judge. Some affect performance and reliability right away. Others become noticeable during upgrades or long-term maintenance.
What follows breaks down those changes in plain terms. You’ll see where Laravel 12 differs from earlier versions and which updates are likely to matter for real applications.
Elevate Your Laravel 12 Projects with Managed Cloud Hosting
Deploy Laravel apps on optimized PHP servers with faster builds and better performance.
Laravel 12 Version and Support Timeline
Laravel releases move on a yearly cycle. Over time, what matters is less about the release itself and more about how long a version stays usable.
Laravel 12 has been around long enough for that picture to settle. It runs on PHP 8.2 and newer, which lines up with what many projects are already using.
Support windows tend to come up when teams plan upgrades.
Bug fixes for Laravel 12 continue through 2026. Security updates extend into 2027. Those dates usually shape when teams decide to upgrade, more than the release date.
Earlier versions are still running in production. Laravel 11 shows up often. Older releases show up less, usually in systems that haven’t been touched in a while.
Over time, these timelines affect how teams schedule maintenance. They also influence when staying on an older version becomes harder than moving forward.
| Laravel Version | PHP Requirement | Release | Bug Fixes Until | Security Fixes Until |
| 9 | 8.0+ | February 8th, 2022 | August 8th, 2023 | February 6th, 2024 |
| 10 | 8.1+ | February 14th, 2023 | August 6th, 2024 | February 4th, 2025 |
| 11 | 8.2+ | March 12th, 2024 | September 3rd, 2025 | March 12th, 2026 |
| 12 | 8.2+ | February 24, 2025 | August 13th, 2026 | February 24th, 2027 |
How Laravel 12 Improves Performance
Performance changes in Laravel 12 are spread across the framework. They don’t come from a single feature or setting.
Some improvements reduce waiting time. Others cut down extra work behind the scenes. Together, they make applications behave more consistently, especially as traffic grows.
This section focuses on where those gains come from, not on individual APIs or tools.
Cloudways Performance Bootcamp · Free · Mar 10–11
Watch experts fix slow WordPress sites live on screen. Live sessions on CDN, Core Web Vitals, caching & more.
Caching Behavior in Laravel 12
Caching is one area where small changes add up.
- Frequent cache reads are handled more efficiently
- Background cache operations interfere less with live requests
- Repeated lookups feel lighter over time
Nothing new needs to be enabled. The difference usually appears when cached data changes often or traffic starts to increase.
Database Query Performance
Database work in Laravel 12 is more predictable.
Queries are less likely to trigger extra work when it isn’t needed. That matters most in applications that rely on large tables or run many background jobs.
These changes don’t alter how queries are written. They reduce overhead that used to show up quietly in production.
Background Jobs and Queues
Queues and background jobs were another focus.
- Batch processing is more stable
- Failed jobs are easier to inspect
- Retry behavior is more consistent
Applications that send emails, process imports, or run scheduled tasks tend to notice these changes first.
PHP Version Requirements and Their Impact
Laravel 12 runs on newer PHP versions. That shift alone improves performance in long-running processes.
Modern PHP handles memory more efficiently and executes code faster. Laravel 12 is designed to take advantage of those improvements instead of compensating for older limits.
What Changes in Day-to-Day Use
Pages respond more evenly under load. Background work piles up less often. Applications stay stable for longer periods without manual tuning.
Code doesn’t need to change for these gains to appear. The framework simply removes friction that used to be there.
Key Changes and Features in Laravel 12
Laravel 12 doesn’t introduce a new way of building applications. Most changes refine how existing parts of the framework behave.
Some additions are visible right away. Others quietly reduce boilerplate or edge cases that teams have worked around for years.
New Application Starter Kits
Laravel 12 replaces older starter options with new, modern starter kits.
Projects can now start with React, Vue, or Livewire setups that include authentication, routing, and a basic UI structure. These kits are built around Inertia, TypeScript, and Tailwind.
For teams starting fresh, this removes a lot of setup work. For existing projects, nothing breaks. Starter kits are optional.
Route Definitions Using PHP Attributes
Routes can now be defined directly inside controllers using PHP attributes.
That keeps routing logic closer to the code it points to, which helps in smaller or modular applications.
use Illuminate\Routing\Attributes\Route;
class UserController
{
#[Route('GET', '/users')]
public function index()
{
//
}
}
Traditional route files still work. Attribute-based routing can be adopted gradually.
Built-In Health Check Endpoints
Laravel 12 includes native health check endpoints.
These endpoints report whether an application is running and responding as expected. They’re often used by load balancers, uptime monitors, or container platforms.
For many teams, this replaces custom “status” routes that were maintained separately.
Improvements to Job Batching
Job batching received several functional updates.
- Batch progress is easier to inspect
- Failure handling is more consistent
- Completion callbacks behave more reliably
These changes help when dealing with imports, notifications, or other large background workloads.
Small but Useful Eloquent Additions
Laravel 12 adds several helpers that reduce repetitive model code.
One example is the new except() method, which makes it easier to remove attributes before sharing data.
$userData = $user->except(['password', 'remember_token']);
Another addition simplifies many-to-many queries using existing relationships.
$posts = Post::whereAttachedTo($tags)->get();
These aren’t headline features, but they remove patterns that show up often in real projects.
Array and URL Helpers
Laravel 12 introduces a few practical helpers outside of Eloquent. Arrays can now be split without converting them into collections.
[$active, $inactive] = Arr::partition($items, fn ($item) => $item->active);
URLs are easier to work with using path segments.
$segments = Uri::of('https://example.com/a/b/c')->pathSegments();
These helpers keep common logic readable and close to intent.
Testing and Debugging Improvements
Testing tools received small but meaningful updates.
One example is the ability to dump response bodies directly during tests.
$response->ddBody();
This saves time when diagnosing failed assertions, especially with JSON responses.
JSON Handling Improvements
Laravel 12 adds a new JSON cast option that preserves Unicode characters.
protected $casts = [ 'data' => 'json:unicode', ];
This is useful for applications working with non-ASCII text, where escaped output makes data harder to inspect.
What These Changes Add Up To
Laravel 12 focuses on polish.
Fewer workarounds. Cleaner defaults. Less repeated code. The framework feels more predictable once projects grow past the initial setup phase.
Nothing here forces a rewrite. Most teams notice the benefits gradually, as older pain points stop showing up.
Deprecated and Breaking Changes in Laravel 12
Laravel 12 is a low-impact release. Most applications upgrade without touching much code.
That said, a few changes are worth knowing about, especially for older or heavily customized projects.
Carbon 3 Is Now Required
Laravel 12 no longer supports Carbon 2.
All date and time handling now relies on Carbon 3, which brings stricter typing and better consistency.
Most applications won’t notice this. Issues tend to appear only if:
- Carbon methods were overridden
- Custom macros were used
- Older Carbon behaviors were relied on implicitly
In those cases, small adjustments may be needed.
UUID Behavior in Eloquent Models
The HasUuids trait now generates UUIDv7 values by default.
UUIDv7 values are time-ordered, which helps with indexing and sorting at scale. This replaces the older behavior that many developers assumed was UUIDv4-based.
Projects that need the older format can opt back in explicitly.
use Illuminate\Database\Eloquent\Concerns\HasVersion4Uuids as HasUuids;
Nothing breaks automatically, but the default behavior has changed.
Container Resolution and Default Values
Laravel’s dependency container now respects default property values when resolving classes.
class Example
{
public function __construct(public ?Carbon $date = null) {}
}
In Laravel 11, $date would be auto-resolved. In Laravel 12, it stays null.
Applications that relied on the old behavior may need to resolve dependencies explicitly.
Database Schema Inspection Changes
Schema inspection methods now return results from all schemas by default. This affects methods like:
- Schema::getTables()
- Schema::getViews()
- Schema::getTableListing()
Projects that assumed a single schema may need to pass schema names explicitly.
Schema::getTables(schema: 'main');
Most applications never touch these methods directly.
Local Filesystem Default Path
If no local disk is defined, Laravel now defaults to:
storage/app/private
Earlier versions used storage/app.
Applications that rely on Storage::disk(‘local’) without configuration may notice files appearing in a different location.
The old behavior can be restored by defining the disk manually.
Image Validation No Longer Allows SVG by Default
The image validation rule now excludes SVG files. SVGs can still be allowed explicitly.
'photo' => 'image:allow_svg'
This change reduces accidental exposure to unsafe uploads.
Named Arguments and Internal APIs
Laravel does not guarantee stability for named arguments in framework methods.
Some internal constructors changed in Laravel 12, particularly in database-related classes. These changes mainly affect package maintainers, not application code.
If named arguments were used when calling Laravel internals, updates may be required.
What Didn’t Change
Several things listed as “breaking” in older previews or third-party blogs did not ship in Laravel 12.
There is no:
- native GraphQL layer
- apiVersion() routing helper
- AI debugging helper
- new queue priority API
- unified scaffold Artisan command
Applications using these features rely on third-party packages, not the framework itself.
How to Install or Upgrade to Laravel 12
Laravel 12 is installed and updated using Composer, which is a tool used to manage PHP projects. You don’t need to understand Composer deeply to follow these steps.
The process is slightly different depending on whether you’re creating a new project or updating an existing one.
Installing a New Laravel 12 Project
Before starting, make sure your system is running PHP 8.2 or newer. This is required for Laravel 12.
- Run the following command to check the PHP version:
php -v
If the version shown is lower than 8.2, PHP will need to be updated before continuing.
- Next, create a new Laravel project. This command downloads Laravel 12 and sets up the project files for you.
composer create-project laravel/laravel example-app
- After the download finishes, move into the new project folder:
cd example-app
- Now start the built-in development server:
php artisan serve
A local web address will appear in the terminal, usually starting with http://127.0.0.1. Opening that address in a browser should show the Laravel welcome page.
How to Update an Existing Project to Laravel 12
Start by checking the PHP version again. Laravel 12 won’t run on older PHP versions.
php -v
Update the Laravel framework used by the project:
composer require laravel/framework:^12.0
Once the framework updates, refresh the remaining dependencies to keep everything in sync:
composer update
Apply any pending database changes:
php artisan migrate
If the project has automated tests, run them to confirm nothing broke during the upgrade:
php artisan test
If there are no tests, open the application and manually check the main pages and features you rely on.
Dependency Changes You May See
During installation or upgrade, Composer may update related tools automatically.
- PHPUnit may move to version 11
- Pest users may see an upgrade to version 3
- Carbon is upgraded to version 3
These changes are expected. Most projects won’t need manual fixes unless versions were locked earlier.
Things Worth Checking After the Upgrade
A few Laravel 12 changes can surface during upgrades:
- Models that generate UUIDs
- File uploads that rely on the local filesystem
- Image validation rules when SVG files were allowed earlier
- Code that used named arguments with Laravel internals
Not every project will hit these. They’re more common in older or heavily customized applications.
About Starter Kits
Starter kits included with Laravel 12 are optional.
They are intended for new projects. Existing applications can continue using their current frontend setup without changes.
How to Install Laravel 12 on Cloudways (Step by Step)
Cloudways sets up a Laravel application during server creation. You’re not starting from an empty server. You’re working with a Laravel project that’s already configured and ready to run.
Follow the steps below.
- Log in to your Cloudways account.
- From the dashboard, click Add Server. This opens the server launch screen.

- Under Application, choose Laravel.

Give the following a name. These are for your own reference and don’t affect how the app runs.
- Application name
- Server name
- Project name
Choose your server options.
- Cloud provider
- Server size
- Server location
If you’re unsure, the default options work fine for testing and small projects.
- Click Launch Now. Server setup usually takes a few minutes.
- Once the server is ready, open the Servers tab.

- Select the server you just created, then open the Applications tab and click your Laravel application.

- You’ll see the Application URL at the top. Opening it in a browser should show the Laravel welcome page.

At this point, a Laravel application is installed. The version may not yet be Laravel 12.
- Scroll to Master Credentials in the application panel.

Use these details to connect to the server over SSH. Common options include:
- Terminal on macOS or Linux
- PuTTY on Windows
After connecting, move into the application directory. Cloudways already places the Laravel project in the correct location, so there’s no need to create or move folders.
- To confirm the Laravel version, run:
php artisan --version
- If the output already shows Laravel 12, you can skip the next step.
- If the version is older, update the framework to Laravel 12:
composer require laravel/framework:^12.0 composer update
- Once the update completes, confirm the version again:
php artisan --version
- Next, open the .env file and review the environment values.
Cloudways provides database credentials in the Access Details section, so you can copy them directly instead of creating a database manually.

- After saving changes, clear the configuration cache.
php artisan config:clear
- If your application uses database migrations, run them once the environment is ready.
php artisan migrate
- Refresh the application URL in your browser. The Laravel application should now be running on Cloudways.
From here, development continues inside Laravel. Cloudways handles the server setup, PHP configuration, and system-level updates in the background.
You don’t need to reinstall Laravel, change document roots, or run additional setup commands. The platform takes care of that part.
Conclusion
Laravel 12 is not a release built around announcements. It’s a release shaped by use.
After a year in production, the changes are easier to see. Applications behave more consistently. Common edge cases show up less often. Day-to-day development feels steadier, especially as projects grow.
Most teams won’t need to rethink how they build with Laravel. The framework stays familiar. What changes is how often friction appears.
For new projects, Laravel 12 is the natural starting point. For existing applications, the upgrade is usually uneventful, with the benefits showing up gradually rather than all at once.
Frequently Asked Questions
Q. Is Laravel still relevant in 2026?
Yes. Laravel remains one of the most widely used PHP frameworks. Its release cycle, ecosystem, and community activity continue to make it a practical choice for modern web applications.
Laravel 12 builds on that by focusing on stability, performance, and long-term maintainability rather than sweeping changes.
Q. What is the current stable version of Laravel?
Laravel 12 is the current stable major version. It supports modern PHP versions and receives bug fixes and security updates according to Laravel’s standard support timeline.
Q. Should new projects start with Laravel 12?
Yes. For new applications, Laravel 12 is the recommended choice. It includes the latest defaults, updated tooling, and a long support window.
Starting on an older version usually adds unnecessary upgrade work later.
Q. Is upgrading from Laravel 11 to Laravel 12 risky?
For most projects, no.
Laravel 12 keeps breaking changes to a minimum. Teams upgrading from Laravel 11 typically spend more time reviewing changes than fixing issues, especially if the application already follows framework conventions.
Q. Is Laravel UI still recommended?
Laravel UI is no longer the preferred approach for new projects.
Laravel 12 introduces modern starter kits for React, Vue, and Livewire that better reflect current frontend workflows. Laravel UI may still appear in older projects, but it’s not recommended for new builds.
Q. Does Cloudways support Laravel 12?
Yes. Cloudways supports Laravel 12 on servers running compatible PHP versions.
New Laravel applications created on Cloudways may start on an earlier Laravel version, but upgrading to Laravel 12 is supported and can be done directly within the application.
Sarim Javaid
Sarim Javaid is a Sr. Content Marketing Manager at Cloudways, where his role involves shaping compelling narratives and strategic content. Skilled at crafting cohesive stories from a flurry of ideas, Sarim's writing is driven by curiosity and a deep fascination with Google's evolving algorithms. Beyond the professional sphere, he's a music and art admirer and an overly-excited person.