본문으로 건너뛰기

© 2026 Molayo

Qiita헤드라인2026. 06. 27. 15:51

【2026년 3월】 Laravel/PHP 이달의 요약|Laravel 13 정식 출시, Inertia v3 GA

요약

Laravel 13 정식 출시와 함께 PHP 8.3 필수화, 공식 AI SDK 및 벡터 검색 기능이 도입되었습니다. Inertia.js v3.0.0 GA를 포함하여 프레임워크 전반의 개발 경험(DX)이 대폭 개선되었습니다.

핵심 포인트

  • Laravel 13 출시: PHP 8.3 필수 및 PHP 속성(Attribute) 네이티브 지원
  • 공식 AI SDK 도입: 텍스트 생성, 에이전트, 임베딩 등 통합 API 제공
  • 벡터 검색 지원: 쿼리 빌더를 통한 시맨틱 검색 기능 추가
  • Inertia.js v3.0.0 GA: Axios 의존성 제거 및 내장 XHR 클라이언트 도입
  • 개발 경험 개선: NativePHP 속도 향상 및 다양한 DX 도구 업데이트

3월의 Laravel은 메이저 버전인 Laravel 13이 정식 출시되었다. 최소 요구 사항은 PHP 8.3으로 상향되었으며, PHP 속성(Attribute)의 퍼스트 클래스 지원, 공식 AI SDK, 벡터 검색(Vector Search)이 일제히 도입되었다. 프론트엔드 측에서는 Inertia.js v3.0.0이 GA(General Availability)가 되었으며, 필수 의존성이었던 Axios가 제외되었다. 코어 마이너 업데이트로는 12.54와 13.2가 출시되었다.

출처는 모두 Laravel News의 각 기사이다. 버전 번호나 메서드 명, 코드는 원문에 맞추었다.

Laravel 13 GA. PHP 8.3 필수화, PHP 속성의 네이티브 대응, 공식 AI SDK, JSON:API 리소스, Queue::route(), 벡터 검색, Cache::touch()가 주요 특징이다. 파괴적 변경(Breaking Changes)은 최소한으로 억제하는 방침을 취했다. -
Inertia.js v3.0.0 정식 출시. 내장 XHR 클라이언트를 통해 Axios가 옵션이 되었으며, useHttp 훅(Hook)과 퍼스트 클래스 낙관적 업데이트(Optimistic Updates)를 추가했다. 베타 버전으로부터의 통산 결과이다. -
코어 마이너 버전은 12.54.0 (Model::withoutRelation())과 13.2.0 (대칭적인 모델 속성, 큐 속성의 enum 대응)이다. -
AI 관련 도구들이 풍성한 달이다. Polyscope, LaraCopilot, Prompt Deck, Prism Workers AI, Spatie의 Markdown 배포 패키지 등이 있다.

  • 개발 경험(DX) 관련 변화도 있었다. NativePHP v3.1의 10배 속도 향상, Laravel Pint의 FQCN 자동 import, Laravel Prompts의 task()/stream(), Filament v5.3, Debugbar v4.2 등이 포함된다.

Laravel 13이 출시되었다. 이번 사이클은 파괴적 변경을 최소한으로 억제하여 기존 앱을 망가뜨리지 않고 사용 편의성을 개선하는 것을 1년에 걸쳐 출시하는 방침을 취하고 있다. 최소 요구 사항은 PHP 8.2 지원을 종료하고 PHP 8.3 이상으로 변경되었다. 버그 수정은 2027년 Q3까지, 보안 업데이트는 2028년 Q1까지 제공된다.

개발자에게 가장 큰 변경 사항은 프레임워크 전체에 걸친 PHP 속성(Attribute)의 네이티브 대응이다. 프로퍼티(Property)로 동작을 설정하는 대신, 속성을 통해 인라인으로 선언할 수 있다.

// EXAMPLE MODEL
#[Table('users', key: 'user_id', keyType: 'string', incrementing: false)]
#[Hidden(['password'])]
...

