Laravel 12.26.0 : les nouveautés

Ajout de la méthode Heartbeat aux Collections ; Wayfinder disponible dans les Starter Kits React et Vue et bien plus encore.

Larafrique
30/08/2025
Laravel 12.26.0 : les nouveautés

Introduction

Cette semaine, l’équipe Laravel a publié la version 12.26.0, ajoutant une méthode withHeartbeat() aux Lazy Collections, une méthode toPrettyJson() aux collections, aux modèles, et plus encore. De plus, les kits de démarrage Laravel Vue et React incluent Wayfinder, qui permet de générer des routes type-safe entre Laravel et votre frontend.

1import { store, update } from "@/actions/App/Http/Controllers/PostController";
2 
3const Page = () => (
4 <form {...update.form.put(1)}>
5 {/* <form action="/posts/1?_method=PUT" method="post"> */}
6 {/* ... */}
7 </form>
8);

Les Starter Kits React et Vue incluent désormais Wayfinder

Joe Tannenbaum a mis à jour les Starter Kits Laravel React et Vue pour y inclure Laravel Wayfinder. Wayfinder offre un pont type-safe entre vos routes Laravel et votre frontend.

Ajout de la méthode withHeartbeat() aux Lazy Collections

Joseph Silber a ajouté une nouvelle méthode withHeartbeat() aux Lazy Collections, qui permet d’exécuter un callback à intervalles réguliers pendant que la collection est énumérée de manière paresseuse. Joseph a présenté le cas d’usage principal de cette méthode dans la Pull Request #56477 :

Pour les tâches longues, comme le traitement par lots de rapports, il peut être nécessaire de maintenir un verrou pour éviter l’exécution concurrente. Cependant, si le code échoue à libérer le verrou de manière inattendue, vous ne voulez pas qu’il persiste indéfiniment. Une stratégie courante consiste à acquérir un verrou de courte durée, puis à le renouveler périodiquement tant que la tâche est en cours d’exécution.

Voici un exemple où un verrou est acquis pour 5 minutes, puis renouvelé toutes les 4 minutes (en supposant qu’un rapport ne prend jamais plus d’une minute à générer) :

1use Carbon\CarbonInterval;
2use Illuminate\Support\Facades\Cache;
3 
4$lock = Cache::lock('generate-reports', CarbonInterval::minutes(5));
5 
6if ($lock->get()) {
7 try {
8 Report::where('status', 'pending')
9 ->lazy()
10 ->withHeartbeat(
11 CarbonInterval::minutes(4),
12 fn () => $lock->extend(CarbonInterval::minutes(5))
13 )
14 ->each(fn ($report) => $report->process());
15 } finally {
16 $lock->release();
17 }
18}

Ajout de la méthode toPrettyJson aux collections

Wendell Adriel a ajouté une méthode toPrettyJson(), implémentée dans la plupart des endroits où la méthode toJson() existe, comme les collections, modèles, ressources JSON, paginations, instances Fluent et message bags. Voici un exemple provenant de la Pull Request #56697 utilisant des collections :

1// Avant
2$collection = collect([1,2,3]);
3$collection->toJson(JSON_PRETTY_PRINT);
4 
5// Après
6$collection = collect([1,2,3]);
7$collection->toPrettyJson();

En savoir plus

Pour aller plus loin avec Filament, voici quelques ressources utiles :

Sommaire