Design & Development13 min read

What's New in Laravel — April 2026: Debounceable Jobs, Native AI Gateways & Passkeys

Ritesh PatelBy Ritesh Patel|May 7, 2026

Last month was quietly significant for Laravel. Three threads moved forward in parallel — production queue infrastructure on top of Laravel 13, AI and agent tooling going first-party across the stack, and modern authentication arriving as a Laravel package. Each one shipped in small increments, but together they tell a clear story about where the framework is heading in 2026.

This is the April roundup — what shipped across Laravel 13 (releases v13.3.0 through v13.6.0) and the broader Laravel organization between April 1 and April 27, 2026, and what it actually means for teams running Laravel in production.

In This Article

Framework: The Queue Got Serious

April brought four point releases of laravel/framework — v13.3.0 through v13.6.0 — and the through-line is queue infrastructure maturity.

Debounceable queued jobs (v13.6.0, April 21)

The headline feature, shipped in v13.6.0 of laravel/framework. When the same job is dispatched multiple times within a window, only the last dispatch executes.

PHP
1class ProcessUserUpdate implements ShouldQueue, ShouldBeDebounced
2{
3    public int $debounce = 30; // seconds
4
5    public function debounceKey(): string
6    {
7        return "user:{$this->userId}";
8    }
9}

This is different from ShouldBeUnique, which rejects additional dispatches at dispatch time. Debounce is the opposite — it accepts every dispatch but only executes the last one in the window.

Why it matters: A user updates their profile five times in thirty seconds. Without debounce that's five search-index rebuilds, five cache invalidations, five webhook fires — most of them wasted work. With debounce, the queue waits, drops four, runs the last.

We've written custom debouncers in past projects to handle this pattern — usually 60–80 lines of cache-locking code per job class. v13.6.0 replaces that with a contract and a property.

First-class Redis Cluster Queue support (v13.5.0, April 14)

Laravel's Queue and ConcurrencyLimiter now support Redis Cluster natively. No third-party packages, no custom connection drivers.

The complementary release on the same day from the Horizon team — laravel/horizon v5.46.0 (April 21) — added matching first-class Redis Cluster support to the dashboard. The two were clearly designed to ship together.

Why it matters: Picture a queue processing transcripts from thousands of concurrent voice calls (the Wurkzen Rainmaker pattern we ship at Treesha). At that scale, single-Redis hits a memory and CPU ceiling before the worker count does — and the workaround historically was either sharding by hand or reaching for a community package and hoping it kept up with framework releases. Now it's first-party.

Form Request Strict Mode (v13.4.0, April 7)

A small change with significant implications for API design. Form requests can now operate in strict mode, rejecting unknown fields rather than silently ignoring them.

PHP
1public function rules(): array
2{
3    return [
4        'name' => 'required|string',
5        'email' => 'required|email',
6    ];
7}
8
9public function strict(): bool
10{
11    return true; // Reject any field not declared above
12}

For external-facing APIs, "extra fields silently dropped" has been the Laravel default for a decade. It's permissive but it can hide bugs — clients send the wrong field name, your API returns 200, and nobody notices. Strict mode makes the validation contract explicit.

Why it matters: Webhook receivers and partner APIs are the obvious win. A client sends customer_email instead of the documented email and the request silently succeeds with a null value. Strict mode turns that silent failure into a 422 you'll see in your error tracker the same hour the integration breaks.

The release also added a flushState method so tests can reset global strict-mode behavior between cases.

The #[Delay] attribute consolidation

April standardized #[Delay] across the queue surface. It now works on:

  • Queued mailables (v13.5.0)
  • Bus Dispatcher (v13.4.0)
  • NotificationSender (v13.4.0)
PHP
1class WelcomeEmail extends Mailable implements ShouldQueue
2{
3    use Queueable;
4
5    #[Delay(seconds: 30)]
6    public function envelope(): Envelope
7    {
8        return new Envelope(subject: 'Welcome');
9    }
10}

Why it matters: When the delay is a property of the job (welcome emails always go out 30 seconds after signup, retry notifications always wait 5 minutes), the attribute keeps the timing co-located with the job definition instead of scattered across every dispatch site. Easier to find, easier to change, easier to test.

JSON-everywhere posture

Three additions in v13.6.0 line up:

  • JSON-formatted output for the built-in health route
  • JsonFormatter for the logging system (structured logs in core)
  • prefersJsonResponses() on the application builder