대상은 모델(Model), 잡(Job), 콘솔 커맨드(Console Command) 등 15개 이상의 영역에 이른다. 이는 완전히 옵션이며 하위 호환성(Backward Compatibility)을 유지한다.

공식 Laravel AI SDK가 도입되었다. 텍스트 생성, 도구 호출 에이전트(Tool Calling Agent), 임베딩(Embedding), 음성, 이미지, 벡터 스토어 통합을 통합 API로 다룬다. 이와 함께 네이티브 벡터 쿼리 지원도 추가되어, 쿼리 빌더(Query Builder)에서 직접 시맨틱 검색(Semantic Search)을 작성할 수 있다.

$documents = DB::table('documents')
->whereVectorSimilarTo('embedding', 'Best wineries in Napa Valley')
->limit(10)
...

PostgreSQL과 pgvector를 조합하면, 문자열로부터 생성한 임베딩에 대한 유사도 검색을 간편하게 구축할 수 있다.

퍼스트 파티(First-party) JSON:API 리소스가 동봉되어, 리소스 객체의 직렬화(Serialization), 관계(Relation)의 포함(Include), 스파스 필드셋(Sparse Fieldsets), JSON:API 준수 응답 헤더를 다룰 수 있게 되었다.

큐(Queue)에는 Queue::route()를 통해 클래스 단위의 라우팅이 추가되어, 잡(Job)별 기본 큐나 커넥션(Connection)을 한곳에서 정의할 수 있다.

Queue::route(ProcessPodcast::class, connection: 'redis', queue: 'podcasts');

값을 꺼내서 다시 저장할 필요 없이, 캐시 아이템의 TTL(Time To Live)만 연장하는 Cache::touch()가 추가되었다.

// Extend by seconds
Cache::touch('user_session:123', 3600);
// Extend with a DateTime
...

기존에는 TTL(Time To Live) 연장을 위해 get 호출 후 put을 수행해야 했으며, 이 과정에서 캐시 값을 네트워크를 통해 불필요하게 전송해야 했다. Cache::touch()는 Redis의 경우 EXPIRE, Memcached의 경우 TOUCH, DB 드라이버의 경우 단일 UPDATE로 처리한다. 성공 시 true를, 키가 없으면 false를 반환하며, Array, APC, Database, DynamoDB, File, Memcached, Memoized, Null, Redis의 모든 드라이버에서 구현되어 있다.

업그레이드는 Laravel Shift가 리뷰하기 쉬운 원자적(Atomic) 커밋 PR을 생성해 준다.

메이저 업데이트와 더불어 코어의 마이너 업데이트도 2건 발표되었다.

Laravel 12.54.0은 Model::withoutRelation()을 추가했다. 기존 모델을 변경하지 않고 특정 관계(Relation)만 제거된 클론을 생성한다. 모든 관계를 제거하는 withoutRelations()와 그 자리에서 즉시 변경하는 unsetRelation() 사이의 간극을 메워주는 메서드다.

// 클론에서 단일 관계 제거
$lightweight = $post->withoutRelation('comments');
// 여러 관계 제거
...

순환 참조 처리, 큐(Queue) 투입 시의 페이로드(Payload) 감소, 직렬화(Serialization) 전 정리 작업에 유용하다. 그 외에도 요청 데이터를 CarbonInterval로 변환하는 interval(), jobs 테이블에 대한 (queue, reserved_at, available_at) 복합 인덱스, queue:monitor에서의 가장 오래된 보류 중인 작업(Job) 표시, PostgreSQL의 tsvector 컬럼 타입 등이 포함되었다.

Laravel 13.2.0은 여러 관심사를 하나에 몰아넣던 #[Table] 대신, 단일 기능의 대칭적인 속성(Attribute) 그룹을 추가했다.

// 이전
#[Table(timestamps: false, dateFormat: 'U')]
class Post extends Model {}
...

