Laravel 13.3.0 업데이트
릴리스: 2026년 4월 2일
평가: 2026년 8월 28일
13.3.0은 마이너 릴리스로 다수의 버그 수정과 소규모 기능 추가가 포함되어 있으며, 문서화된 공개 API를 깨뜨리는 변경은 명시되어 있지 않습니다. 다만 `install:broadcasting` 명령의 보안 관련 수정과 몇 가지 동작 수정(세션/Redis 연결, MorphTo eager load, incrementEach/decrementEach 스코프 등)은 확인할 가치가 있습니다.
패키지 관리자가 확인할 것
- illuminate/http위험도 낮음
`$request->safe()`에 `->file()` 메서드가 추가되고, afterResponse 콜백에 request가 전달되도록 변경되었습니다. 관련 커스텀 로직이 있다면 시그니처 변경 여부를 확인하세요.
- laravel/scout위험도 낮음
MorphTo eager load matching 수정(ownerKey가 null이고 결과 키가 non-primitive인 경우)이 있어, Scout가 내부적으로 MorphTo 관계를 사용하는 경우 영향 가능성이 있으나 릴리스 노트상 Scout 직접 언급은 없습니다.
대응 체크리스트
- install:broadcasting 명령 사용 시 업데이트가까운 시일
PR #59485에서 설치 패키지가 postinstall을 통해 악성 코드를 실행할 수 있는 문제를 수정했습니다. `php artisan install:broadcasting`을 사용하는 프로젝트는 13.3.0으로 업데이트를 권장합니다.
- incrementEach/decrementEach 사용처 점검가까운 시일
PR #59376에서 해당 메서드가 모델 인스턴스로 스코프되도록 수정되었습니다. 여러 모델에 걸쳐 이 메서드를 사용 중이라면 동작 변화 여부를 테스트하세요.
- 세션/Redis 연결 관련 변경 확인선택
PR #59323에서 SessionManager의 불필요한 clone을 제거해 중복 Redis 연결을 방지했습니다. Redis 세션 드라이버 사용 시 연결 수 변화를 관찰하세요.
- MorphTo eager load 결과 확인선택
PR #59394에서 ownerKey가 null이고 결과 키가 non-primitive인 경우의 eager load matching 버그가 수정되었습니다. 해당 패턴의 polymorphic 관계를 사용 중이라면 결과를 재확인하세요.
자동 생성상세 평가
요약
13.3.0은 마이너 릴리스로, 대부분 버그 수정과 소규모 기능 추가(Uri 클래스 메서드, Mailable 어서션, 큐/스케줄 개선 등)로 구성되어 있습니다. 릴리스 노트에 문서화된 공개 API를 깨뜨리는 변경 사항은 없습니다.
주요 변경
- 서브분(sub-minute) 스케줄링의 분 경계 스킵 버그 수정 (#59331)
incrementEach/decrementEach가 모델 인스턴스 단위로 스코프되도록 수정 (#59376)- MorphTo eager load matching 버그 수정: ownerKey가 null이고 결과 키가 non-primitive인 경우 (#59394)
- SessionManager의 불필요한 clone 제거로 Redis 중복 연결 방지 (#59323)
install:broadcasting명령에서 설치 패키지의 postinstall을 통한 악성 코드 실행 가능성 차단 (#59485)- Uri 클래스에
isNotEmpty(),withoutFragment()메서드 추가, 쿼리스트링 디코딩 시 fragment 보존 (#59408, #59413, #59481) - Mailable에
assertHasNoAttachments()추가, MailFake에driver()메서드 추가 - QueueManager, LogManager에 enum 지원 추가
하위 호환성
릴리스 노트상 기존 동작을 깨뜨리는 것으로 명시된 변경은 없습니다. 다만 버그 수정 항목들은 이전에 잘못된 동작에 의존하던 코드가 있다면 결과가 달라질 수 있습니다(특히 incrementEach/decrementEach, MorphTo eager load).
패키지 관리자가 확인할 것
- illuminate/http:
$request->safe()->file()추가 및 afterResponse 콜백 시그니처에 request 인자 추가. 커스텀 확장 여부 확인. - laravel/scout: MorphTo eager load matching 수정 사항이 polymorphic 관계 검색 인덱싱에 영향을 줄 수 있는지 점검(직접 언급은 없음).
- 그 외 등록된 패키지(Socialite, Image, Breadcrumbs 등)에 대해서는 이 릴리스 노트에서 특별히 관련된 변경 사항이 확인되지 않았습니다.
대응 체크리스트
-
install:broadcasting사용 프로젝트는 업데이트 권장 (보안 관련) -
incrementEach/decrementEach사용 코드 테스트 - Redis 세션 드라이버 사용 시 연결 수 확인
- polymorphic(MorphTo) 관계에서 ownerKey가 null인 케이스 재확인
- 그 외 항목은 일반적인 버그 수정이므로 즉시 대응 불필요
GitHub 릴리스 노트를 근거로 언어 모델 (claude-sonnet-5)이 작성했으며, 사람이 검수하지 않았습니다. 실제 적용 전에는 공식 릴리스 노트와 업그레이드 가이드를 함께 확인하세요.
GitHub 원문 릴리스 노트 보기
- [13.x] Forward releaseOnTerminationSignals through schedule groups by @jackbayliss in https://github.com/laravel/framework/pull/59357
- [13.x] Fix sub-minute scheduling skips at minute boundaries by @JoshSalway in https://github.com/laravel/framework/pull/59331
- [13.x] Display memory usage in verbose queue worker output by @jackbayliss in https://github.com/laravel/framework/pull/59379
- [13.x] Update WithoutOverlapping@shared() for clarity by @cosmastech in https://github.com/laravel/framework/pull/59375
- [13.x] Fix dependency injection of faked queueing dispatcher by @axlon in https://github.com/laravel/framework/pull/59378
- [13.x] Fix incrementEach/decrementEach to scope to model instance by @JoshSalway in https://github.com/laravel/framework/pull/59376
- [13.x] Add array value types to Support module docblocks by @Anthony14FR in https://github.com/laravel/framework/pull/59383
- [13.x] Add lost connection to WorkerStopReason by @jackbayliss in https://github.com/laravel/framework/pull/59370
- [13.x] MariaDbSchemaState uses mysql --version for client detection instead of mariadb --version by @kylemilloy in https://github.com/laravel/framework/pull/59360
- [13.x] Add enum support to QueueManager connection methods by @sumaiazaman in https://github.com/laravel/framework/pull/59389
- [13.x] Setup rector by @lucasmichot in https://github.com/laravel/framework/pull/59385
- [13.x] Improve
Arr::whereNotNull()docs by @axlon in https://github.com/laravel/framework/pull/59411 - [13.x] Pass request to afterResponse callback by @bilfeldt in https://github.com/laravel/framework/pull/59410
- [13.x] Add isNotEmpty() method to Uri class by @sumaiazaman in https://github.com/laravel/framework/pull/59408
- [13.x] Add missing capitalize parameter to Stringable::initials() by @sumaiazaman in https://github.com/laravel/framework/pull/59407
- [13.x] Fix trait initializer collision with Attribute parsing by @sadique-cws in https://github.com/laravel/framework/pull/59404
- [13.x] Add session to supported drivers comment by @jackbayliss in https://github.com/laravel/framework/pull/59399
- [13.x] Add
->file()method to$request->safe()by @SanderMuller in https://github.com/laravel/framework/pull/59396 - [13.x] Add enum support to LogManager channel and driver methods by @sumaiazaman in https://github.com/laravel/framework/pull/59391
- [13.x] Fix MorphTo eager load matching when ownerKey is null and result key is a non-primitive by @wietsewarendorff in https://github.com/laravel/framework/pull/59394
- [13.x] Remove unnecessary clone in SessionManager to prevent duplicate Redis connections by @JoshSalway in https://github.com/laravel/framework/pull/59323
- [13.x] Use FQCN for Str in exception renderer blade templates by @bankorh in https://github.com/laravel/framework/pull/59412
- Allow variadic args for model attributes by @jasonmccreary in https://github.com/laravel/framework/pull/59421
- [13.x] CollectedBy Attribute should follow inheritence by @jackbayliss in https://github.com/laravel/framework/pull/59419
- [13.x] Fix deprecation notice in JSON:API resources by @alihamze in https://github.com/laravel/framework/pull/59418
- [13.x] Add withoutFragment() method to Uri class by @sumaiazaman in https://github.com/laravel/framework/pull/59413
- [13.x] Fix macros with static closures by @FeBe95 in https://github.com/laravel/framework/pull/59414
- [13.x] Fix sum() docblock to include key parameter in callback signature by @sumaiazaman in https://github.com/laravel/framework/pull/59444
- [13.x] Add assertHasNoAttachments() method to Mailable by @sumaiazaman in https://github.com/laravel/framework/pull/59443
- [13.x] Add a driver method to the MailFake class by @kevinb1989 in https://github.com/laravel/framework/pull/59448
- [13.x] Cache getLockForPopping() result in DatabaseQueue by @sumaiazaman in https://github.com/laravel/framework/pull/59435
- [13.x] prefer
new Collection()overcollect()helper by @browner12 in https://github.com/laravel/framework/pull/59453 - [13.x] remove unnecessary
array_flip()calls by @browner12 in https://github.com/laravel/framework/pull/59452 - Make Collection methods compatible with extended subclass constructors by @ProjektGopher in https://github.com/laravel/framework/pull/59455
- [13.x]
UnitTesttest attribute by @cosmastech in https://github.com/laravel/framework/pull/59432 - [13.x] prefer
isset()overin_array()for better performance by @browner12 in https://github.com/laravel/framework/pull/59457 - [13.x] remove temporary variable by @browner12 in https://github.com/laravel/framework/pull/59456
- [13.x] Add BatchStarted event by @jackbayliss in https://github.com/laravel/framework/pull/59458
- [13.x] Preserve URI fragment when decoding query string by @Nipun404 in https://github.com/laravel/framework/pull/59481
- fix: allow returning Stringable objects in casts()-method by @Bloemendaal in https://github.com/laravel/framework/pull/59479
- [13.x] Fix manager breaking when called with static closure by @axlon in https://github.com/laravel/framework/pull/59470
- Prevents installed package from executing malicious code via
postinstallininstall:broadcastingcommand by @duncanmcclean in https://github.com/laravel/framework/pull/59485