Laravel 13.9.0 업데이트
릴리스: 2026년 5월 14일
평가: 2026년 8월 28일
13.9.0은 Laravel Cloud 큐 메트릭/설정 캐싱 지원, SQS 대용량 페이로드 디스크 저장, ThrottlesExceptions 클로저 지원 등 새 기능이 다수 추가된 통상적인 마이너 릴리스입니다. 대부분 opt-in 기능 추가와 버그 수정, 내부 리팩터/docblock 정리로, 기존 애플리케이션 코드를 즉시 수정해야 하는 항목은 없습니다.
예상되는 하위 호환성 문제
- Attachment::fromUrl()의 URL 스킴 제한심각도 낮음
PR #60034에서 첨부파일 URL 스킴을 좁히는(narrow) 변경이 적용되었습니다. 노트만으로는 정확한 허용 스킴 목록을 알 수 없으나, 기존에 허용되던 비표준 스킴(file://, data: 등)을 사용해 Mailable 첨부를 생성하던 경우 동작이 달라질 수 있습니다.
영향 범위: Mail Attachment::fromUrl() 사용 코드
대응 체크리스트
- Attachment::fromUrl() 사용처 점검선택
메일 첨부파일 생성 시 fromUrl()에 file:// 또는 data: 같은 비표준 스킴을 사용하고 있다면 13.9.0 업그레이드 후 정상 동작하는지 확인하세요.
- Laravel Cloud 큐 사용자는 신규 기능 검토선택
Cloud 큐 메트릭, config 캐싱 지원, after_commit 지원이 추가되었습니다. Laravel Cloud 큐를 사용 중이라면 관련 PR(#60074, #60078, #60094)을 참고해 필요 시 적용하세요.
자동 생성상세 평가
요약
13.9.0은 마이너 릴리스로, Laravel Cloud 큐 통합 강화(메트릭, 설정 캐싱, after_commit 지원), SQS 대용량 페이로드 디스크 저장 옵션, ThrottlesExceptions에 클로저 전달 지원, foreignUuidFor 스키마 헬퍼 추가 등 새로운 기능들이 포함되어 있습니다. 나머지는 버그 수정과 docblock/내부 코드 정리이며, 즉시 대응이 필요한 항목은 없습니다.
주요 변경
- Laravel Cloud 큐 메트릭 및 설정 캐싱 지원 추가 (#60074, #60078, #60094)
- SQS 대용량 큐 페이로드를 디스크에 저장하는 옵션 추가 (#59734)
ThrottlesExceptions미들웨어에 Closure 전달 허용 (#60103)foreignUuidFor스키마 헬퍼, contextual attribute binding에 enum 지원 추가 (#60091, #60092)Concurrency실행에 타임아웃 지원 추가 (#60105)MigrationStarted/MigrationEnded이벤트에 이름 속성 추가 (#60059)- 커스텀 AWS credential provider 사용 시 오류 수정 (#60000)
Attachment::fromUrl()의 URL 스킴 검증 강화 (#60034, #60054)
하위 호환성
노트에 명시된 범위에서 공개 API의 시그니처가 바뀌거나 기존 동작이 깨졌다는 근거는 없습니다. Attachment::fromUrl() 스킴 제한은 비표준 스킴을 사용하던 극히 일부 사례에 영향을 줄 수 있는 정도입니다. PreparesForDispatch 인터페이스, PendingDispatch::when()/conditionable 지원 등은 기존 코드와 호환되는 추가 기능입니다.
패키지 관리자가 확인할 것
등록된 패키지 목록(Scout, Socialite, Http 등) 중 이번 릴리스 노트에서 직접 언급되거나 영향받는 것으로 확인되는 패키지는 없습니다. 해당 없음.
대응 체크리스트
- 메일 발송 로직에서
Attachment::fromUrl()을 비표준 URL 스킴과 함께 사용 중인지 확인 - Laravel Cloud 큐를 사용 중이라면 새 메트릭/설정 캐싱/after_commit 기능 도입 검토 (선택)
- SQS 대용량 페이로드 문제가 있었다면 새 디스크 저장 옵션 검토 (선택)
- 일반 애플리케이션은 특별한 조치 없이 업그레이드 가능
GitHub 릴리스 노트를 근거로 언어 모델 (claude-sonnet-5)이 작성했으며, 사람이 검수하지 않았습니다. 실제 적용 전에는 공식 릴리스 노트와 업그레이드 가이드를 함께 확인하세요.
GitHub 원문 릴리스 노트 보기
- [13.x] Fix issue using custom aws credential providers by @iWader in https://github.com/laravel/framework/pull/60000
- [13.x] Revert "Correct Factory::configure @return to $this (#59963)" by @jnoordsij in https://github.com/laravel/framework/pull/60004
- [13.x] Replace
mb_splitwithpreg_splitby @jnoordsij in https://github.com/laravel/framework/pull/60012 - [13.x] Keep calls to implode() consistent by @lucasmichot in https://github.com/laravel/framework/pull/60013
- [13.x] update
rand()tomt_rand()by @browner12 in https://github.com/laravel/framework/pull/60018 - [13.x] remove
mt_srand()deprecated "mode" argument by @browner12 in https://github.com/laravel/framework/pull/60020 - [13.x] Remove useless
fail-fastoption by @lucasmichot in https://github.com/laravel/framework/pull/60019 - [13.x] Prefer spaceship operator when possible by @lucasmichot in https://github.com/laravel/framework/pull/60015
- [13.x] Fix incorrectly opened DocBlocks by @CasEbb in https://github.com/laravel/framework/pull/60014
- [13.x] Ensure that the named arguments are sorted during a call by @lucasmichot in https://github.com/laravel/framework/pull/60017
- [13.x] Rely on guzzlehttp/psr7 for nested multipart array expansion - Fix #59992 by @RomainMazB in https://github.com/laravel/framework/pull/59984
- [13.x] Add PreparesForDispatch interface for Jobs by @jackbayliss in https://github.com/laravel/framework/pull/59879
- Add support to scoped filesystem for Cloud by @jeremynikolic in https://github.com/laravel/framework/pull/60030
- [13.x] Unused
$parametersinvalidate*case()by @weshooper in https://github.com/laravel/framework/pull/60024 - [13.x] Narrow attachment url scheme by @benbjurstrom in https://github.com/laravel/framework/pull/60034
- [13.x] Skip allocation in mergeFillable/Appends/Hidden/Visible when input is empty by @olivier-zenchef in https://github.com/laravel/framework/pull/60008
- add generic return types to
Builderpaginate methods by @levikl in https://github.com/laravel/framework/pull/60045 - [13.x] Make PendingDispatch conditionable by @kevinb1989 in https://github.com/laravel/framework/pull/60047
- [13.x] Display error in
queue:pausewhenWorkerisn't pausable by @weshooper in https://github.com/laravel/framework/pull/60023 - [13.x] Add tests for
Attachment::fromUrl()URL scheme validation by @mdalikadar in https://github.com/laravel/framework/pull/60054 - [13.x] Fix @params typo in toPrettyJson docblocks by @mosabbirrakib in https://github.com/laravel/framework/pull/60050
- [13.x] re-add docblock for
apply()method by @browner12 in https://github.com/laravel/framework/pull/60055 - [13.x] Add unicode modifier to preg_split by @rodrigopedra in https://github.com/laravel/framework/pull/60056
- [13.x] Add name to MigrationStarted/MigrationEnded events by @jackbayliss in https://github.com/laravel/framework/pull/60059
- [13.x] Ability to override the Worker timeout exit code by @jackbayliss in https://github.com/laravel/framework/pull/60072
- [13.x] Add method to convert a Password instance to a passwordrules string by @imliam in https://github.com/laravel/framework/pull/60070
- add index for database performance by @DGarbs51 in https://github.com/laravel/framework/pull/60073
- [13.x] Add optional disk storage for large SQS queue payloads by @Orrison in https://github.com/laravel/framework/pull/59734
- [13.x] Cloud queue metrics by @timacdonald in https://github.com/laravel/framework/pull/60074
- [13.x] reset Lottery on test case teardown by @cosmastech in https://github.com/laravel/framework/pull/60083
- [13.x] Add support for
after_commitfor Cloud queue metrics by @timacdonald in https://github.com/laravel/framework/pull/60078 - [13.x] Remove Composer
github-oauthcredentials on Linux & Windows Actions by @crynobone in https://github.com/laravel/framework/pull/60095 - Revert "[13.x] Remove Composer
github-oauthcredentials on Linux & Windows Actions" by @crynobone in https://github.com/laravel/framework/pull/60100 - [13.x] Support config caching with Cloud queues by @timacdonald in https://github.com/laravel/framework/pull/60094
- [13.x] Support Concurrency Run Timeouts by @dbpolito in https://github.com/laravel/framework/pull/60105
- [13.x] Allow passing a Closure to
ThrottlesExceptionsmiddleware by @cosmastech in https://github.com/laravel/framework/pull/60103 - [13.x] Add enum support to contextual attribute binding by @Tresor-Kasenda in https://github.com/laravel/framework/pull/60092
- [13.x] Add foreignUuidFor schema helper by @Tresor-Kasenda in https://github.com/laravel/framework/pull/60091
- [13.x] Add unicode modifier to SeeInHtml normalize whitespace regex by @mosabbirrakib in https://github.com/laravel/framework/pull/60090
- [13.x] Replace @return with @var on property docblocks by @mosabbirrakib in https://github.com/laravel/framework/pull/60087
- Fix grammatical error in Lottery::alwaysLose() PHPDoc comment by @rpsohag in https://github.com/laravel/framework/pull/60086
- Fix typo in Sleep::microsecond() PHPDoc comment by @rpsohag in https://github.com/laravel/framework/pull/60085