Laravel

What's New in Laravel 12: The Features Worth Your Attention

Svet Halachev Dec 20, 2025 3 min read
What's New in Laravel 12: The Features Worth Your Attention

Laravel 12 landed on February 24, 2025, and while it's being called a "maintenance release," there's actually quite a bit here that'll change how you start and build projects.

Brand New Starter Kits

This is the big one. Laravel shipped completely redesigned starter kits for React, Vue, and Livewire. If you've used Breeze or Jetstream before, those are now effectively retired—no more updates coming.

The new kits are seriously nice:

  • React & Vue versions come with Inertia 2, TypeScript, shadcn/ui components, and Tailwind

  • Livewire version uses the Flux UI component library

  • All of them include authentication out of the box: login, registration, password reset, email verification

There's also a WorkOS AuthKit variant if you need social authentication, passkeys, or SSO. That's a whole category of features you'd normally spend days implementing.

# Start a new project with React starter kit
laravel new my-app --kit=react

Symfony 7 Under the Hood

Laravel 12 now runs on Symfony 7 components. You probably won't notice this directly, but your apps will benefit from:

  • Faster request handling

  • Lower memory usage

  • Optimized routing and event dispatching

The performance gains are most noticeable in API-heavy applications where you're handling lots of requests.

Lazy-Loading Service Providers

Here's a change that speeds up every request: service providers now lazy-load by default. Classes and bindings only get loaded when your code actually needs them, not at bootstrap time.

For apps with dozens of service providers, this cuts down request overhead noticeably—especially for API endpoints that don't need half the services registered in your app.

Automatic Eager Loading (Laravel 12.8)

This one arrived in a point release, but it's genuinely exciting. The N+1 query problem has haunted Laravel developers forever. You forget one with() call and suddenly your page makes 500 database queries.

Laravel 12.8 introduced automatic eager loading that detects when you're about to hit an N+1 and handles it for you:

// Before: N+1 if you forget ->with('posts')
$users = User::all();
foreach ($users as $user) {
    echo $user->posts->count(); // Query per user
}

// Now: Laravel can detect and optimize this automatically

You'll still want to be intentional about eager loading for complex queries, but this catches the obvious mistakes.

Built-in Health Checks

Production apps need health endpoints. Now you get one without writing any code:

->withRouting(
    web: __DIR__.'/../routes/web.php',
    health: '/up',
)

Hit /up and get a 200 if your app is healthy. Simple, but it's one less thing to set up for every project.

Should You Upgrade?

New projects: Absolutely start with Laravel 12. The new starter kits alone save you hours of setup time.

Existing projects: The upgrade is straightforward. There aren't many breaking changes since the team focused on improvements that don't break existing code. Check the official upgrade guide and plan for a few hours of testing.

The Takeaway

Laravel 12 isn't flashy, but it's genuinely useful. The new starter kits modernize how projects begin, the Symfony 7 upgrade improves performance across the board, and automatic eager loading addresses one of the most common performance pitfalls.

Sometimes a "maintenance release" is exactly what the ecosystem needs.

Related Articles