Zum Inhalt springen

Laravel Release Notes

604 Einträge aus 4 Quellen. Zuletzt aktualisiert:

Folge Laravel, um die Release Notes in deinen Feed zu holen.

Angaben zum Datum

Datum aus der Quelle.

Erstmals gesehen am .

Laravel Framework von Laravel

Laravel 12.x: BackedEnum für Cache-Keys erlaubt

Backed Enums lassen sich nun auch als Cache-Keys verwenden.

Pull request by @jackbayliss

Same productivity boost, now for cache: backed enums can be used as cache keys, helping you standardize key naming and avoid subtle collisions. Great fit for teams that want a single source of truth for cache identifiers.

enum CacheKey: string
{
    case Settings = 'settings.global';
}

Cache::put(CacheKey::Settings, $settings, now()->addHour());

$settings = Cache::get(CacheKey::Settings);

Originalquelle(öffnet in neuem Tab)Problem melden

Angaben zum Datum

Datum aus der Quelle.

Erstmals gesehen am .

Laravel Framework von Laravel

Laravel 12.x: --readable-Flag für env:encrypt

Der Befehl php artisan env:encrypt hat das neue Flag --readable, das Schlüsselnamen in der verschlüsselten Ausgabe sichtbar lässt und nur die Werte schützt.

Pull request by @mathiasgrimm

A practical quality-of-life improvement: --readable makes encrypted env output easier to audit by keeping key names visible, which helps during reviews and incident response while still protecting secret values. If you're hardening deployments, this pairs nicely with Laravel's environment encryption workflow.

php artisan env:encrypt --readable

Originalquelle(öffnet in neuem Tab)Problem melden

Angaben zum Datum

Datum aus der Quelle.

Erstmals gesehen am .

Laravel

Inertia: async- und sync-Optionen für cancelAll

Die Methode router.cancelAll unterstützt jetzt die Optionen async und sync und ersetzt das veraltete router.cancel(), etwa über router.cancelAll({ async: false }).

Pull request by @pascalbaljet

Replacing the deprecated router.cancel(), you can now get the same functionality with router.cancelAll({ async: false }). Giving you more control over request cancellation means smoother UX under heavy navigation or rapid input.

Originalquelle(öffnet in neuem Tab)Problem melden

Angaben zum Datum

Datum aus der Quelle.

Erstmals gesehen am .

Laravel

Inertia: dontRemember() für den Form Helper

Der Form Helper erhält die Methode dontRemember(), mit der sich das Form-Remembering von Inertia für einzelne Formulare abschalten lässt.

Pull request by @pascalbaljet

This gives you a straightforward way to opt out of Inertia's form remembering behavior when it's not desired. This is handy for sensitive forms or one-time flows where you don't want old values sticking around (e.g., password resets, invite flows).

We made a slew of updates to all of our Starter Kits this month! Amongst the various tune-ups:

Originalquelle(öffnet in neuem Tab)Problem melden

Angaben zum Datum

Datum aus der Quelle.

Erstmals gesehen am .

Laravel

Starter Kits: Sicherere Standardwerte im AppServiceProvider

Der AppServiceProvider der Starter Kits setzt nun sicherere Standardwerte: unveränderliche Datumsobjekte mit CarbonImmutable, keine destruktiven Befehle in Produktion und sicherere Passwörter in Produktion.

Pull request by @WendellAdriel

Safer defaults in the AppServiceProvider reduce the "oops" factor on new projects, helping you start with a more secure, production-friendly baseline while keeping the kit lightweight and easy to customize.

- Enforcing immutable dates with CarbonImmutable
- Not allowing destructive commands in production
- Requiring safer passwords by default in production

Originalquelle(öffnet in neuem Tab)Problem melden

Angaben zum Datum

Datum aus der Quelle.

Erstmals gesehen am .

Laravel

Echo: Performance- und Stale-Closure-Probleme in useEcho behoben

Der useEcho-Hook wurde bezüglich Stale-Closure-Fehlern und Performance-Problemen verbessert und arbeitet damit zuverlässiger und schneller.

Pull request by @pataar

This improves hook reliability and performance by addressing stale closure issues, meaning fewer head-scratching realtime UI bugs and smoother rendering under heavy event traffic. If you're building reactive dashboards or chat experiences, this makes your client-side behavior more dependable.

Originalquelle(öffnet in neuem Tab)Problem melden

Angaben zum Datum

Datum aus der Quelle.

Erstmals gesehen am .

Laravel

Horizon: Neuer Befehl horizon:listen

Der neue Befehl horizon:listen beobachtet Dateiänderungen und startet Horizon in der Entwicklung automatisch neu, ähnlich wie queue:listen.