Together they signal Laravel's direction: structured, machine-readable output for ops and observability tooling, by default.

Why it matters: Your Kubernetes liveness probe gets a JSON response with check-by-check status (database, cache, queue) instead of a plain "200 OK." Loki, Datadog, and Grafana parse JsonFormatter logs without a custom parser. If you've been adding monolog/monolog JSON formatters by hand for years, the core formatter is now there.

Smaller wins worth knowing

  • MAC validation across all decryption keys (v13.6.0) — important for key-rotation scenarios; previously decryption could silently fail in subtle ways during rotation
  • Cloudflare Email Service support (v13.6.0) — first-party Mail transport for teams already on Cloudflare's stack. Why it matters: if DNS, CDN, and Workers already run through Cloudflare, you can keep transactional email in the same vendor relationship — one bill, one dashboard, one set of credentials.
  • Enums everywhere — April added enum support across PasswordBrokerManager, BroadcastManager, NotificationChannelManager, CacheManager, MailManager, AuthManager, and QueueManager. Why it matters: Cache::store(CacheStore::Redis) is searchable, refactor-safe, and discoverable in autocomplete. Cache::store('redis') is a magic string that breaks silently when you typo it.
  • assertDatabaseHas / assertDatabaseMissing accept arrays (v13.6.0) — small testing ergonomics win
  • BatchStarted event (v13.3.0) — fills the gap in the queue batch lifecycle hooks
  • Sub-minute scheduling fixes (v13.3.0) — addresses a long-standing bug at minute boundaries
Tip
What we're already using in client work: debounceable jobs replaces about 60 lines of custom debouncing logic per job in our codebases. The BatchStarted event closed a gap where we'd been polling job-batch tables to track when work began — it's now event-driven.

Laravel AI SDK: Native Gateways & Local Models

April was the maturity inflection point for laravel/ai. Eight releases shipped between April 1 and April 22, and the defining theme is independence.

The package dropped its prism-php/prism dependency entirely and built native first-party gateways for every major AI provider:

ProviderGateway typeRelease
OpenAINative (Responses API + Chat Completions)v0.4.0 → v0.4.4
AnthropicNative Messages APIv0.4.4 (April 6)
GroqNative Chat Completionsv0.4.4 (April 6)
GeminiNative gatewayv0.4.5 (April 8)
xAINative Responses APIv0.5.0 (April 9)
MistralNative gatewayv0.5.0 (April 9)
OpenRouterNative gatewayv0.6.0 (April 16)
OllamaNative gateway (local models)v0.6.0 (April 16)
AzureOpenAIMigrated off Prismv0.6.0 (April 16)
DeepSeekMigrated off Prismv0.6.0 (April 16)
VoyageAiMigrated off Prismv0.6.0 (April 16)
AWS BedrockNew provider addedv0.6.3 (April 22)

Eleven providers gone native in 22 days. For teams shipping AI features in Laravel, this matters in three ways.

1. Local models are now first-party

The Ollama gateway (v0.6.0) means Laravel apps can talk to fully local models — no API key, no external network hop, no token billing. For privacy-sensitive verticals (healthcare, legal, regulated industries), this changes the architectural conversation. You can prototype with cloud models and ship to production against a local Ollama instance with the same Laravel AI SDK code.

2. AWS Bedrock support

v0.6.3 (April 22) added AWS Bedrock as a provider. For teams already committed to AWS — and many enterprise clients are — this removes a procurement objection. They can bill AI workloads through their existing AWS contract instead of provisioning a separate OpenAI or Anthropic relationship.

3. Failover hardening across embeddings providers

VoyageAi, Cohere, and Jina all gained HandlesFailoverErrors in v0.6.1 (April 21). Embeddings workloads in production are now being treated like traditional infrastructure — multi-provider, fault-tolerant. Rerankers and embedding endpoints fail differently from chat endpoints, and the SDK handles those failures gracefully.

Smaller updates worth noting

  • Anthropic's smartest() default model bumped to Claude Opus 4.7 (v0.6.0)
  • Test suite migrated from PHPUnit to Pest (v0.5.1)
  • Timeout parameter added to the Agent contract (v0.6.1)
  • Provider overload errors now route through the failover system across native gateways (v0.5.1)
