This website uses cookies

Our website, platform and/or any sub domains use cookies to understand how you use our services, and to improve both your experience and our marketing relevance.

Every 1 second delay costs up to 20% conversions. Learn how to fix it [Free • Mar 10–11]. Save My Spot→

Laravel 12 Overview: What Changed, What Didn’t, and How to Upgrade

Updated on January 29, 2026

11 Min Read
laravel 12

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.

Click Add Server

  • Under Application, choose Laravel.

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.

Open Servers tab

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

Open your Laravel app

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

Open your app URL

At this point, a Laravel application is installed. The version may not yet be Laravel 12.

  • Scroll to Master Credentials in the application panel.

Get your master credentials

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.

Get your database credentials

  • 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.

Share your opinion in the comment section. COMMENT NOW

Share This Article

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.

×

Webinar: How to Get 100% Scores on Core Web Vitals

Join Joe Williams & Aleksandar Savkovic on 29th of March, 2021.

Do you like what you read?

Get the Latest Updates

Share Your Feedback

Please insert Content

Thank you for your feedback!

Do you like what you read?

Get the Latest Updates

Share Your Feedback

Please insert Content

Thank you for your feedback!

Want to Experience the Cloudways Platform in Its Full Glory?

Take a FREE guided tour of Cloudways and see for yourself how easily you can manage your server & apps on the leading cloud-hosting platform.

Start my tour