Pull request by @mathiasgrimm

Introducing a new horizon:listen command that watches for file changes and automatically restarts Horizon during development. This new command mirrors Laravel's built-in queue:listen command behavior.

Originalquelle(öffnet in neuem Tab)Problem melden

Angaben zum Datum

Datum aus der Quelle.

Erstmals gesehen am .

Laravel

Pint: Neues agent-Format für KI-Agenten

Pint bietet das neue Flag --format agent, das automatisch in OpenCode oder Claude Code genutzt wird und strukturierte, minimale JSON-Ausgabe für KI-Agenten liefert.

Pull request by @nunomaduro

A new --format agent flag was added that gets automatically used when Pint is executed within OpenCode or Claude Code.

The default Pint output is designed for humans: colorful, with progress dots and formatted summaries. AI agents need something different: structured JSON they can reliably parse, unambiguous status values like "status":"pass" instead of inferring from formatted text, minimal output that saves context window and reduces token cost, and deterministic results without ANSI colors or formatting noise.

Originalquelle(öffnet in neuem Tab)Problem melden

Angaben zum Datum

Datum aus der Quelle.

Erstmals gesehen am .

Laravel

VS Code Extension: Autovervollständigung für FormRequest-Regeln

Die VS Code Extension unterstützt nun Autovervollständigung für Validierungsregeln in FormRequest.

Pull request by @N1ebieski

Smarter autocomplete for FormRequest validation rules means fewer typos and faster validation authoring, which is particularly helpful when you're juggling complex rule sets.

Originalquelle(öffnet in neuem Tab)Problem melden

Angaben zum Datum

Datum aus der Quelle.

Erstmals gesehen am .

Herd Macos von Laravel

Laravel Herd MacOS 1.25.0 mit Helper-Update

Das Update enthält einen neuen Hintergrund-Helper, benutzerdefinierte .pem-Zertifikate, individuelle Dump-Überwachung und mehrere Fehlerbehebungen, darunter ein Absturz auf macOS Sequoia.

Herd Helper Update

This version contains an update of the Herd background helper. You will need to provide your password after updating.

New features

  • You can now place custom .pem certificates in config/certificates/ to use them
  • You can now toggle watching for "Dumps" individually
  • Added "Laravel Boost" as an option in the site wizard

Fixes and Improvements

  • The version and build number in Settings > About are now selectable for easier copying
  • Running herd link (via CLI or GUI) will update your .env with the correct app URL
  • Fixed a crash of the privileged helper on macOS Sequoia 26.2+ that could prevent nginx from stopping
  • Fixed an issue where the Livewire Volt option was hidden when selecting WorkOS in site wizard
  • Fixed an issue where the mail inspector sidebar would unexpectedly open when resizing the window
  • Fixed an issue with myBB in combination with Herd
  • Fixed an issue where running herd init would not work with MinIO
  • Fixed an issue where installing Reverb would fail on PHP 8.5
  • Dump settings are now disabled when general dump interception is paused
  • Updated the built-in Expose binary
  • Updated the built-in Laravel installer
  • Updated the built-in Composer binary
  • Updated the built-in cacert.pem file

Originalquelle(öffnet in neuem Tab)Problem melden

Angaben zum Datum

Datum aus der Quelle.

Erstmals gesehen am .

Herd Windows von Laravel

Laravel Herd Windows 1.25.0 mit neuen Optionen

Die Dump-Überwachung kann nun einzeln gesteuert werden, "Laravel Boost" ist im Website-Assistenten verfügbar, und mehrere Fehler wurden behoben.

New features

  • You can now toggle watching for "Dumps" individually
  • Added "Laravel Boost" as an option in the site wizard

Fixes and Improvements

  • Running herd link (via CLI or GUI) will update your .env with the correct app URL
  • Fixed an issue with myBB in combination with Herd
  • Fixed an issue where running herd init would not work with MinIO
  • Fixed an issue where installing Reverb would fail on PHP 8.5
  • Dump settings are now disabled when general dump interception is paused
  • Updated the built-in Expose binary
  • Updated the built-in Laravel installer
  • Updated the built-in Composer binary
  • Updated the built-in cacert.pem file

Originalquelle(öffnet in neuem Tab)Problem melden

Angaben zum Datum

Datum aus der Quelle.

Erstmals gesehen am .

Laravel Framework von Laravel

Laravel 12.x: Callbacks nach dem Erstellen einer HTTP-Response

Der HTTP Client erhält die neue Methode afterResponse, mit der sich die Response eines HTTP-Aufrufs prüfen und verändern lässt.

Pull request by @cosmastech

A new afterResponse method was added to the HTTP Client, which allows the user to inspect and mutate the response returned from an HTTP call:

