Zum Hauptinhalt springen
Im April 2026 wurde die vollständige passwortlose Authentifizierung zum Standard-Feature von Laravel; zudem wurden zahlreiche praxisnahe Funktionen ergänzt, darunter Debounceable Jobs zur Kontrolle stoßartiger Job-Dispatches und Unterstützung für MCP-UI-Apps. Quelle: Laravel April Product Updates

Laravel Framework

Debounceable Queued Jobs

Eine saubere Lösung für stoßartige Workloads. Mit dem Attribut #[DebounceFor] werden mehrere Dispatches innerhalb der angegebenen Zeit zu einem einzigen zusammengefasst, und nur der letzte Dispatch wird ausgeführt. Es ist der Gegenentwurf zu ShouldBeUnique und effizient bei aufeinanderfolgenden Updates innerhalb des Debounce-Fensters.
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Queue\Attributes\DebounceFor;

#[DebounceFor(30)]
class RebuildSearchIndex implements ShouldQueue
{
    // Selbst wenn ein Benutzer ein Dokument innerhalb von 30 Sekunden
    // 10-mal aktualisiert, wird der Index-Rebuild nur einmal ausgeführt.
}

// Auch aufrufseitig lässt sich debouncen (ohne Klassenänderung)
RebuildSearchIndex::dispatch()->debounceFor(seconds: 30);
Debouncte Jobs feuern das Event JobDebounced, sodass übersprungene Jobs sichtbar gemacht werden können.

JSON-Response-Unterstützung für Health-Routen

Bei reinen API-Anwendungen entfällt das Scrapen von HTML unter /up. Die eingebaute Health-Route liefert nun bei JSON-Requests JSON zurück.
{ "status": "Application is up" }
Die Integration mit Load Balancern, Uptime-Monitoren und Orchestratoren wird einfacher. Konfigurationsänderungen sind nicht erforderlich.

JsonFormatter

Der JsonFormatter sorgt dafür, dass die context()-Daten benutzerdefinierter Exceptions zuverlässig strukturiert geloggt werden. Auch der Kontext vorheriger Exceptions innerhalb einer Exception-Kette wird berücksichtigt.
// config/logging.php
'formatter' => Illuminate\Log\Formatters\JsonFormatter::class,

prefersJsonResponses()

In API-Anwendungen genügt eine einzige Zeile in bootstrap/app.php, um weit gefasste Accept-Header als JSON zu behandeln; Auth-Redirects, Validierungsfehler und Exception-Seiten werden dann für den Client korrekt serialisiert.
return Application::configure(basePath: dirname(__DIR__))
    ->withRouting(...)
    ->prefersJsonResponses()
    ->create();

Unterstützung für Cloudflare Email Service

Cloudflares Email Service wird offiziell als Laravel-Mailer unterstützt.
// config/services.php
'cloudflare' => [
    'account_id' => env('CLOUDFLARE_ACCOUNT_ID'),
    'token' => env('CLOUDFLARE_TOKEN'),
],

Vollständige Unterstützung für Redis Cluster

CROSSSLOT-Fehler in Redis-Cluster-Umgebungen wie AWS ElastiCache Serverless wurden behoben. Erkennt Laravels Queue oder der ConcurrencyLimiter eine Cluster-Verbindung, werden Queue-Namen automatisch mit Hash-Tags umschlossen.
queues:{default}          # Slot "default"
queues:{default}:delayed  # gleicher Slot
queues:{default}:reserved # gleicher Slot

Methoden zur Inspektion von Queue-Jobs

Drei neue Methoden erlauben die Prüfung von Job-Inhalten, ohne die Datenbank direkt einsehen zu müssen.
Queue::pendingJobs();   // wartende Jobs
Queue::delayedJobs();   // verzögerte Jobs
Queue::reservedJobs();  // in Verarbeitung befindliche Jobs

// Zugriff auf die InspectedJob-Instanz
Queue::reservedJobs('high-priority')->first()->name;
// => 'App\Jobs\SendEmail'

Form Request Strict Mode

Steuert, dass nicht deklarierte Felder die Validierung nicht passieren. In rules() nicht deklarierte eingehende Felder lassen die Validierung fehlschlagen.
// AppServiceProvider
public function boot(): void
{
    FormRequest::failOnUnknownFields(! app()->isProduction());
}

Passkeys (passwortlose Authentifizierung)

Passwortlose Authentifizierung ist nun als First-Party-Stack durchgängig umgesetzt.
  • laravel/passkeys (serverseitig): liefert Migrationen, Routen für Login/Bestätigung/Credential-Verwaltung, WebAuthn-Actions und Events
  • @laravel/passkeys (clientseitig): mit Helfern für React, Vue und Svelte verarbeitet die WebAuthn-Zeremonien im Browser
  • Fortify-Integration: ein Aktivieren per Features::passkeys() genügt, damit Fortify-Anwendungen dieselben Endpoints und Contracts nutzen
// config/fortify.php
'features' => [
    Features::passkeys(),
],

Unterstützung für MCP-UI-Apps

MCP-Tools können nicht mehr nur Text ausgeben, sondern eine vollständig gesandboxte HTML-App innerhalb eines iframes rendern.
php artisan make:mcp-app-resource DashboardApp
class DashboardApp extends AppResource
{
    #[RendersApp]
    public function handle(Request $request): Response
    {
        return Response::view('mcp.dashboard-app', [
            'title' => 'Dashboard',
        ]);
    }
}

Inertia und Ökosystem

  • Hook useHttp: Callbacks onHttpException und onNetworkError ergänzt
  • Laravel Echo Svelte 5 Adapter: mit der useEcho-Rune Echtzeit-Funktionen aus Svelte nutzbar
  • Dusk: clickOnceEnabled() und clickOnceVisible() verhindern flackrige Tests
  • Horizon: vollständige Unterstützung für Redis Cluster (u. a. AWS ElastiCache Serverless)
  • VS-Code-Erweiterung: Autocomplete, Hover und Navigation für die neuen Attribute in Laravel 13

Laravel Cloud und Laravel Forge

ProduktWichtige Updates
Laravel CloudMobiltaugliches, vollständig responsives UI, Ausbau des Edge-Netzwerks (Anzeige von Top-IPs/-Pfaden, Konvertierung von Firewall-/Cache-Regeln)
Laravel ForgeUnterstützung für PHP 8.5, Unterstützung mehrerer SSL-Server, Warnungen zur Zertifikatserneuerung
Zuletzt geändert am 13. Juli 2026