> ## Documentation Index
> Fetch the complete documentation index at: https://kawax.biz/llms.txt
> Use this file to discover all available pages before exploring further.

# Les nouveautés de Laravel 13

> Présentation des principales nouveautés et améliorations de Laravel 13, publié en mars 2026.

## Introduction

Laravel 13 est sorti le 17 mars 2026. Comme chaque année, il s'agit d'une version majeure. Laravel 13 se concentre particulièrement sur **les workflows AI-natifs**, **des valeurs par défaut plus sûres** et **des API plus expressives pour les développeurs**.

Les changements cassants sont réduits au minimum et la plupart des applications peuvent être migrées avec peu de modifications. En parallèle, de nombreuses nouveautés — comme le Laravel AI SDK et la recherche sémantique — sont susceptibles de transformer profondément le développement d'applications modernes.

<Info>
  Politique de support de Laravel 13 : corrections de bugs jusqu'au T3 2027, correctifs de sécurité jusqu'au **17 mars 2028**.
</Info>

***

## Mise à jour des prérequis PHP

Laravel 13 nécessite **PHP 8.3 ou supérieur**. La prise en charge de PHP 8.2 est terminée.

| Version | PHP           | Date de sortie   | Fin corrections de bugs | Fin correctifs de sécurité |
| ------- | ------------- | ---------------- | ----------------------- | -------------------------- |
| 11      | 8.2 - 8.4     | 12 mars 2024     | 3 septembre 2025        | 12 mars 2026               |
| 12      | 8.2 - 8.5     | 24 février 2025  | 13 août 2026            | 24 février 2027            |
| **13**  | **8.3 - 8.5** | **17 mars 2026** | **T3 2027**             | **17 mars 2028**           |

Les principaux avantages de PHP 8.3 : constantes typées, fonction `json_validate()`, attribut `#[\Override]`, etc.

***

## Principales nouveautés

### Laravel AI SDK

La star de Laravel 13 est un **SDK IA de première partie**. Il fournit une API unifiée pour la génération de texte, les agents à appels d'outils, les embeddings, l'audio, la génération d'images et l'intégration de vector stores.

Vous construisez des fonctionnalités IA sans dépendre d'un fournisseur particulier, tout en conservant une expérience de développement typique de Laravel.

**Génération de texte (agent)**

```php theme={null}
use App\Ai\Agents\SalesCoach;

$response = SalesCoach::make()->prompt('Analyse cette transcription de vente...');

return (string) $response;
```

**Génération d'image**

```php theme={null}
use Laravel\Ai\Image;

$image = Image::of('un donut posé sur un plan de travail de cuisine')->generate();

$rawContent = (string) $image;
```

**Synthèse vocale**

```php theme={null}
use Laravel\Ai\Audio;

$audio = Audio::of('J\'adore coder avec Laravel.')->generate();

$rawContent = (string) $audio;
```

**Génération d'embeddings**

```php theme={null}
use Illuminate\Support\Str;

$embeddings = Str::of('Les vins de la Napa Valley sont excellents.')->toEmbeddings();
```