Http::acceptJson()
    ->withHeader('X-Shopify-Access-Token', $credentials->token)
    ->baseUrl("https://{$credentials->shop_domain}.myshopify.com/admin/api/2025-10/")
    ->afterResponse(
        // Report any deprecation notices that were in the header
        function (Response $response) use ($credentials) {
            if ($header = $response->header('X-Shopify-API-Deprecated-Reason')) {
                event(new ShopifyDeprecationNotice($credentials->shop, $header));
            }
        })
    ->afterResponse(
        // Map the response into our own custom response class
        fn (Response $response) => new ShopifyResponse($response->toPsrResponse()),
    )
    ->afterResponse(
        // Report the cost of the query
        static fn (ShopifyResponse $response) => QueryCostResponse::report(
            $response->getQueryCost(),
            $credentials->shop
        ),
    );

Originalquelle(öffnet in neuem Tab)Problem melden

Angaben zum Datum

Datum aus der Quelle.

Erstmals gesehen am .

Laravel Framework von Laravel

Laravel 12.x: FluentPromise für sauberes Chaining in Http::pool

Mit der Einführung von FluentPromise lässt sich in Http::pool nun eigenes Chaining nutzen, sodass beliebige Werte statt der ursprünglichen Response zurückgegeben werden können.

Pull request by @cosmastech

Userland chaining in Http::pool is now possible with the introduction of FluentPromise. Previously, the chain would return the original response, limiting flexibility. With this change, users can access the underlying array and return whatever they wish:

$response = Http::pool(function (Pool $pool) {
    $pool->as('cosmatech')
        ->get('https://cosmastech.com')
        ->then(
            fn ($response) => strlen($response->body())
        );
    $pool->as('laravel')
        ->get('https://laravel.com')
        ->then(
            fn ($response) => strlen($response->body())
        );
});

/*
array:2 [
  "cosmatech" => 9095
  "laravel" => 1422023
]
*/

Originalquelle(öffnet in neuem Tab)Problem melden

Angaben zum Datum

Datum aus der Quelle.

Erstmals gesehen am .

Laravel Framework von Laravel

Laravel 12.x: Neue Helfer lazy und proxy für Lazy Objects

Zwei neue Helfer, lazy und proxy, machen die Nutzung der neuen Lazy Objects von PHP komfortabler.

Pull request by @timacdonald

Two new helpers, lazy and proxy, were added to make PHP's new lazy objects more ergonomic to use.

<?php

use Illuminate\Support\Facades\Http;
use Vendor\Facades\ResultFactory;
use Vendor\Result;
use function Illuminate\Support\lazy;
use function Illuminate\Support\proxy;

$response = Http::get(...);

$instance = lazy(Result::class, fn () => [$response->json()]);
$instance = proxy(Result::class, fn (): Result => ResultFactory::make($response->json()));

Originalquelle(öffnet in neuem Tab)Problem melden

Angaben zum Datum

Datum aus der Quelle.

Erstmals gesehen am .

Laravel Framework von Laravel

Laravel 12.x: Neuer Befehl php artisan reload

Der neue Befehl php artisan reload erlaubt es Service Providern, eigene Reload-Befehle zu registrieren, die nach dem Deployment ausgeführt werden können, und ist bereits für Horizon, Pulse, Reverb und Octane umgesetzt.

Pull request by @barryvdh

A new php artisan reload command was introduced, allowing service providers to add their own commands for reloading. This makes it easier for services to specify one command to include in their deployment steps after the deployment is completed.

The applicable reload commands have already been added to Laravel Horizon, Pulse, Reverb, and Octane.

public function boot()
{
    $this->reloads('reverb:restart');
}

Originalquelle(öffnet in neuem Tab)Problem melden

Angaben zum Datum

Datum aus der Quelle.

Erstmals gesehen am .

Laravel

Wayfinder: Modernisiertes E-Mail-Template und öffentliche Beta

Das Standard-E-Mail-Template von Laravel wurde modernisiert, und die nächste Wayfinder-Version ist in die öffentliche Beta gestartet und generiert deutlich mehr TypeScript aus der Laravel-App.

Pull request by @taylorotwell

The default Laravel email template was cleaned up and modernized, giving it a fresh coat of paint and an elevated, professional appearance.

The next version of Wayfinder entered public beta.

This version generates far more TypeScript from your Laravel app than the previous version, including routes and controller actions, named routes, form requests, Eloquent models, PHP enums, Inertia.js page props, Inertia shared data, broadcast channels, broadcast events, environment variables, and more.

Two new packages used by Wayfinder were also introduced into public beta:

Originalquelle(öffnet in neuem Tab)Problem melden

Angaben zum Datum