Warning
Production caveat: The AI SDK is still on 0.x — v0.6.3 by April's end. The API can change between minor versions. We're using it on client projects with the understanding that some refactoring may be needed at v1.0, but the architectural direction is now clear and the native-gateway approach removes our biggest concern (a third-party dependency in the AI critical path).

MCP Comes to Laravel

Two related packages had significant April releases that together change the "Laravel app as agent backend" story.

laravel/mcp — your Laravel app as an MCP server

The laravel/mcp package lets your application expose tools, resources, and prompts to AI clients (Claude Desktop, Cursor, Codex, Claude Code) over the Model Context Protocol. April shipped:

  • MCP UI App support (v0.6.6, April 14, and v0.7.0, April 21) — interactive HTML resources that an MCP client can render. This is bigger than it sounds. Previously, MCP servers could expose data and tools, but the UX was constrained to whatever the client rendered. UI Apps let your Laravel app define small interactive surfaces that ride along with the MCP response.
  • Custom URI schemes in OAuth client registration (v0.6.5, April 1)
  • JSON-RPC unicode preservation fix (v0.6.6)
  • Route cache memory exhaustion fix for circular references (v0.6.7, April 15)

If your Laravel app already exposes a REST API, adding an MCP layer on top is a few hours of work. The result is that AI assistants can interact with your application directly — query data, take actions, render interactive UI — using your existing business logic.

laravel/boost — Laravel's MCP server for local dev

laravel/boost is Laravel's first-party MCP server for local development. It runs alongside your project and gives AI coding assistants deep context about your Laravel codebase: routes, models, migrations, configuration, environment, installed packages, and Laravel-specific conventions.

April brought:

  • skills list command (v2.4.4, April 16) — discoverability for the agent skills system
  • Scope-based first-party detection for Composer (v2.4.2, April 7)
  • Tracking for laravel/mcp v0.7.0 (v2.4.5, April 22)

Why it matters: A new developer onboards to a Laravel project with 200 routes, 50 models, and a custom service-layer convention. Without Boost, AI assistants generate code that compiles but doesn't fit — wrong helpers, missed traits, invented endpoint names, ignored repository patterns. With Boost, generated code fits the project from day one. The improvement compounds in larger codebases.

Passkeys Arrive — passkeys-server v0.1.0

Quietly, on April 23, laravel/passkeys-server had its initial release (v0.1.0). The companion package laravel/passkeys is also in active development.

Passkeys (WebAuthn / FIDO2) are the modern alternative to passwords — public-key authentication using a device's secure enclave, with no shared secret to leak. They're already supported by Apple, Google, and Microsoft account systems. The new Laravel package brings first-party support for adding passkey authentication to Laravel applications.

Why it matters: Passkeys remove the password attack surface entirely — no rotation policies, no reset flows, no leaked-database breaches. The user holds the private key on their device's secure enclave; you store the public key. For B2B SaaS where the current auth default is "SSO plus a password fallback," passkeys are a credible upgrade that improves UX and security at the same time.

It's v0.1.0 — meaning it's early and the API will change. But the signal matters. Laravel is investing in passkeys as a first-party concern, not leaving it to third-party packages. For teams building authentication today, watch this package over the next few months.

Production Tooling — Smaller Updates

Across the rest of the production-side ecosystem, April brought a wave of Laravel 13 compatibility and smaller fixes:

  • laravel/horizon v5.46.0 (April 21) — first-class Redis Cluster support (matches the framework work above)
  • laravel/octane v2.17.2 (April 21) — full Laravel 13 compatibility across the runtime
  • laravel/nightwatch v1.26.0 (April 1) — new nightwatch:deploy command for CI/CD integration
  • laravel/pulse v1.7.3 (April 7) — Livewire v4 alignment, Laravel 13 Redis prefix changes
  • laravel/reverb v1.10.0 (April 1) — singletonIf/bindIf for makePusherRouter, server path included in broadcasting connection info

Nothing groundbreaking individually, but together they signal the broader ecosystem catching up to Laravel 13 and the AI/MCP packages.

What This Means for Teams Shipping Laravel in 2026

Step back from the individual releases and three architectural directions are visible:

Production maturity for queue-heavy workloads. Debounceable jobs, Redis Cluster across both framework and Horizon, queue inspection methods, the BatchStarted event, sub-minute scheduling fixes — Laravel is actively maturing the queue story for high-throughput applications. We're already running Wurkzen Rainmaker on a queue-heavy architecture (Voice AI processing thousands of concurrent calls, with Laravel orchestrating the work and Python microservices doing the heavy compute). The Redis Cluster work is exactly the kind of upgrade we're now considering.

