메인 콘텐츠로 건너뛰기
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 메일러로서 정식 지원되었습니다.
// config/services.php
'cloudflare' => [
    'account_id' => env('CLOUDFLARE_ACCOUNT_ID'),
    'token' => env('CLOUDFLARE_TOKEN'),
],

Redis Cluster의 완전 지원

AWS ElastiCache Serverless 등 Redis Cluster 환경에서의 CROSSSLOT 오류가 해소되었습니다. Laravel의 큐, ConcurrencyLimiter가 Cluster 접속을 감지하면, 큐 이름을 자동으로 해시 태그로 랩합니다.
queues:{default}          # "default" 슬롯
queues:{default}:delayed  # 동일 슬롯
queues:{default}:reserved # 동일 슬롯

Queue 잡 검사 메서드

잡 내용을 DB를 직접 들여다보지 않고 확인할 수 있는 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 툴이 텍스트뿐만 아니라 완전히 샌드박스화된 HTML 앱을 iframe 안에 렌더링할 수 있게 되었습니다.
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: onHttpException, onNetworkError 콜백 추가
  • 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, 엣지 네트워크 강화 (톱 IP/패스 표시, 방화벽 · 캐시 룰 변환)
Laravel ForgePHP 8.5 지원, 다중 SSL 서버 지원, 인증서 갱신 알림
마지막 수정일 2026년 7월 13일