December closed out the year with improvements that give you more control and smoother day-to-day workflows across the Laravel ecosystem.
Laravel Cloud provides new billing alerts, while the framework adds refinements to HTTP workflows, tooling, and core language integrations. Forge and Nightwatch deliver quality-of-life improvements for deployment and debugging, and Inertia, Boost, MCP, and Echo introduce updates that reduce friction in real-world applications.
Laravel Cloud

Billing Alerts
Billing alerts are now available in Laravel Cloud. You can configure spending thresholds and receive notifications when those limits are crossed.
This helps teams stay ahead of unexpected costs and makes it easier to manage budgets as applications scale.
Learn more in the billing alerts documentation.
Read the full Laravel Cloud changelog to learn more.
Laravel Forge
Laravel Forge continues to improve deployment workflows with better support for modern frontend tooling and repository structures.

Package Manager Selection
You can now choose your preferred JavaScript package manager when creating new sites, including npm, pnpm, Bun, or Yarn.
Monorepo-Friendly Root Configuration
Forge now allows you to configure an application root directory, making it easier to deploy projects that live inside monorepos.
Read the full Laravel Forge changelog.
Laravel Nightwatch
Copy Exceptions as Markdown
Nightwatch now allows you to copy exceptions as a structured Markdown snapshot.
The copied output includes code excerpts and detailed trace data, including executed queries leading up to the error. These are formatted for direct use in AI tools and shared debugging workflows.
Read the full Nightwatch changelog for more info.
Laravel Framework 12.x
HTTP Client After-Response Callbacks
The HTTP client now supports afterResponse callbacks, making it easy to inspect headers, emit events, or transform responses after a request completes.
Fluent Promise Support for HTTP Pools
HTTP pools now support fluent chaining, allowing pooled responses to be transformed into any structure instead of returning raw responses.
1$response = Http::pool(function (Pool $pool) { 2 $pool->as('cosmatech') 3 ->get('https://cosmastech.com') 4 ->then( 5 fn ($response) => strlen($response->body()) 6 ); 7 $pool->as('laravel') 8 ->get('https://laravel.com') 9 ->then(10 fn ($response) => strlen($response->body())11 );12});13 14/*15array:2 [16 "cosmatech" => 909517 "laravel" => 142202318]19*/
Lazy and Proxy Object Helpers
New lazy and proxy helpers improve ergonomics around PHP lazy objects and deferred instantiation.
Reload Command for Services
A new php artisan reload command provides a consistent way to reload services like Horizon, Octane, Reverb, and Pulse after deployments.
Updated Default Email Template
The default Laravel email template has been refreshed with a cleaner, more modern design.
Wayfinder
The next version of Wayfinder entered public beta with dramatically expanded TypeScript generation across Laravel applications. Two new packages used by Wayfinder also entered public beta:
Surveyor
Surveyor provides static analysis that extracts structured metadata from PHP and Laravel codebases.
1use Laravel\Surveyor\Analyzer\Analyzer; 2 3$analyzer = app(Analyzer::class); 4 5// Analyze a file by path 6$result = $analyzer->analyze('/path/to/your/File.php'); 7 8// Access the analyzed scope 9$scope = $result->analyzed();10 11// Access the class result12$classResult = $result->result();
Ranger
Ranger builds on Surveyor to collect and expose detailed application structure for developer tooling.
1use Laravel\Ranger\Ranger; 2use Laravel\Ranger\Components; 3use Illuminate\Support\Collection; 4 5$ranger = app(Ranger::class); 6 7// Register callbacks for individual items 8$ranger->onRoute(function (Components\Route $route) { 9 echo $route->uri();10});11 12$ranger->onModel(function (Components\Model $model) {13 foreach ($model->getAttributes() as $name => $type) {14 //15 }16});17 18$ranger->onEnum(function (Components\Enum $enum) {19 //20});21 22$ranger->onBroadcastEvent(function (Components\BroadcastEvent $event) {23 //24});25 26// Or register callbacks for entire collections27$ranger->onRoutes(function (Collection $routes) {28 // Called once all of the routes have been discovered and processed29});30 31$ranger->onModels(function (Collection $models) {32 // Called once all of the models have been discovered and processed33});34 35// Walk through the application and trigger all callbacks36$ranger->walk();
Inertia
Flash Data Support
Inertia now supports Flash Data for one-time messages, like toasts, available via page.flash and client-side events.
Built-In Precognition Support
Laravel Precognition is now built into Inertia’s useForm hook and Form component for simple live validation.
Smaller Initial Page Payloads
Initial page data can now be loaded from a JSON script tag, reducing payload size and speeding up parsing.
Once Props
once props allow expensive or rarely changing data to be cached client-side and reused across visits.
Boost
Smarter Package Guidelines Loading
Boost now loads guidelines only for packages actively used, reducing context size and improving token efficiency.
Echo
Event Payload Type Inference
Echo can now infer event payload types directly from broadcast events when a module override file is provided.
This reduces manual typing and improves type safety when working with typed Echo clients.
1import { App } from "./types"; 2 3declare module "@laravel/echo-react" { 4 interface Events { 5 ".App.Events.UserCreated": { 6 user: App.Models.User; 7 }; 8 ".App.Events.OrderShipped": { 9 order: App.Models.Order;10 user: App.Models.User;11 };12 }13}
MCP
Completion Support
MCP now supports the completion utility, enabling autocomplete suggestions for prompts and resource templates.
Resource Annotations
Resources can now declare annotations like audience, priority, and lastModified to guide client behavior.
Structured Output Support
Structured content and output schemas improve compatibility with AI clients that require machine-readable responses.
VS Code Extension
Scope Parameters in Docblocks
Generated model docblocks now include scope parameters for clearer usage.
Generate Namespace Command
A new command generates the correct namespace for a class directly from the editor.
Read the full Laravel Framework changelog.