#[Queue]#[Connection]이 Backed Enum을 직접 받을 수 있게 되어, ->value를 작성할 필요가 없다.

// 이전
#[Queue(Queues::LOGS_INGESTION->value)]
final class IngestAuditLog implements ShouldQueue {}
...

그 외에도 withoutOverlapping()releaseOnSignal(pcntl 확장이 필요하며, 종료 시그널 시 락(Lock)을 해제하여 스케줄러 재시작 시 즉시 재실행), UniqueConstraintViolationException이 컬럼명과 인덱스명을 공개한 점, schedule:list가 작업별 타임존으로 cron 식을 표시하는 기능, #[Backoff]의 가변 인자 대응 등이 있다.

버전주요 내용유형
12.54.0Model::withoutRelation() / jobs 복합 인덱스 / tsvector기능 추가
13 (GA)PHP 8.3 필수 / PHP 속성 / AI SDK / 벡터 검색 / Cache::touch()메이저
13.2.0대칭적인 모델 속성 / 큐 속성의 Enum 대응 / releaseOnSignal기능 추가

Inertia.js v3.0.0이 정식 출시되었다. 코어와 React / Vue / Svelte의 3가지 어댑터 모두가 대상이며, 올해 초 베타 버전(XHR 클라이언트, useHttp, 낙관적 업데이트, 인스턴트 전환 등을 선제 탑재)에서 베타 기간 동안의 수정과 개선을 거친 내용이다.

가장 큰 변경 사항은 필수 의존성이었던 Axios를 내장된 XHR 클라이언트가 대체했다는 점이다. 기본적으로 Axios(gzip 약 15KB)와 qs를 번들에서 제외할 수 있다. Axios의 인터셉터(Interceptor)가 필요한 경우에는 옵션 피어 의존성(Peer Dependency)으로 남겨둘 수 있다.

내비게이션을 일으키지 않고 HTTP 요청을 보내는 useHttp 훅도 추가되었다. processing / errors / progress / isDirty를 반환하여 useForm과 동일한 개발 경험을 유지한다.

const http = useHttp({
query: '',
})
...

router, useForm, useHttp를 가로지르는 일급 시민 낙관적 업데이트(Optimistic Updates)도 추가되었다. 변경 사항은 즉시 페이지 상태에 적용되며, 2xx 이외의 응답이 오면 자동으로 롤백된다.