Datum aus der Quelle.

Erstmals gesehen am .

Laravel

Wayfinder: Laravel Surveyor in öffentlicher Beta

Laravel Surveyor ist ein (weitgehend) statisches Analysewerkzeug, das detaillierte PHP- und Laravel-Metadaten wie Klassen, Methoden, Properties und Rückgabetypen aus Code extrahiert und strukturiert bereitstellt.

Laravel Surveyor is a powerful (mostly) static analysis tool designed to extract detailed PHP and Laravel-specific information from your code. It parses and analyzes PHP files to extract comprehensive metadata about classes, methods, properties, return types, and more, making this information available in a structured, consumable format for use by other tools and packages.

use Laravel\Surveyor\Analyzer\Analyzer;

$analyzer = app(Analyzer::class);

// Analyze a file by path
$result = $analyzer->analyze('/path/to/your/File.php');

// Access the analyzed scope
$scope = $result->analyzed();

// Access the class result
$classResult = $result->result();

Originalquelle(öffnet in neuem Tab)Problem melden

Angaben zum Datum

Datum aus der Quelle.

Erstmals gesehen am .

Laravel

Inertia: Laravel Ranger in öffentlicher Beta

Laravel Ranger ist eine Introspektionsbibliothek, die auf Surveyor aufbaut und Routen, Models, Enums, Broadcast-Events, Umgebungsvariablen und Inertia.js-Komponenten als Datenobjekte bereitstellt.

Laravel Ranger is a supercharged introspection library for Laravel applications. It walks through your codebase and collects detailed information about your application's components, including routes, models, enums, broadcast events, environment variables, and Inertia.js components.

It uses Surveyor under the hood and extracts the results into detailed data transport objects for straightforward consumption.

use Laravel\Ranger\Ranger;
use Laravel\Ranger\Components;
use Illuminate\Support\Collection;

$ranger = app(Ranger::class);

// Register callbacks for individual items
$ranger->onRoute(function (Components\Route $route) {
    echo $route->uri();
});

$ranger->onModel(function (Components\Model $model) {
    foreach ($model->getAttributes() as $name => $type) {
        //
    }
});

$ranger->onEnum(function (Components\Enum $enum) {
    //
});

$ranger->onBroadcastEvent(function (Components\BroadcastEvent $event) {
    //
});

// Or register callbacks for entire collections
$ranger->onRoutes(function (Collection $routes) {
    // Called once all of the routes have been discovered and processed
});

$ranger->onModels(function (Collection $models) {
    // Called once all of the models have been discovered and processed
});

// Walk through the application and trigger all callbacks
$ranger->walk();

Originalquelle(öffnet in neuem Tab)Problem melden

Angaben zum Datum

Datum aus der Quelle.

Erstmals gesehen am .

Laravel

Inertia: Unterstützung für Flash Data

Inertia unterstützt jetzt Flash Data, die anders als normale Props nicht im Verlaufsstatus des Browsers gespeichert wird und über page.flash, das flash-Event oder den onFlash-Callback verfügbar ist.

Pull request by @pascalbaljet

Unlike regular props, Flash Data isn't persisted in the browser's history state, making it ideal for one-time notifications like toasts. On the frontend, Flash Data is available on page.flash. You can also listen for Flash Data using the global flash event or the onFlash callback.

<template>
    <div v-if="page.flash.toast" class="toast">
        {{ page.flash.toast.message }}
    </div>
</template>
router.on("flash", (event) => {
    if (event.detail.flash.toast) {
        showToast(event.detail.flash.toast);
    }
});

router.post("/users", data, {
    onFlash: ({ newUserId }) => {
        // ...
    },
});

Originalquelle(öffnet in neuem Tab)Problem melden

Angaben zum Datum

Datum aus der Quelle.

Erstmals gesehen am .

Laravel

Inertia: Precognition direkt integriert

Laravel Precognition ist nun direkt in den useForm-Hook und die Form-Komponente integriert, sodass für Live-Validierung keine zusätzlichen Bibliotheken nötig sind.

Pull requests by @pascalbaljet: #2684, #2700

Laravel Precognition is now baked directly into the useForm hook and the Form component; there is no need to install additional libraries. Live validation has never been easier.

<template>
    <Form action="/users" method="post" #default="{ errors, invalid, validate, validating }">
        <div>
            <input name="name" @change="validate('name')" />
            <p v-if="invalid('name')">{{ errors.name }}</p>
        </div>

        <div>
            <input name="email" @change="validate('email')" />
            <p v-if="invalid('email')">{{ errors.email }}</p>
        </div>

        <p v-if="validating">Validating...</p>
    </Form>
</template>

Originalquelle(öffnet in neuem Tab)Problem melden