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

# Mises à jour Laravel — avril 2026

> Mise à jour de l'écosystème Laravel en avril 2026 : Passkeys (authentification sans mot de passe), Debounceable Jobs, MCP UI App, prise en charge de Redis Cluster, etc.

En avril 2026, l'authentification sans mot de passe full-stack est devenue une fonctionnalité standard de Laravel, et de nombreuses fonctionnalités pratiques ont été ajoutées : jobs Debounceable pour maîtriser les rafales de dispatch, prise en charge des MCP UI Apps, etc.

Source : [Laravel April Product Updates](https://laravel.com/blog/laravel-april-product-updates)

***

## Laravel Framework

### Jobs Debounceable en file d'attente

Une solution propre pour les charges de travail en rafale. Avec l'attribut `#[DebounceFor]`, plusieurs dispatchs dans un intervalle donné sont regroupés en un seul, et seul le dernier est exécuté. C'est l'inverse de `ShouldBeUnique` : cela optimise les mises à jour successives dans une fenêtre de debounce.

```php theme={null}
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Queue\Attributes\DebounceFor;

#[DebounceFor(30)]
class RebuildSearchIndex implements ShouldQueue
{
    // Même si un utilisateur met à jour un document 10 fois en 30 secondes,
    // la reconstruction de l'index n'est exécutée qu'une seule fois
}

// Debounce également possible côté appelant (sans modifier la classe)
RebuildSearchIndex::dispatch()->debounceFor(seconds: 30);
```

<Info>
  Les jobs mis en debounce déclenchent l'événement `JobDebounced`, ce qui permet de visualiser les jobs ignorés.
</Info>

### Réponse JSON pour la route de santé

Pour les applications purement API, plus besoin de scraper le HTML de `/up`. La route de santé intégrée renvoie désormais du JSON en réponse à une requête JSON.

```json theme={null}
{ "status": "Application is up" }
```

L'intégration avec load balancers, moniteurs d'uptime et orchestrateurs devient plus simple. Aucune modification de configuration n'est nécessaire.

### JsonFormatter

Grâce à `JsonFormatter`, les données `context()` des exceptions personnalisées sont désormais consignées de façon fiable dans les logs structurés. Le contexte des exceptions précédentes dans la chaîne d'exceptions est également inclus.

```php theme={null}
// config/logging.php
'formatter' => Illuminate\Log\Formatters\JsonFormatter::class,
```

### prefersJsonResponses()

Il suffit d'ajouter une ligne dans `bootstrap/app.php` pour qu'une application API traite un en-tête `Accept` large comme du JSON : redirections d'authentification, erreurs de validation et pages d'exception sont sérialisées correctement pour le client.

```php theme={null}
return Application::configure(basePath: dirname(__DIR__))
    ->withRouting(...)
    ->prefersJsonResponses()
    ->create();
```

### Prise en charge de Cloudflare Email Service

Le service Email de Cloudflare est désormais officiellement pris en charge comme mailer Laravel.

```php theme={null}
// config/services.php
'cloudflare' => [
    'account_id' => env('CLOUDFLARE_ACCOUNT_ID'),
    'token' => env('CLOUDFLARE_TOKEN'),
],
```

### Prise en charge complète de Redis Cluster

Les erreurs CROSSSLOT dans les environnements Redis Cluster tels qu'AWS ElastiCache Serverless sont résolues. Lorsque la queue Laravel et le ConcurrencyLimiter détectent une connexion Cluster, ils encapsulent automatiquement le nom de la queue avec un hash tag.

```
queues:{default}          # slot "default"
queues:{default}:delayed  # même slot
queues:{default}:reserved # même slot
```

### Méthodes d'inspection des jobs Queue

Trois méthodes ont été ajoutées pour inspecter le contenu des jobs sans consulter directement la base de données.

```php theme={null}
Queue::pendingJobs();   // Jobs en attente
Queue::delayedJobs();   // Jobs différés
Queue::reservedJobs();  // Jobs en cours de traitement

// Accès à l'instance InspectedJob
Queue::reservedJobs('high-priority')->first()->name;
// => 'App\Jobs\SendEmail'
```

### Mode strict des Form Requests

Vous pouvez empêcher que des champs non déclarés passent la validation. Les champs reçus qui ne sont pas déclarés dans `rules()` provoquent l'échec de la validation.

```php theme={null}
// AppServiceProvider
public function boot(): void
{
    FormRequest::failOnUnknownFields(! app()->isProduction());
}
```

***

## Passkeys (authentification sans mot de passe)

L'authentification sans mot de passe est désormais possible sur toute la pile de première partie.

* **`laravel/passkeys` (côté serveur)** : migrations, routes de login, confirmation et gestion des identifiants, actions WebAuthn, événements
* **`@laravel/passkeys` (côté client)** : helpers pour React, Vue et Svelte qui prennent en charge les cérémonies WebAuthn du navigateur
* **Intégration Fortify** : il suffit d'activer avec `Features::passkeys()` pour qu'une application Fortify utilise les mêmes endpoints et contrats

```php theme={null}
// config/fortify.php
'features' => [
    Features::passkeys(),
],
```

***

## Prise en charge des MCP UI Apps

Les outils MCP peuvent désormais rendre non seulement du texte, mais aussi des applications HTML complètes en sandbox à l'intérieur d'une iframe.

```bash theme={null}
php artisan make:mcp-app-resource DashboardApp
```

```php theme={null}
class DashboardApp extends AppResource
{
    #[RendersApp]
    public function handle(Request $request): Response
    {
        return Response::view('mcp.dashboard-app', [
            'title' => 'Dashboard',
        ]);
    }
}
```

***

## Inertia et écosystème

* **Hook `useHttp`** : ajout des callbacks `onHttpException` et `onNetworkError`
* **Adaptateur Laravel Echo Svelte 5** : utilisation des fonctionnalités temps réel depuis Svelte via la rune `useEcho`
* **Dusk** : `clickOnceEnabled()` et `clickOnceVisible()` pour éviter les tests instables
* **Horizon** : prise en charge complète de Redis Cluster (compatible AWS ElastiCache Serverless)
* **Extension VS Code** : autocomplétion, hover et navigation pour les nouveaux attributs de Laravel 13

***

## Laravel Cloud et Laravel Forge

| Produit           | Principales mises à jour                                                                                                          |
| ----------------- | --------------------------------------------------------------------------------------------------------------------------------- |
| **Laravel Cloud** | UI entièrement responsive compatible mobile, renforcement du edge network (top IP/paths, conversion des règles firewall et cache) |
| **Laravel Forge** | Prise en charge de PHP 8.5, plusieurs serveurs SSL, alertes de renouvellement de certificat                                       |


## Related topics

- [Mises à jour Laravel — mars 2026](/fr/blog/changelog/202603.md)
- [Mises à jour Laravel — mai 2026](/fr/blog/changelog/202605.md)
- [Mises à jour Laravel — juin 2026](/fr/blog/changelog/202606.md)
- [Guide de mise à niveau de Laravel 12 vers 13](/fr/blog/upgrade-12-to-13.md)
- [Les nouveautés de Laravel 13](/fr/blog/laravel-13-new-features.md)
