Zum Inhalt springen
← Alle Artikel

Laravel 13 heute: was ein halbes Jahr Releases gebracht hat

27. Sept. 2026 · Backend · 4 min

·Von Dimitri Pisarev

Laravel 13 ist im März erschienen, als das, was die Release Notes einen relativ kleinen Upgrade-Aufwand nennen, und das Framework liefert seitdem über die Minors weiter. Ich habe diese sechs Monate mit dem Bau eines SaaS darauf verbracht. Die Headline-Features kriegen die Aufmerksamkeit, geändert haben meinen Alltag die kleinen Teile.

Was heißt Stability-First in der Praxis?#

Die Release Notes sagen es schlicht: „Much of our focus during this release cycle has been minimizing breaking changes.“ Der Satz dahinter gehört auf den Upgrade-PR: „most Laravel applications may upgrade to Laravel 13 without changing much application code“. Die Untergrenze wandert auf PHP 8.3, was für eine Codebasis auf modernem PHP nichts kostet. Ein Upgrade soll billig sein. Was die sechs Monate tatsächlich gebracht haben, füllt den Rest dieses Artikels.

Attributes legen die Konfiguration neben die Klasse#

Die lautste Änderung für Entwickler sind native PHP-Attributes über das ganze Framework: Controller, Jobs, Console-Commands, Models, über 15 Stellen, alle optional und rückwärtskompatibel (Laravel News). Middleware- und Autorisierungs-Checks sitzen jetzt direkt auf der Klasse und ihren Methoden:

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

Auf der Job-Seite kamen #[Tries], #[Backoff], #[Timeout] und #[FailOnTimeout] dazu. Mein Fazit nach einem halben Jahr: Attributes nutze ich dort, wo der alte Stil einen Fakt über drei Dateien verteilt hat, und meine Finger tippen $tries = 3 weiter, wo sie das immer getippt haben. Beide Stile kompilieren, und genau das soll ein Stability-Release liefern.

Die Kleinen löschen echten Code#

Drei Ergänzungen, die ich nicht mehr hergeben möchte:

  • Queue-Routing per Klasse: Queue::route(Job::class, connection: 'redis', queue: 'podcasts') legt jede Routing-Entscheidung an einem zentralen Ort ab. Bei einer Multi-Tenancy-App, wo ein Job auf der falschen Verbindung ein Sicherheitsthema ist, schlägt eine Tabelle mit Routen jede Jagd nach Dispatch-Stellen. Meine gequeueten Telegram-Alerts sind genau diese Art von Job.
  • Cache::touch(): PR #55954 verlängert einen Cache-TTL, ohne den Wert zu holen und neu zu schreiben; Redis antwortet mit einem einzelnen EXPIRE statt eines Roundtrips für den ganzen Wert. Gleitende Session-Fenster sind kein Get-then-Put-Tanz mehr.
  • PreventRequestForgery: die CSRF-Middleware formalisiert mit origin-aware Verifikation, token-basierte Checks bleiben unterstützt. Genau der Default, den man schon an haben will, bevor die Angriffsklasse in den Nachrichten landet.

Was die Minors seit dem März nachgelegt haben#

Das Release war ein Anfang, kein Stopp. Laravel behandelt Minor-Versionen als Lieferkanal, und das Changelog zeigt es: Die jüngsten Framework-Einträge stammen aus dem August. Der Monat brachte ein #[DebounceFor]-Attribut, das einen Schwall von Events zur selben Ressource auf einen einzigen Queue-Lauf kollabiert, automatische Wiederholung sicherer Redis-Commands nach einer vorübergehenden Verbindungsstörung (einstellbar über REDIS_COMMAND_RETRIES), queue:pause --all für den Tag, an dem alles brennt, und einen read-through-Filesystem-Driver, der Dateien bei jedem Abruf auf eine neue Disk migriert. Die Attribut-Welle vom März rollt weiter, und die Queue- und Cache-Flächen, die ich täglich nutze, werden leiser.

Die Vektor-Geschichte hat sich im selben Monat verbreitert. Ein AsVector-Eloquent-Cast behandelt Vektor-Spalten als schlichte Arrays aus Floats, und dieselben whereVectorSimilarTo-Methoden kompilieren jetzt auch gegen MariaDBs Vektorfunktionen. Semantische Suche wird zum normalen Laravel, und genau das will ich von ihr.

Das AI SDK und die leise Vektor-Suche darunter#

Die Ankündigung führt mit dem First-Party-AI-SDK: eine API für Textgenerierung, Tool-calling-Agenten, Embeddings, Audio, Bilder und Vector-Store-Integrationen, von der Konstruktion her provider-agnostisch. Ich habe darauf noch kein Feature gebaut und schreibe deshalb keine Review. Das SDK iteriert unter mir weiter, im August lernten Agenten den Umgang mit unbekannten Tool-Calls. Unter ihm sitzt der Teil, den ich tatsächlich zuerst bauen würde: native Vektor-Queries im Query Builder. whereVectorSimilarTo('embedding', '…') gegen PostgreSQL plus pgvector, mit Embeddings direkt aus Strings, macht semantische Suche zu einer Abfrage statt einem Nebenprojekt.

Upgrade vor dem Kalender?#

Die Support-Tabelle nennt die echte Frist. Laravel 12 bekommt seit dem 13. August 2026 keine Bugfixes mehr, das ist mit dem Schreiben dieses Textes sechs Wochen her, und die Security-Fixes enden am 24. Februar 2027 (Laravel News). Laravel 13 bekommt Bugfixes bis Q3 2027 und Security-Fixes bis März 2028. Ein Upgrade, das die Release Notes selbst als Low-Effort beschreiben, ist jetzt billig und spätestens im Februar fällig.

Für die Probleme aus meinem Multi-Tenancy-Artikel ändert dieses Release nichts. Genau dafür ist ein Stability-Release da.