跳转到主要内容
2026 年 4 月,全栈的无密码认证成为 Laravel 的标配功能。此外还新增了用于控制作业突发派发的 Debounceable 作业、MCP UI 应用支持等大量实用功能。 参考出处:Laravel April Product Updates

Laravel Framework

Debounceable Queued Jobs

针对突发型工作负载的干净解决方案。使用 #[DebounceFor] 属性,可以把指定时间内的多次派发合并为一次,只执行最后一次派发。它是 ShouldBeUnique 的反向思路,专门优化去抖窗口内的连续更新。
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Queue\Attributes\DebounceFor;

#[DebounceFor(30)]
class RebuildSearchIndex implements ShouldQueue
{
    // 即使用户在 30 秒内更新了 10 次文档,
    // 索引重建也只会执行 1 次
}

// 调用侧也能进行去抖(无需改动类)
RebuildSearchIndex::dispatch()->debounceFor(seconds: 30);
被去抖的作业会触发 JobDebounced 事件,方便你观察被跳过的作业。

健康路由支持 JSON 响应

在纯 API 应用中,你不再需要从 /up 抓取 HTML。内置健康路由会针对 JSON 请求返回 JSON。
{ "status": "Application is up" }
负载均衡器、健康检查监控、编排器的联动都会变得更简单。无需修改任何配置。

JsonFormatter

通过 JsonFormatter,自定义异常的 context() 数据可以确实地被记录到结构化日志中,也会包含异常链中前一个异常的上下文。
// config/logging.php
'formatter' => Illuminate\Log\Formatters\JsonFormatter::class,

prefersJsonResponses()

在 API 应用中只需要在 bootstrap/app.php 中加一行,就会把宽松的 Accept 头当作 JSON 处理,认证重定向、验证错误、异常页面都会被恰当地序列化为客户端可用格式。
return Application::configure(basePath: dirname(__DIR__))
    ->withRouting(...)
    ->prefersJsonResponses()
    ->create();

Cloudflare Email Service 支持

Cloudflare 的 Email Service 正式作为 Laravel Mailer 得到支持。
// config/services.php
'cloudflare' => [
    'account_id' => env('CLOUDFLARE_ACCOUNT_ID'),
    'token' => env('CLOUDFLARE_TOKEN'),
],

Redis Cluster 完整支持

在 AWS ElastiCache Serverless 等 Redis Cluster 环境下的 CROSSSLOT 错误已被解决。Laravel 的 Queue、ConcurrencyLimiter 一旦检测到 Cluster 连接,就会自动用哈希标签包裹队列名。
queues:{default}          # "default" 槽
queues:{default}:delayed  # 相同槽
queues:{default}:reserved # 相同槽

队列作业检查方法

新增 3 个方法,无需直接查看数据库就能确认作业内容。
Queue::pendingJobs();   // 等待中的作业
Queue::delayedJobs();   // 延迟作业
Queue::reservedJobs();  // 处理中的作业

// 访问 InspectedJob 实例
Queue::reservedJobs('high-priority')->first()->name;
// => 'App\Jobs\SendEmail'

Form Request Strict Mode

可以控制未声明的字段不通过校验。在 rules() 中未声明的入参字段将导致校验失败。
// AppServiceProvider
public function boot(): void
{
    FormRequest::failOnUnknownFields(! app()->isProduction());
}

Passkeys(无密码认证)

无密码认证已实现从前到后的官方全栈支持。
  • laravel/passkeys(服务端):提供迁移、登录 / 确认 / 凭据管理路由、WebAuthn 操作和事件
  • @laravel/passkeys(客户端):通过 React、Vue、Svelte 的辅助函数处理浏览器 WebAuthn 流程
  • Fortify 集成:只要用 Features::passkeys() 启用,Fortify 应用即可使用相同的端点和契约
// config/fortify.php
'features' => [
    Features::passkeys(),
],

MCP UI App 支持

MCP 工具不仅能返回纯文本,现在也能在 iframe 中渲染完整的沙箱化 HTML 应用。
php artisan make:mcp-app-resource DashboardApp
class DashboardApp extends AppResource
{
    #[RendersApp]
    public function handle(Request $request): Response
    {
        return Response::view('mcp.dashboard-app', [
            'title' => 'Dashboard',
        ]);
    }
}

Inertia / 生态

  • useHttp hook:新增 onHttpExceptiononNetworkError 回调
  • Laravel Echo Svelte 5 适配器:通过 useEcho rune 让 Svelte 也能使用实时功能
  • Dusk:clickOnceEnabled()clickOnceVisible() 防止不稳定的测试
  • Horizon:完整支持 Redis Cluster(适配 AWS ElastiCache Serverless)
  • VS Code 扩展:支持 Laravel 13 新属性的自动补全、悬停信息与跳转

Laravel Cloud / Laravel Forge

产品主要更新
Laravel Cloud全响应式移动端 UI、边缘网络增强(显示 Top IP/路径,防火墙 / 缓存规则转换)
Laravel ForgePHP 8.5 支持、多 SSL 服务器支持、证书续期告警
最后修改于 2026年7月13日