// Fluent
router
.optimistic((props) => ({
...

그 외에도 레이아웃 props API, Vite 개발 모드에서의 SSR, Svelte 5 어댑터, 인자 없는 createInertiaApp() 등이 있다. 프레임워크 요구 사항 업데이트, ESM-only 전환, API 이름 변경을 포함하는 메이저 업데이트이므로, 업그레이드 전에 공식 업그레이드 가이드를 확인해야 한다. Laravel 측 도구들도 이에 대응하고 있으며, Laravel Boost v2.3.0은 Inertia v2에서 v3로의 이전을 안내하는 MCP 프롬프트를 추가했다(도입된 어댑터를 자동 감지하여 해당 프레임워크에 맞는 내용만 표시한다). 이와 함께 Monolog의 JSON 형식 로그 지원, Artisan의 얇은 래퍼(wrapper)였던 6개의 MCP 도구 삭제(파괴적 변경. AI 에이전트가 CLI를 직접 호출하는 방향으로 전환)도 포함되어 있다.

Polyscope: Beyond Code의 Marcel Pociot가 만든, 여러 AI 에이전트를 동시에 구동하는 무료 오케스트레이션 환경. Copy-on-write 방식의 클론을 통해 에이전트를 빠르게 분기할 수 있으며, 내장된 프리뷰 브라우저를 통해 시각적으로 프롬프트를 입력할 수 있다. macOS용.

LaraCopilot: 아이디어를 작성한 단일 프롬프트로부터 프론트엔드와 백엔드를 포함한 Laravel MVP를 통째로 생성하는 도구.

Prompt Deck: AI 프롬프트를 코드 내의 문자열이 아닌, 디스크상의 버전 관리되는 Markdown 파일로 취급한다. {{ $variable }}를 통한 삽입, A/B 테스트, laravel/ai와의 HasPromptTemplate 트레이트(Trait) 연동 기능을 갖추고 있다.

Prism Workers AI: Prism PHP 및 Laravel AI SDK에 Cloudflare Workers AI 프로바이더를 추가한다. AI Gateway의 /compat을 통해 라우팅하며, 텍스트 생성, 스트리밍, 임베딩, 멀티스텝 도구 호출(Tool Calling), 추론 모델의 사고 추출(Reasoning extraction)을 지원한다.

Laravel Markdown Response: Spatie 제작. 봇이나 AI 에이전트의 접속을 감지하여 HTML 대신 깔끔한 Markdown을 반환한다. 컨트롤러나 뷰를 변경하지 않고 미들웨어에서 변환하며, 결과를 캐싱한다.

Ward: Laravel의 구조를 이해하고 동작하는 Go 기반의 커맨드라인 보안 스캐너. env, config, 의존성, 규칙의 4가지 엔진으로 설정 오류나 유출된 시크릿을 감지하며, JSON / SARIF / HTML / Markdown 출력과 CI/CD 연동, 베이스라인 관리를 지원한다.

Laravel Boost v2.4.0: add-skill 명령에 스킬 설치 전 보안 감사를 추가했다. 새로운 스킬인 laravel-best-practices도 포함되었으며, Herd MCP 연동은 Herd CLI로 대체되었다.

Laravel Pint의 FQCN 자동 import: Laravel 프리셋에 fully_qualified_strict_types 규칙이 추가되어, 완전 수식 클래스명(Fully Qualified Class Name)을 축약하고 use 문을 자동으로 추가한다. 타입 힌트, 반환 타입, PHPDoc 태그, 인라인 참조를 지원한다. laravel 프리셋을 사용 중이라면 자동으로 활성화되며, 업데이트 후 첫 실행 시 한 번의 차이가 발생한다.

Lens for Laravel: Axe-core를 사용하여 실행 중인 앱의 WCAG 위반 사항을 스캔하고, 각 문제를 Blade 템플릿의 파일 및 행 번호와 연결한다. lens:audit

커맨드와 함께 Gemini / OpenAI / Anthropic을 지원하는 AI 수정 제안 기능을 갖추고 있다 (자동 탐지는 위반 사항의 약 20~30%에 그친다는 점도 명시되어 있다).

Kit: 토큰 기반 인증과 보안 우선의 기본값을 유지하는, 확고한 철학을 가진 API 스타터 키트 (Starter Kit). 버전 관리되는 라우트, Invokable 컨트롤러, Form Request 검증, JSON:API 응답, ULID 기본 키, 엔드포인트 폐지를 위한 Sunset 미들웨어를 표준으로 제공한다. -
Laravel Ingest: 설정 주도형 (Configuration-driven) ETL 패키지. 임시방편적인 임포트 스크립트를 선언적인 임포터 클래스로 대체하며, Generator와 Queue를 사용하여 파일 크기에 관계없이 메모리를 일정하게 유지한다. 관계 자동 해결, 중복 처리 전략, 드라이 런 (Dry run), 실패 행 추적 기능을 갖추고 있다. -
Tyro Checkpoint: 로컬 개발용 SQLite에 대해 Git의 커밋과 같은 이름이 지정된 스냅샷을 생성하고 복구할 수 있는 개발 전용 패키지. 마이그레이션(Migration)이나 시더(Seeder)를 재실행하지 않고도 DB 상태를 순식간에 되돌릴 수 있다. -
Laravel USPS: USPS API v3를 래핑(Wrap)하는 다기능 패키지. 20개의 API 도메인과 80개 이상의 엔드포인트를 커버하며, 주소 검증, 역조회, 화물 추적을 Usps 파사드 (Facade)로 다룰 수 있다.

php-attribute-reader: Spatie 제작. 번거로울 수 있는 리플렉션 (Reflection)을 통한 속성(Attribute) 읽기를 Attributes 클래스의 정적 메서드 (get / has / onMethod / find 등)로 감싸 제공한다. -
Artisan Browse: 터미널 상에서 Artisan 커맨드의 발견, 검색, 실행을 수행하는 대화형 TUI. php artisan browse로 목록을 확인하고, 인자(Argument)나 옵션을 차례로 입력하여 실행 전 최종 커맨드를 확인할 수 있다 (개발 전용). -
spatie/crawler v9: Guzzle의 프로미스 (Promise)를 사용하여 사이트를 병렬로 크롤링하는 PHP 패키지. CrawlResponse 객체, 스코프 제어 개선, fake()를 통한 테스트 유틸리티가 포함되었다. -
SlideWire: Livewire 컴포넌트와 Blade를 사용하여 브라우저용 프레젠테이션 슬라이드를 만든다. 각 슬라이드는 전체 페이지 Livewire 컴포넌트로 구성되며, Phiki의 구문 강조 (Syntax highlighting) 및 Mermaid 다이어그램을 지원한다. -
Circuit Breaker: 서킷 브레이커 (Circuit Breaker) 패턴을 Laravel에 도입하여 장애의 연쇄를 방지한다. closed / open / half-open의 3가지 상태, 서비스 단위로 분리하는 이름이 지정된 서킷, run()을 통한 래핑 및 Guzzle 미들웨어를 갖추고 있다. -
Liminal: PHP 8.4를 WebAssembly로 구동하여, 서버나 로컬 PHP 없이 브라우저 내에서만 Laravel을 개발하고 미리 볼 수 있는 IDE. 파일 변경 사항을 URL에 포함하여 공유할 수 있다. -
OG Kit: 자체 HTML과 CSS로 동적인 Open Graph 이미지를 생성하는 서비스. 페이지에 <template> 태그와 클라이언트 스크립트를 추가하는 것만으로 작동하며, Laravel 10/11/12를 지원하는 공식 패키지도 있다. -
Debugbar v4.2.0: Laravel Boost를 위한 스킬을 추가한다. boost:install을 재실행하여 설치할 수 있으며, 최신 요청 열람, 중복 탐지를 포함한 쿼리 개요, EXPLAIN 결과가 포함된 쿼리 상세 정보를 확인할 수 있다. -
PHP Debugger: 스텝 디버깅 (Step debugging) 기능만 남기고 Xdebug에서 분기된 확장 도구. 프로파일러(Profiler)와 커버리지(Coverage)를 제거하여, 미사용 시의 오버헤드를 Xdebug 대비 최대 97%까지 절감한다. xdebug.*와 호환되는 드롭인 (Drop-in) 교체 방식으로, PhpStorm이나 VS Code를 설정 변경 없이 사용할 수 있다. -
Laravel Community 모바일 앱: Laracon이나 지역 미트업을 장소나 날짜로 찾을 수 있는 공식 앱. QR 코드 프로필로 연락처를 교환할 수 있다.

1. 두 가지 메이저 업데이트의 동시 출시. Laravel 13의 서버 측과 Inertia v3의 프론트엔드 측이 같은 달에 GA (General Availability)를 맞이했다. 전자는 PHP 속성(Attribute)과 AI SDK를 통해 작성 편의성과 기능을 강화했으며, 후자는 Axios 의존성 감소와 낙관적 업데이트 (Optimistic Updates)로 UX를 끌어올렸다. Laravel Boost가 두 가지 업그레이드 프롬프트를 모두 포함하고 있다는 점은, 마이그레이션이 실제적인 작업이 되었음을 보여준다.

2. Laravel 내부에서 AI를 구축하기 위한 도구들. 공식 AI SDK를 중심으로, 에이전트를 병렬 실행하는 Polyscope, 프롬프트를 파일로 관리하는 Prompt Deck, Cloudflare Workers AI를 더하는 Prism Workers AI, AI를 위해 Markdown을 제공하는 Spatie 패키지가 갖춰졌다. LLM 연동이 외부 프레임워크에 의존하던 방식에서 Laravel 생태계 내의 선택지로 이동하고 있다.

3. 개발 경험과 퍼포먼스의 향상. NativePHP v3.1은 Persistent Runtime을 통해 응답 시간을 200-300ms에서 5-30ms로 단축했으며, Filament가 모바일에서 표준 동작하도록 개선했다. Laravel Pint의 FQCN 자동 import, Laravel Prompts의 task() / stream(), PHP Debugger의 유휴 시간 오버헤드(Idle overhead) 감소 등 일상적인 작업을 가볍게 만드는 업데이트가 이어졌다.

NativePHP v3.1: Laravel을 한 번만 실행하고 커널을 재사용하는 Persistent Runtime을 도입하여 응답 시간을 5-30ms로 단축. ZTS PHP, 전용 스레드의 백그라운드 큐, Android 8+ 지원, iOS의 완전한 ICU 지원을 갖춘다. 파괴적 변경이 없는 드롭인(Drop-in) 업데이트.

Laravel Prompts v0.3.15: task(), stream(), autocomplete(), select의 동적 info, title(), notify()와 같은 CLI 프리미티브(Primitives)를 추가. task()로 감싼 AI 에이전트의 출력을 stream()으로 흘려보내는 등, AI 구동 터미널 앱을 구축하기 쉬워졌다.

Filament v5.3.0: 탭 배지(Tab badge)의 지연 로딩(Lazy loading), 컬럼 매니저의 모달/슬라이드오버 대응, RichEditor 플러그인 확장 등 10가지 기능을 추가. 속도 제한(Rate limiting)의 사용자 ID/이메일 대응, 네비게이션 그룹의 UnitEnum 대응도 포함되었다.

경합 상태(Race condition)의 탐지 및 수정: Eloquent의 read-modify-write가 동시 액세스 시 경합 상태를 유발하는 문제를, MongoDB의 원자적 연산자 ($inc, $set)를 raw()로 사용하여 DB 내에서 완결함으로써 해결한다. 동시 요청을 재현하는 피처 테스트(Feature test)로 이를 탐지하는 방법도 해설한다.

트랜잭션 안전한 멀티 문서 조작: DB::connection('mongodb')->transaction()을 통해 여러 컬렉션을 가로지르는 처리의 일관성을 유지한다. 트랜잭션은 DB 조작에만 집중하고, 이메일이나 외부 API 호출은 커밋 후에 수행하는 것이 신뢰성과 속도의 핵심이다 (실제 사례에서 450ms에서 150ms로 단축).

Laracon AU 2026: 2026년 11월 4일~6일 브리즈번에 개최. 실제 운영 아키텍처나 패턴 등 깊이 있는 기술 콘텐츠를 중시하는 구성이며, 발표자 모집 마감은 4월 17일이다.

3월은 두 개의 메이저 업데이트가 함께 찾아온 달이었다. Laravel 13은 PHP 속성과 AI SDK로 작성 방식과 기능을 갱신했고, Inertia v3는 Axios 의존성을 제거하고 낙관적 업데이트를 표준화했다. 둘 다 파괴적 변경을 포함하므로, 업그레이드 가이드와 Boost의 프롬프트를 병용하여 신중하게 마이그레이션을 진행해야 한다. 신규 프로젝트라면 13과 Inertia v3를 전제로 설계할 수 있는 단계에 진입했다.

이 요약은 매달 계속됩니다. 자세한 내용은 각 출처 링크를 확인하세요.

AI 자동 생성 콘텐츠

본 콘텐츠는 Qiita AI의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.

원문 바로가기
0

댓글

0