Laravel 13.25.0 업데이트
릴리스: 2026년 8월 11일
평가: 2026년 8월 28일
이번 13.25.0은 다수의 버그 수정과 함께 새로운 기능(Queue 전역 일시정지, Image 클래스 확장, foreignUlidFor 등)이 추가된 통상적인 마이너 릴리스입니다. 대부분 하위 호환성을 유지하지만, 큐/메일/브로드캐스트/캐시 관련 동작 수정 몇 건은 실제 앱 동작에 영향을 줄 수 있어 확인이 필요합니다.
예상되는 하위 호환성 문제
- 브로드캐스트 이벤트에서 모델 삭제 시 누락된 처리 복원심각도 낮음
PR #61074 'Restore missing model deletion for broadcast events'는 이전에 누락되어 있던 동작을 복원하는 수정입니다. 브로드캐스트 시 모델 삭제 관련 동작이 이전 버전과 달라질 수 있습니다.
영향 범위: ShouldBroadcast 구현 모델, 브로드캐스트 이벤트 페이로드
- 큐 메일러블의 백드 enum 큐 이름 처리심각도 낮음
PR #61066에서 'Respect backed enum queue names when queueing mailables'로, 이전에는 backed enum으로 지정한 큐 이름이 제대로 적용되지 않던 문제를 수정했습니다. enum 큐 이름을 사용 중이던 메일러블의 실제 큐잉 대상이 바뀔 수 있습니다.
영향 범위: Mailable::onQueue()에 enum을 사용하는 코드
대응 체크리스트
- 큐/메일 관련 enum 큐 이름 사용 여부 확인가까운 시일
Mailable이나 Job에서 backed enum으로 큐 이름을 지정하고 있다면, 실제 라우팅되는 큐가 의도한 큐인지 재확인하세요 (PR #60966, #61066, #61116 관련).
- 브로드캐스트 이벤트에서 모델 삭제 동작 확인선택
ShouldBroadcast를 구현한 모델 삭제 이벤트를 사용 중이라면, 복원된 동작(#61074)이 테스트 스위트에서 정상 작동하는지 확인하세요.
- 큐 전역 일시정지 기능 검토선택
PR #61126에서 추가된 큐 전역 pause 스위치를 배포/운영 워크플로우에 활용할 수 있는지 검토하세요.
자동 생성상세 평가
요약
13.25.0은 다수의 버그 수정(스케줄러 타임존, 큐 페이크, 캐시 유지보수 모드 등)과 몇 가지 신규 기능(Queue 전역 일시정지, Image::toFormat() 공개, foreignUlidFor 헬퍼, withoutCookies 등)을 포함한 통상적인 마이너 릴리스입니다. 보안 취약점 수정이나 공개 API의 명시적 breaking change는 발견되지 않았습니다.
주요 변경
- Queue에 전역 일시정지 스위치 추가 (#61126)
Image::toFormat()public 전환,Image::fromStream()추가,Responsable구현 (#61110, #61109, #61111)foreignUlidFor스키마 헬퍼 추가 (#61036)- HTTP 응답에
withoutCookies메서드 추가 (#61115) - 비동기 HTTP 재시도 콜백에 HTTP 메서드 전달 (#61106)
하위 호환성
노트에 명시된 변경 중 대부분은 버그 수정으로, 이전 버전에서 의도대로 동작하지 않던 것을 바로잡은 것입니다. 다만 다음 두 가지는 실제 동작 변경을 동반하므로 유의가 필요합니다.
- 브로드캐스트 이벤트에서 모델 삭제 처리가 복원됨 (#61074) — 이전 릴리스에서 누락되었던 동작이 되돌아온 것으로, 최근 버전에서 브로드캐스트 삭제 이벤트를 사용 중이라면 동작 차이를 인지해야 합니다.
- 큐 메일러블에서 backed enum 큐 이름이 이제 올바르게 반영됨 (#61066) — enum으로 큐를 지정했다면 실제 라우팅 큐가 달라질 수 있습니다.
그 외 항목은 문서화된 공개 API의 breaking change로 볼 근거가 없습니다.
패키지 관리자가 확인할 것
제공된 등록 패키지 목록 중 이번 릴리스 노트에서 직접 언급되거나 명백히 영향받는 패키지는 없습니다. Socialite, Scout, Inertia Laravel 등은 이번 프레임워크 변경과 무관합니다.
대응 체크리스트
- Mailable/Job에서 backed enum 큐 이름을 사용 중인지 확인하고, 실제 큐 라우팅이 의도대로 되는지 테스트
- ShouldBroadcast 구현 모델의 삭제 이벤트 브로드캐스트 동작을 회귀 테스트로 재확인
- Intervention Image를 프레임워크의 Image 클래스와 함께 사용 중이라면 새로운
toFormat(),fromStream(),Responsable기능 활용 검토 (선택 사항) - 특별한 액션이 필요 없다면 평소처럼
composer update후 CI만 통과시키면 충분함
GitHub 릴리스 노트를 근거로 언어 모델 (claude-sonnet-5)이 작성했으며, 사람이 검수하지 않았습니다. 실제 적용 전에는 공식 릴리스 노트와 업그레이드 가이드를 함께 확인하세요.
GitHub 원문 릴리스 노트 보기
- [12.x] Prevent fatal errors when logging deprecations fails by @GrahamCampbell in https://github.com/laravel/framework/pull/60907
- [12.x] Fix Factory::insert() with a count of zero by @alies-dev in https://github.com/laravel/framework/pull/60911
- [12.x] Fix schedule:list timezone conversion for range, step, and wildcard cron expressions by @xiCO2k in https://github.com/laravel/framework/pull/60913
- [12.x] Fix getMigrationBatches return type annotation by @wouterj in https://github.com/laravel/framework/pull/60973
- [13.x] Add foreignUlidFor schema helper by @talaridisTh in https://github.com/laravel/framework/pull/61036
- [13.x] Improve return type for
Arr::prependKeysWith()by @axlon in https://github.com/laravel/framework/pull/61034 - [13.x] Add uuid to queue fake for inspection methods by @jackbayliss in https://github.com/laravel/framework/pull/60966
- [13.x] Respect after-commit dispatch when bulk pushing to DatabaseQueue by @Faiyajz in https://github.com/laravel/framework/pull/60996
- [13.x] Add a UniqueJobSkipped event by @jackbayliss in https://github.com/laravel/framework/pull/61039
- [13.x] Ensure Container::call cleans up build stack after exceptions by @Faiyajz in https://github.com/laravel/framework/pull/61041
- [13.x] Reject non-stream resources in HTTP fake response bodies by @GrahamCampbell in https://github.com/laravel/framework/pull/61047
- [13.x] Fix incorrect image dimensions for HEIC by @zachiler in https://github.com/laravel/framework/pull/61010
- [13.x] Simplify most of the exceptions expectations by @lucasmichot in https://github.com/laravel/framework/pull/61049
- [13.x] Fix Str::numbers() type annotation by @lucasmichot in https://github.com/laravel/framework/pull/61053
- [13.x] Fix flaky Str::random distribution test by @lucasmichot in https://github.com/laravel/framework/pull/61052
- [13.x] Normalize enum keys in typed cache getters by @Amirhf1 in https://github.com/laravel/framework/pull/61056
- Simplify remaining exception expectations by @lucasmichot in https://github.com/laravel/framework/pull/61058
- Apply fixes from StyleCI by @taylorotwell in https://github.com/laravel/framework/pull/61059
- [13.x] Isolate cloud agent requests from global HTTP client configuration by @kieranbrown in https://github.com/laravel/framework/pull/61064
- [13.x] Fix flaky circuit breaker release delay assertions by @GrahamCampbell in https://github.com/laravel/framework/pull/61062
- [13.x] Bump minimum versions by @lucasmichot in https://github.com/laravel/framework/pull/61033
- [13.x] Configure a socket timeout for the Cloud log driver by @jessarcher in https://github.com/laravel/framework/pull/61065
- [13.x] Fix: add missing check for
#[WithoutTimestamps]on model ignore touch by @bram-pkg in https://github.com/laravel/framework/pull/61073 - [12.x] Isolate cloud agent requests from global HTTP client configuration by @kieranbrown in https://github.com/laravel/framework/pull/61068
- [13.x] Fix getRememberToken return type documentation by @keibass in https://github.com/laravel/framework/pull/61067
- [13.x] Respect backed enum queue names when queueing mailables by @Faiyajz in https://github.com/laravel/framework/pull/61066
- [13.x] Restore missing model deletion for broadcast events by @Faiyajz in https://github.com/laravel/framework/pull/61074
- [13.x] Use new Collection instead of Collection::make in tests by @lucasmichot in https://github.com/laravel/framework/pull/61079
- [13.x] Add the timeout in JobTimedOut by @jackbayliss in https://github.com/laravel/framework/pull/61060
- [12.x] Configure a socket timeout for the Cloud log driver by @jessarcher in https://github.com/laravel/framework/pull/61082
- [13.x] Move Testbench-based tests to tests/Integration by @lucasmichot in https://github.com/laravel/framework/pull/61080
- Use serve defaults for dev command by @n3crosis in https://github.com/laravel/framework/pull/61090
- [13.x] Skip unsupported values in LazyCollection::flip() by @Amirhf1 in https://github.com/laravel/framework/pull/61081
- [13.x] Preserve default denial response for Gate::forUser by @Faiyajz in https://github.com/laravel/framework/pull/61087
- [13.x] Support fail on timeout for notifications by @jackbayliss in https://github.com/laravel/framework/pull/61072
- [13.x] Fix QueueFakeTest by @jackbayliss in https://github.com/laravel/framework/pull/61091
- [13.x] Prefer consitent assertions by @lucasmichot in https://github.com/laravel/framework/pull/61093
- [13.x] Clean up test teardown by @lucasmichot in https://github.com/laravel/framework/pull/61078
- Prefer text input on dynamic access by @taylorotwell in https://github.com/laravel/framework/pull/61099
- [13.x] feat: make Image::toFormat() public by @calebdw in https://github.com/laravel/framework/pull/61110
- [13.x] Pass the HTTP method to retry callbacks for asynchronous HTTP requests by @Button99 in https://github.com/laravel/framework/pull/61106
- [13.x] Add
withoutCookiesmethod by @xurshudyan in https://github.com/laravel/framework/pull/61115 - [13.x] feat: implement Responsable on Image class by @calebdw in https://github.com/laravel/framework/pull/61111
- [13.x] feat: add Image::fromStream method by @calebdw in https://github.com/laravel/framework/pull/61109
- [13.x] Run
artisan devthrough@laravel/multiplexby @joetannenbaum in https://github.com/laravel/framework/pull/61100 - [13.x] Restore array support in Str::substrReplace by @Faiyajz in https://github.com/laravel/framework/pull/61105
- Revert "[13.x] Bump minimum versions" by @GrahamCampbell in https://github.com/laravel/framework/pull/61118
- [12.x] ColumnDefinition::unsigned takes a parameter, which should be documented by @afk11 in https://github.com/laravel/framework/pull/61123
- [13.x] Ensure Queue drivers work for enums matching the Fake by @jackbayliss in https://github.com/laravel/framework/pull/61116
- [13.x] Preserve queue resolution on queued mailables in MailFake by @hamdyelbatal122 in https://github.com/laravel/framework/pull/61114
- [13.x] Handle cache maintenance mode deactivation races by @Faiyajz in https://github.com/laravel/framework/pull/61121
- [13.x] Fix nullable return types on the route binding registrar by @dfinchenko in https://github.com/laravel/framework/pull/61124
- [13.x] Mockery cleanup by @jasonmccreary in https://github.com/laravel/framework/pull/61117
- Merge branch '12.x' by @crynobone in https://github.com/laravel/framework/pull/61130
- [13.x] Support brick math ^0.19 by @jackbayliss in https://github.com/laravel/framework/pull/61133
- Improve signed URL support for Vapor by @timacdonald in https://github.com/laravel/framework/pull/61129
- [13.x] Add a global pause switch for queues by @jackbayliss in https://github.com/laravel/framework/pull/61126