Laravel Release Notes
Last updated: Mar 14, 2026
Laravel Products
All Laravel Release Notes (118)
- Feb 28, 2026
- Date parsed from source:Feb 28, 2026
- First seen by Releasebot:Mar 14, 2026
Laravel Framework 12.x - Add Support for `temporaryUploadUrl` to the `local` Filesystem
Laravel enables temporary upload URLs on the local driver to unify upload flows across local, staging, and production.
Pull request by @mnapoli
You can now generate temporary upload URLs even when you're using the local driver, making it much easier to build consistent upload flows across local, staging, and production environments.
Original source Report a problemuse Illuminate\Support\Facades\Storage; $url = Storage::disk('local')->temporaryUploadUrl( 'uploads/incoming/video.mp4', now()->addMinutes(10), ['Content-Type' => 'video/mp4'] ); - Feb 28, 2026
- Date parsed from source:Feb 28, 2026
- First seen by Releasebot:Mar 14, 2026
Laravel Framework 12.x - [12.x] Add `makeMany` Method to Factory
Laravel introduces makeMany to generate multiple in-memory model instances without persisting, ideal for tests and previews.
Pull request by @jackbayliss
makeMany() gives you a clean, expressive way to generate multiple in-memory model instances without persisting anything. It's ideal for tests, previews, and shaping data before a write.
Original source Report a problem$users = User::factory()->makeMany(3); $payload = $users->map->only(['name', 'email']); All of your release notes in one feed
Join Releasebot and get updates from Laravel and hundreds of other software products.
- Feb 28, 2026
- Date parsed from source:Feb 28, 2026
- First seen by Releasebot:Mar 14, 2026
Laravel Framework 12.x - [12.x] Allow Closures for Values in `firstOrCreate` and `createOrFirst`
Laravel adds lazy attribute computation on record creation to reduce queries, illustrated by firstOrCreate with Geocoder resolution.
Pull request by @gcavanunez
You can now lazily compute attribute values only when a record is actually being created. That means fewer unnecessary queries and less wasted work when the model already exists.
Original source Report a problem$location = Location::firstOrCreate( ['address' => $address], fn () => ['coordinates' => Geocoder::resolve($address)], ); - Feb 28, 2026
- Date parsed from source:Feb 28, 2026
- First seen by Releasebot:Mar 14, 2026
Laravel Framework 12.x - [12.x] Support `afterSending` Method on Notification
Laravel introduces an afterSending hook for notifications enabling audit logging and cleanup after dispatch.
Pull request by @gdebrauwer
afterSending() lets you hook into the lifecycle after a notification is dispatched, which is perfect for audit logging, metrics, or cleanup work without cluttering your notification channels.
Code
Original source Report a problemclass BookingNotification extends Notification { public function __construct( public Booking $booking; ) { // } public function via() { return ['mail']; } public function toMail() { // ... } public function afterSending($notifiable, $channel, $response) { $this->booking->update(['notified_at' => now()]); } } - Feb 28, 2026
- Date parsed from source:Feb 28, 2026
- First seen by Releasebot:Mar 14, 2026
Laravel Framework 12.x - [12.x] Exclude Decorative ASCII Art SVG from Exception Page in Non-Browser Contexts
Laravel reduces console and non-browser noise by removing decorative ASCII SVG payload from error outputs, cleaning logs, CI, agents, and API responses.
Release notes
Pull request by @serhiilabs
Console and non-browser contexts no longer receive the decorative ASCII SVG payload, keeping error output cleaner in logs, CI, agent, and API responses. Furthermore...
Original source Report a problem - Feb 28, 2026
- Date parsed from source:Feb 28, 2026
- First seen by Releasebot:Mar 14, 2026
Laravel Framework 12.x - [12.x] Use JS to Create the Laravel ASCII SVG Logo on the Fly
Laravel updates the exception page ASCII SVG to be generated on the fly with JavaScript, making output leaner and better for various rendering contexts.
Pull request by @markjaquith
The exception page ASCII SVG is now generated on the fly with JavaScript, keeping output leaner and better suited to different rendering contexts.
Original source Report a problem - Feb 28, 2026
- Date parsed from source:Feb 28, 2026
- First seen by Releasebot:Mar 14, 2026
AI SDK - [12.x] Add `InteractsWithData::clamp()`
Laravel adds clamp() on InteractsWithData to bound numeric input for pagination and user controls.
Pull request by @cosmastech
A clamp() method has been added to the InteractsWithData trait, giving you a tidy way to bound numeric input values, which is great for pagination, limits, sliders, and any user-controlled numbers.
// Instead of:
Original source Report a problem
/** @var int<PHP_INT_MIN, PHP_INT_MAX> $perPage /
$perPage = request()->integer('per_page', 50);
// You can now do:
/* @var int<1, 100> $perPage */
$perPage = request()->clamp('per_page', 1, 100, 50); - Feb 28, 2026
- Date parsed from source:Feb 28, 2026
- First seen by Releasebot:Mar 14, 2026
AI SDK - Make Provider Default Models Configurable
Laravel lets users configure default text, image, audio, transcription, and embedding models in ai.php for granular control.
Pull request by @pfrug
The default models used for text, images, audio, transcription, and embeddings may are now configurable in your application's config/ai.php file. This gives you granular control over the exact models you'd like to use if you don't want to rely on the package defaults.
Original source Report a problemreturn [ 'models' => [ 'text' => [ 'default' => 'claude-sonnet-4-6', 'cheapest' => 'claude-haiku-4-5-20251001', 'smartest' => 'claude-opus-4-6', ], ], ] - Feb 28, 2026
- Date parsed from source:Feb 28, 2026
- First seen by Releasebot:Mar 14, 2026
AI SDK - Add Support for Timeouts in Transcription
Laravel adds timeout support to Transcription enabling better control of production workloads and prevents long requests from tying up workers.
Pull request by @NietThijmen
Transcription now supports timeouts, giving you better control in production workloads and preventing long-running requests from tying up workers.
Original source Report a problem$transcript = Transcription::fromPath('./podcast.mp3')->timeout(240)->generate(Lab::ElevenLabs); - Feb 28, 2026
- Date parsed from source:Feb 28, 2026
- First seen by Releasebot:Mar 14, 2026
Boost - Added Support for Loading Guidelines and Skills Directly from Vendor Packages
Laravel enables guidelines and skills to be loaded directly from vendor packages, keeping them in sync with the package version.
Pull request by @pushpak1300
Guidelines and skills can now be loaded directly from vendor packages, ensuring that guidelines always match the package version you are using and will never go stale.
Original source Report a problem