AI as first-party infrastructure. The AI SDK going native, Bedrock and Ollama joining as providers, MCP support arriving in two packages (mcp for production, boost for development), agent skills emerging as a structured concept — Laravel is positioning itself as a credible backend for AI applications, not a host that calls out to third-party AI services. For teams choosing a stack for new AI products, this changes the calculus.

Modern auth is starting to land. Passkeys-server v0.1.0 is early, but it's first-party. Combined with the existing Fortify, Sanctum, and Passport ecosystem, Laravel covers more of the auth surface than most frameworks.

The April roundup isn't dramatic — no major version, no announcement-worthy single feature. But the ecosystem moved forward across every layer that matters for production work. That's what maturity looks like.

The pace hasn't slowed. May has already brought laravel/framework v13.7.0 and v13.8.0, and laravel/ai is now at v0.6.6 — all building on the same three threads above. We'll cover those in the May roundup.

Tip
Our take, after 11+ years of Laravel client work at Treesha Infotech's Laravel practice: the most consequential April change for our existing clients is debounceable jobs. The most consequential for new AI projects is the native AI SDK gateways — particularly Bedrock support and the failover hardening on embeddings providers. The most consequential for forward-looking auth work is keeping an eye on passkeys-server as it matures.

Need a Laravel team that ships against the latest framework features rather than waiting six months to upgrade? Get a free quote or schedule a call — we've been building Laravel applications for over 11 years across SaaS platforms, marketplaces, AI products, and enterprise integrations.

Related reading:

Frequently Asked Questions

What's the most significant Laravel release in April 2026?
Laravel 13.6.0 (April 21) is the headliner — it introduces debounceable queued jobs, JSON-formatted health route output, the JsonFormatter for structured logging, Cloudflare Email Service integration, and MAC validation across decryption keys. But the broader story spans the ecosystem: Horizon added first-class Redis Cluster support the same day, the AI SDK shipped native gateways for 11 providers across the month, and laravel/passkeys-server had its v0.1.0 initial release on April 23.
Is the Laravel AI SDK production-ready yet?
It's still on 0.x (v0.6.3 by April's end) — meaning the API can change between minor versions. But April was a maturity inflection point. The package dropped its prism-php/prism dependency entirely and built native first-party gateways for Anthropic, OpenAI, Gemini, Groq, Mistral, xAI, OpenRouter, Ollama, AzureOpenAI, DeepSeek, VoyageAi, and AWS Bedrock. We're using it on client projects with the understanding that some refactoring may be needed at v1.0, but the architectural direction is now clear.
What's the difference between laravel/mcp and laravel/boost?
laravel/mcp lets your Laravel application act as an MCP server — exposing tools, resources, and now interactive UI Apps to AI clients like Claude Desktop, Cursor, and Codex. laravel/boost is a separate package that runs as your local development MCP server, giving AI coding assistants deep context about your Laravel project (routes, models, migrations, configuration) so they generate code that fits the framework conventions. Boost is for development; MCP is for production.
Should I switch my Laravel queues to Redis Cluster now that it's first-party?
Only if you've outgrown a single Redis instance. The new first-class Redis Cluster support in laravel/framework (v13.5.0) and laravel/horizon (v5.46.0) is significant for teams running high-throughput queues — Wurkzen Rainmaker-class workloads with thousands of concurrent jobs. For most applications, single-Redis with proper memory management is still simpler and faster. The Cluster support is the answer when you've hit the ceiling, not the default.

Ready to start your project?

Tell us about your requirements and we'll get back with a clear plan within 24 hours. No sales pitch — just an honest conversation.

Ritesh Patel
About the Author
Ritesh Patel
Co-Founder & CTO, Treesha Infotech

Co-founded Treesha Infotech and leads all technology decisions across the company. Full-stack architect with deep expertise in Laravel, Next.js, AI integrations, cloud infrastructure, and SaaS platform development. Ritesh drives engineering standards, code quality, and product innovation across every project the team delivers.

Let's Work Together

Ready to build something
remarkable?

Tell us about your project — we'll get back with a clear plan and honest quote.

Free Consultation
No Commitment
Reply in 24 Hours
WhatsApp Us