Skip to main content
May 2026 brought full-stack scale-to-zero and managed queues to Laravel Cloud, along with font optimization, multi-agent pipelines, and several practical framework features. Source: Laravel May Product Updates

Laravel Framework

@fonts Blade directive

The @fonts directive automatically handles the preload links, @font-face styles, and HTTP/2 push headers required for web fonts. It reads the manifest generated by the Vite font plugin and injects the necessary elements.
{{-- Load every font --}}
@fonts

{{-- Load selected font families --}}
@fonts(["sans", "mono"])
Limit fonts per page to prevent unnecessary preloads and improve performance.

Interruptible jobs

The new Interruptible interface lets a job respond when its queue worker receives SIGTERM during deployment. A job can stop loops, release locks, and save state before the worker shuts down.
use Illuminate\Contracts\Queue\Interruptible;
use Illuminate\Contracts\Queue\ShouldQueue;

class ProcessLargeReport implements ShouldQueue, Interruptible
{
    public function handle(): void
    {
        foreach ($this->getChunks() as $chunk) {
            if ($this->shouldInterrupt()) {
                $this->saveProgress();
                return;
            }

            $this->processChunk($chunk);
        }
    }
}

JSON exceptions for API routes

Routes defined in api.php now always return JSON error responses, avoiding cases where an API route previously returned HTML.

Storage cache store

The new storage cache store uses the filesystem as its backend while integrating with Laravel’s storage configuration.
'stores' => [
    'storage' => [
        'driver' => 'storage',
        'disk' => 'local',
        'path' => 'framework/cache',
    ],
],

Storing large SQS payloads on disk

Laravel can store SQS payloads larger than 256 KB on disk, making queues easier to use with large data sets.

Environment filtering for scheduled commands

Filter schedule:list output by environment:
php artisan schedule:list --environment=production

Stop workers when the queue is empty

The --stop-when-empty option automatically stops a queue worker after all jobs have been processed, which is useful for batch and CI workloads.
php artisan queue:work --stop-when-empty

foreignUuidFor schema helper

foreignUuidFor() is the UUID equivalent of foreignIdFor().
Schema::table('posts', function (Blueprint $table) {
    $table->foreignUuidFor(User::class)->constrained();
});

AI subagent support

Laravel AI agents can delegate work to other agents. Return an agent from tools() and the parent’s language model can call it like any other tool. Each subagent receives isolated context, so conversation histories do not become mixed.
class OrchestratorAgent extends Agent
{
    public function tools(): array
    {
        return [
            new AnalysisAgent(),
            new WritingAgent(),
            new SearchTool(),
        ];
    }
}

Inertia 3.x

  • mode for router.poll: controls polling behavior
  • Dynamic usePoll data: updates data while polling
  • Inertia.once: supports one-time events
  • rescue slot for <Deferred>: provides a fallback when a deferred prop fails

PAO

PHP Agentic Output is now included in starter kits by default. It also adds Rector JSON support, agent guidance for PHPStan errors, the PAO_FORCE environment variable, and support for Artisan commands.

Laravel Cloud, Laravel Forge, and Nightwatch

ProductKey updates
Laravel CloudFull-stack scale-to-zero with sub-500 ms startup, managed queues, spending limits, and a $5 Starter plan
Laravel ForgeManaged MySQL 8.4, PHP 8.5 by default, and automatic Horizon restarts after environment changes
NightwatchMCP server access to route, query, and job performance metrics
Last modified on July 13, 2026