Pour plus de détails, consultez la [documentation du Laravel AI SDK](https://laravel.com/ai).

***

### Recherche sémantique / vectorielle

Une prise en charge native des requêtes vectorielles, alignée sur le AI SDK, a été ajoutée. Vous pouvez exécuter directement des recherches sémantiques depuis le query builder en utilisant PostgreSQL et `pgvector`.

```php theme={null}
$documents = DB::table('documents')
    ->whereVectorSimilarTo('embedding', 'les meilleurs domaines de Napa Valley')
    ->limit(10)
    ->get();
```

De l'ajout de colonnes d'embeddings à l'exécution des requêtes, tout se fait au sein de l'écosystème Laravel.

***

### Ressources JSON:API

Laravel intègre un support de première partie pour les ressources [JSON:API](https://jsonapi.org/). Il devient simple de renvoyer des réponses conformes à la spécification JSON:API.

* Sérialisation des objets ressource
* Inclusion des relations
* Sparse fieldsets
* Liens
* En-têtes de réponse conformes JSON:API

***

### Extension des attributs PHP

Laravel 13 étend la configuration déclarative par attributs PHP à l'ensemble du framework.

**Application aux contrôleurs**

```php theme={null}
<?php

namespace App\Http\Controllers;

use App\Models\Comment;
use App\Models\Post;
use Illuminate\Routing\Attributes\Controllers\Authorize;
use Illuminate\Routing\Attributes\Controllers\Middleware;

#[Middleware('auth')]
class CommentController
{
    #[Middleware('subscribed')]
    #[Authorize('create', [Comment::class, 'post'])]
    public function store(Post $post)
    {
        // ...
    }
}
```

**Application aux jobs**

```php theme={null}
use Illuminate\Queue\Attributes\Tries;
use Illuminate\Queue\Attributes\Backoff;
use Illuminate\Queue\Attributes\Timeout;
use Illuminate\Queue\Attributes\FailOnTimeout;

#[Tries(3)]
#[Backoff(60)]
#[Timeout(120)]
#[FailOnTimeout]
class ProcessPodcast implements ShouldQueue
{
    // ...
}
```

Principaux attributs ajoutés :

| Attribut           | Rôle                                                  |
| ------------------ | ----------------------------------------------------- |
| `#[Middleware]`    | Applique un middleware à un contrôleur ou une méthode |
| `#[Authorize]`     | Vérifie une policy sur un contrôleur                  |
| `#[Tries]`         | Nombre maximum de tentatives d'un job                 |
| `#[Backoff]`       | Délai de backoff d'un job                             |
| `#[Timeout]`       | Timeout d'un job                                      |
| `#[FailOnTimeout]` | Marque le job en échec en cas de timeout              |

D'autres attributs sont introduits sur Eloquent, les événements, les notifications, la validation, les tests, la sérialisation des ressources, etc.

***

### Routage des files d'attente

`Queue::route(...)` permet de définir en un seul endroit les règles de routage par défaut (connexion, queue) pour un job donné.

```php theme={null}
use App\Jobs\ProcessPodcast;
use Illuminate\Support\Facades\Queue;

Queue::route(ProcessPodcast::class, connection: 'redis', queue: 'podcasts');
```

Fini le nom de queue codé en dur dans la classe du job : la configuration d'infrastructure est séparée du code.

***

### Prolonger le TTL du cache

`Cache::touch(...)` permet de prolonger le TTL d'un élément de cache sans avoir à en récupérer et resauvegarder la valeur.

```php theme={null}
// Prolonger le TTL de 3600 secondes sans modifier la valeur
Cache::touch('expensive-computation', 3600);
```

***

## Renforcements de sécurité

### Renforcement de la protection CSRF (`PreventRequestForgery`)

Le middleware CSRF est renommé de `VerifyCsrfToken` en `PreventRequestForgery`, et une validation de l'origine des requêtes basée sur l'en-tête `Sec-Fetch-Site` est ajoutée.

```php theme={null}
use Illuminate\Foundation\Http\Middleware\PreventRequestForgery;

// Exclure le middleware dans les tests
->withoutMiddleware([PreventRequestForgery::class]);
```

`VerifyCsrfToken` reste en tant qu'alias déprécié, mais la migration vers le nouveau nom est recommandée.

### Restriction de la désérialisation en cache

L'option `serializable_classes` a été ajoutée dans `config/cache.php`, avec `false` comme valeur par défaut. Elle empêche les attaques de désérialisation PHP en cas de fuite de la `APP_KEY`.

```php theme={null}
// config/cache.php
'serializable_classes' => [
    App\Data\CachedDashboardStats::class,
    App\Support\CachedPricingSnapshot::class,
],
```

Si vous stockez des objets PHP dans le cache, vous devez ajouter explicitement les classes dans la liste blanche.

***

## Modifications des starter kits

Les starter kits refondus dans Laravel 12 (bases React, Vue, Livewire) restent disponibles dans Laravel 13.

**Inertia v3** est également publié en même temps que Laravel 13. Principaux changements :

* Layout props simplifiées
* Prise en charge de Vite 8
* Ajout du callback `withApp`
* Nouveaux composants Blade

Si vous utilisez Inertia v3, envisagez la mise à niveau en parallèle.

***

## Autres améliorations

### Mise à niveau assistée par IA (Laravel Boost)

[Laravel Boost](https://github.com/laravel/boost) est un serveur MCP de première partie. En s'intégrant à des éditeurs pilotés par IA (Claude Code, Cursor, OpenCode, Gemini, VS Code, etc.), il permet de semi-automatiser la mise à niveau via la commande slash `/upgrade-laravel-v13`.

```shell theme={null}
composer require laravel/boost:^2.0 --dev
```

### Ajouts aux contrats

De nouvelles méthodes ont été ajoutées aux contrats suivants :

| Contrat                            | Méthodes ajoutées                                                              |
| ---------------------------------- | ------------------------------------------------------------------------------ |
| `Bus\Dispatcher`                   | `dispatchAfterResponse`                                                        |
| `Routing\ResponseFactory`          | `eventStream` (support SSE)                                                    |
| `Auth\MustVerifyEmail`             | `markEmailAsUnverified`                                                        |
| `Queue\Queue`                      | `pendingSize`, `delayedSize`, `reservedSize`, `creationTimeOfOldestPendingJob` |
| `Cache\Store` / `Cache\Repository` | `touch`                                                                        |

***

## Conclusion

Laravel 13 se caractérise par « peu de changements cassants et beaucoup de nouveautés ». La mise à niveau est légère, tandis que **l'AI SDK** et la **recherche sémantique** peuvent transformer profondément le développement d'applications modernes.

Lorsque vous êtes prêt à mettre à niveau une application existante de Laravel 12 vers 13, consultez le guide détaillé ci-dessous.

<Card title="Guide de mise à niveau de Laravel 12 à 13" icon="arrow-up-right" href="/fr/blog/upgrade-12-to-13">
  Liste des changements cassants et procédure pas à pas de mise à niveau.
</Card>


## Related topics

- [Guide de mise à niveau de Laravel 12 vers 13](/fr/blog/upgrade-12-to-13.md)
- [Attributs PHP](/fr/advanced/php-attributes.md)
- [Observateurs Eloquent et événements de modèle](/fr/advanced/eloquent-observers.md)
- [Gestion de la compatibilité de versions de package](/fr/advanced/package-versioning.md)
- [RPC (Remote Procedure Call)](/fr/packages/laravel-copilot-sdk/rpc.md)
