Laravel 12 : ce qui change vraiment

Laravel 12 marque un tournant avec de nouveaux starter kits modernes et la fin de Breeze et Jetstream. Voici les changements importants et comment migrer depuis Laravel 11.

Les nouveaux Starter Kits

Le changement majeur de Laravel 12 est l'introduction de nouveaux starter kits qui remplacent Breeze et Jetstream. Trois options sont disponibles :

Les 3 starter kits

React : Inertia 2 + React 19 + TypeScript + shadcn/ui + Tailwind 4
Vue : Inertia 2 + Vue 3 Composition API + TypeScript + shadcn-vue + Tailwind
Livewire : Livewire + Flux UI + Tailwind

Installation

                
Terminal
# Nouveau projet avec menu interactif laravel new my-app # Ou directement avec le stack souhaité laravel new my-app --stack=react laravel new my-app --stack=vue laravel new my-app --stack=livewire

Fin de Breeze et Jetstream

Laravel Breeze et Jetstream ne recevront plus de mises à jour. Les projets existants continueront de fonctionner, mais pour les nouveaux projets, utilisez les nouveaux starter kits.

React Starter Kit en détail

Le starter React est le plus complet. Il inclut une stack moderne et prête pour la production.

Stack technique

Structure des fichiers

                
Structure React starter
resources/js/ ├── app.tsx ├── ssr.tsx ├── pages/ │ ├── auth/ │ │ ├── login.tsx │ │ └── register.tsx │ ├── dashboard.tsx │ └── settings/ ├── components/ │ ├── ui/ # shadcn/ui components │ └── app-sidebar.tsx ├── layouts/ │ ├── app-layout.tsx │ └── auth-layout.tsx └── hooks/ └── use-appearance.ts

Layouts disponibles

Le starter inclut plusieurs variantes de layout que vous pouvez modifier.

                
Changer de layout sidebar
// Dans app-sidebar.tsx // Layout par défaut <Sidebar collapsible="icon" variant="sidebar"> // Layout inset <Sidebar collapsible="icon" variant="inset"> // Layout floating <Sidebar collapsible="icon" variant="floating">

Authentification WorkOS

Nouveauté majeure : une variante WorkOS AuthKit pour chaque starter kit. WorkOS offre une authentification moderne avec :

                
Terminal
# Starter avec WorkOS laravel new my-app --stack=react --auth=workos

Quand utiliser WorkOS

WorkOS : SaaS B2B avec besoin SSO, apps avec social login, projets où l'auth n'est pas le focus.
Auth Laravel classique : contrôle total, pas de dépendance externe, apps internes.

Livewire Starter Kit

Pour ceux qui préfèrent rester full PHP, le starter Livewire utilise Flux UI, une bibliothèque de composants Tailwind créée par l'équipe Livewire.

                
Terminal
laravel new my-app --stack=livewire

Ce qui est inclus

Autres nouveautés Laravel 12

PHP 8.2 minimum

Laravel 12 requiert PHP 8.2 au minimum. Si vous êtes encore en PHP 8.1, c'est le moment de mettre à jour.

Attribut #[Scope] pour les Query Scopes

Nouvelle syntaxe pour définir les scopes locaux avec un attribut PHP.

                
Nouvelle syntaxe des scopes
use Illuminate\Database\Eloquent\Attributes\Scope; class User extends Model { // Laravel 11 - Ancienne syntaxe public function scopeActive(Builder $query): void { $query->where('active', true); } // Laravel 12 - Nouvelle syntaxe #[Scope] protected function active(Builder $query): void { $query->where('active', true); } }

Eager Loading automatique

Nouvelle option pour charger automatiquement les relations quand elles sont accédées.

                
app/Providers/AppServiceProvider.php
use Illuminate\Database\Eloquent\Model; public function boot(): void { // Active l'eager loading automatique Model::automaticallyEagerLoadRelationships(); }

SSR simplifié pour Inertia

                
Terminal
# Build SSR npm run build:ssr # Lancer le serveur SSR php artisan inertia:start-ssr # Ou tout en un pour le dev composer dev:ssr

Migration depuis Laravel 11

Prérequis

Étapes de migration

                
composer.json
{ "require": { "php": "^8.2", "laravel/framework": "^12.0" } }
                
Terminal
composer update

Breaking changes à surveiller

Points d'attention

1. Vérifiez la compatibilité de vos packages tiers avec Laravel 12.
2. Les scopes avec scopeNom fonctionnent toujours, mais préférez la nouvelle syntaxe.
3. Si vous utilisiez Breeze/Jetstream, votre code continue de fonctionner.

Migration progressive

Pas besoin de tout migrer d'un coup. Laravel 12 est rétrocompatible avec Laravel 11 sur la plupart des aspects.

  1. Mettez à jour le framework
  2. Testez votre application
  3. Adoptez les nouvelles features progressivement
  4. Pour un nouveau projet, utilisez les nouveaux starter kits

Faut-il migrer ?

Résumé des recommandations

Migrer si :

Attendre si :

Projets existants avec Breeze/Jetstream

Votre code continue de fonctionner. Pas de migration obligatoire. Breeze et Jetstream restent utilisables, ils ne reçoivent simplement plus de nouvelles features.

Ressources

Besoin d'aide sur votre projet ?

Je peux vous accompagner dans le développement ou l'optimisation de votre application.

Me contacter