2026년 5월에는 Laravel Cloud의 풀스택 Scale-to-Zero와 Managed Queues, 폰트 최적화, 멀티 에이전트 파이프라인 등 실용적인 대형 업데이트가 도착했습니다.
출처: Laravel May Product Updates
Laravel Framework
@fonts Blade 디렉티브
웹 폰트 로딩에 필요했던 <link rel="preload"> 태그, @font-face 스타일, HTTP/2 푸시 헤더를 모두 자동 처리하는 @fonts 디렉티브가 추가되었습니다. Vite 폰트 플러그인이 생성하는 폰트 매니페스트를 읽어 들이고, 필요한 요소를 한번에 주입합니다.
{{-- 전체 폰트 로드 --}}
@fonts
{{-- 특정 폰트 패밀리만 --}}
@fonts(["sans", "mono"])
@fonts는 페이지별로 필요한 폰트만 제어함으로써, 불필요한 프리로드를 방지하고 퍼포먼스를 최적화할 수 있습니다.
Interruptible Jobs (시그널 대응 잡)
새로운 Interruptible 인터페이스에 의해, 배포 중에 큐 워커가 SIGTERM을 수신했을 때 잡이 반응할 수 있게 되었습니다. 루프 정지, 락 해제, 상태 저장 등을 워커의 셧다운 전에 안전하게 수행할 수 있습니다.
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 예외의 API 라우트 기본 대응
API 라우트가 자동으로 JSON 형식으로 오류 응답을 반환하도록 되었습니다. 지금까지 API 라우트에서도 조건에 따라서는 HTML이 반환되는 경우가 있었지만, api.php에 정의된 라우트는 항상 JSON 응답이 보장됩니다.
스토리지 캐시 스토어
새로운 storage 캐시 스토어가 추가되었습니다. 파일 시스템을 캐시 백엔드로 사용하지만, Laravel의 스토리지 설정을 활용할 수 있습니다.
// config/cache.php
'stores' => [
'storage' => [
'driver' => 'storage',
'disk' => 'local',
'path' => 'framework/cache',
],
],
대용량 SQS 페이로드의 디스크 저장
SQS의 페이로드가 너무 큰 경우(256KB 초과)에 디스크에 저장하는 옵션이 추가되었습니다. 대용량 데이터를 큐에서 다룰 때 유용합니다.
스케줄 명령의 환경 필터
schedule:list 명령에서 환경별로 필터링할 수 있게 되었습니다.
php artisan schedule:list --environment=production
워커의 Stop When Empty 옵션
큐가 비면 자동으로 워커를 정지시키는 --stop-when-empty 옵션이 추가되었습니다. 배치 처리나 CI 환경에서 큐가 비면 종료되는 워커에 편리합니다.
php artisan queue:work --stop-when-empty
foreignUuidFor 스키마 헬퍼
foreignIdFor()의 UUID 버전으로 foreignUuidFor()가 추가되었습니다.
Schema::table('posts', function (Blueprint $table) {
$table->foreignUuidFor(User::class)->constrained();
});
AI 서브 에이전트 지원
Laravel AI 에이전트가 다른 에이전트에 위임할 수 있게 되었습니다. tools() 메서드에서 임의의 에이전트를 반환하면, 부모 에이전트의 LLM이 일반적인 툴과 마찬가지로 그것을 호출합니다. 컨텍스트는 분리되므로 대화 이력이 뒤섞이는 일은 없습니다.
class OrchestratorAgent extends Agent
{
public function tools(): array
{
return [
new AnalysisAgent(),
new WritingAgent(),
new SearchTool(),
];
}
}
Inertia 3.x
router.poll의 mode 옵션: 폴링 동작 모드 설정 가능
usePoll의 동적 데이터 대응: 폴링 중에 데이터를 동적으로 갱신
Inertia.once: 한 번만 발화하는 이벤트 지원
<Deferred>의 rescue 슬롯: defer된 prop이 실패했을 때의 폴백
PAO (PHP Agentic Output)
스타터 킷에 기본적으로 PAO가 내장되었습니다. 이하 기능도 추가되어 있습니다:
- Rector 대응: PAO가 Rector의 JSON 출력도 처리
- PHPStan의 에이전트 가이던스: 오류 부분의 수정 방법을 에이전트에 전달하는 가이던스 추가
PAO_FORCE 환경 변수: 강제로 PAO 모드 활성화
- Artisan RECTOR 지원: PAO가 Artisan 명령에 대응
Laravel Cloud · Laravel Forge · Nightwatch
| 제품 | 주요 업데이트 |
|---|
| Laravel Cloud | 풀스택 Scale-to-Zero (500ms 이하로 기동, 20배 고속화), Managed Queues (자동 스케일링 워커 · 실패 잡 대시보드), 지출 제한, 플랜 갱신 (월 $5 Starter 플랜) |
| Laravel Forge | Managed MySQL 8.4 (자동 백업 · 리드 레플리카 · 알림), PHP 8.5가 기본으로 변경, env가 바뀌면 자동으로 Horizon을 재시작 |
| Nightwatch | MCP 서버가 라우트 실행 시간 · 쿼리 시간 · 잡 실행 메트릭 등 퍼포먼스 데이터 제공 |