v3.87.0

labring/FastGPTv3.87.0Jul 31, 2026by denolfe

AI Summary

Payload CMS release enhancing storage capabilities (Azure), localization, and UI interactions.

Key Highlights

  • Azure storage now supports files larger than 5GB via chunked uploads.
  • Fixed localization preservation through tabs in the UI.
  • Improved UI for folder creation drawers and field admin permissions.
  • Replaced deprecated `image-size` dependency with `image-dimensions`.

New Features

  • Large file upload support (Azure > 5GB)
  • Localization fixes for tabs
  • UI improvements for field permissions

Full Release Notes

## [v3.87.0](https://github.com/payloadcms/payload/compare/v3.86.0...v3.87.0) (2026-07-31)


### πŸš€ Features

* **storage-azure:** client uploads with chunkLargeFiles can now support files larger than 5gb ([#17319](https://github.com/payloadcms/payload/issues/17319)) ([3c00a39](https://github.com/payloadcms/payload/commit/3c00a39))

### πŸ› Bug Fixes

* preserve parent localization through tabs 3.x ([#17591](https://github.com/payloadcms/payload/issues/17591)) ([9c8d636](https://github.com/payloadcms/payload/commit/9c8d636))
* replace image-size with image-dimensions dependency for upload dimensions ([#17571](https://github.com/payloadcms/payload/issues/17571)) ([2a99a01](https://github.com/payloadcms/payload/commit/2a99a01))
* forward locale in count and countGlobalVersions (3.x) ([#17547](https://github.com/payloadcms/payload/issues/17547)) ([e042561](https://github.com/payloadcms/payload/commit/e042561))
* pass id to delete access control on soft delete in updateByID ([#17529](https://github.com/payloadcms/payload/issues/17529)) ([a539f5b](https://github.com/payloadcms/payload/commit/a539f5b))
* prefer draft titles in by folder view ([#17412](https://github.com/payloadcms/payload/issues/17412)) ([ef8a6a5](https://github.com/payloadcms/payload/commit/ef8a6a5))
* arrays and blocks should handle null values, v3 backport ([#17278](https://github.com/payloadcms/payload/issues/17278)) ([2a69863](https://github.com/payloadcms/payload/commit/2a69863))
* **db-mongodb:** error on null values in arrays and blocks ([#17190](https://github.com/payloadcms/payload/issues/17190)) ([249f8df](https://github.com/payloadcms/payload/commit/249f8df))
* **drizzle:** validate companion table name length against 63-char limit ([#17563](https://github.com/payloadcms/payload/issues/17563)) ([fd629f2](https://github.com/payloadcms/payload/commit/fd629f2))
* **drizzle:** dedupe reused localized block tables ([#17430](https://github.com/payloadcms/payload/issues/17430)) ([3e8191c](https://github.com/payloadcms/payload/commit/3e8191c))
* **plugin-multi-tenant:** apply tenant on confirm ([#17350](https://github.com/payloadcms/payload/issues/17350)) ([09e01df](https://github.com/payloadcms/payload/commit/09e01df))
* **storage-vercel-blob:** allow overwriting existing blob keys ([#17385](https://github.com/payloadcms/payload/issues/17385)) ([fc2572e](https://github.com/payloadcms/payload/commit/fc2572e))
* **templates:** prevent unauthenticated draft-mode access in website preview route ([#17472](https://github.com/payloadcms/payload/issues/17472)) ([0c2e9a8](https://github.com/payloadcms/payload/commit/0c2e9a8))
* **templates:** mark website button as client component for radix-slot context ([#17474](https://github.com/payloadcms/payload/issues/17474)) ([981b282](https://github.com/payloadcms/payload/commit/981b282))
* **ui:** resolve named-tab field permissions in bulk edit field select (3.x backport of #17523) ([#17524](https://github.com/payloadcms/payload/issues/17524)) ([2371624](https://github.com/payloadcms/payload/commit/2371624))
* **ui:** keep folder create drawers open during autosave ([#17421](https://github.com/payloadcms/payload/issues/17421)) ([bf72bda](https://github.com/payloadcms/payload/commit/bf72bda))
* **ui:** handle undefined field admin components ([#17388](https://github.com/payloadcms/payload/issues/17388)) ([5157c72](https://github.com/payloadcms/payload/commit/5157c72))

### πŸ“š Documentation

* remove deprecated root endpoint property ([#17570](https://github.com/payloadcms/payload/issues/17570)) ([6402daa](https://github.com/payloadcms/payload/commit/6402daa))
* accessibility banner fix ([#17431](https://github.com/payloadcms/payload/issues/17431)) ([29dd43c](https://github.com/payloadcms/payload/commit/29dd43c))
* fix link in live preview dynamic url section ([#17340](https://github.com/payloadcms/payload/issues/17340)) ([cc81ef0](https://github.com/payloadcms/payload/commit/cc81ef0))
* document exported TypeScript type helpers for plugins ([#17336](https://github.com/payloadcms/payload/issues/17336)) ([d4d029f](https://github.com/payloadcms/payload/commit/d4d029f))
* **plugin-mcp:** fix broken Claude Code link ([#17502](https://github.com/payloadcms/payload/issues/17502)) ([21e24ca](https://github.com/payloadcms/payload/commit/21e24ca))

### πŸ§ͺ Tests

* **richtext-lexical:** create dev user first in seed to fix flaky e2e (3.x backport of #17507) ([#17568](https://github.com/payloadcms/payload/issues/17568)) ([0f6c1b3](https://github.com/payloadcms/payload/commit/0f6c1b3))

### βš™οΈ CI

* remove --json from pnpm publish to fix release hang on pnpm v11 ([#17279](https://github.com/payloadcms/payload/issues/17279)) ([4a82c20](https://github.com/payloadcms/payload/commit/4a82c20))

### 🏑 Chores

* export parse params and related sanitizers ([#17314](https://github.com/payloadcms/payload/issues/17314)) ([f14722a](https://github.com/payloadcms/payload/commit/f14722a))

### 🀝 Contributors

- Dan Ribbens (@DanRibbens)
- Paul (@paulpopus)
- Patrik (@PatrikKozak)
- Nate Lentz (@nathanlentz)
- Kacper Zawojski (@zawoj)
- Marc Maceira (@marcmaceira)
- Jarrod Flesch (@JarrodMFlesch)
- Sean Zubrickas (@zubricks)
- Raşit Akyol (@rasitakyol)
- Jessica Rynkar (@JessRynkar)
- Elliot DeNolf (@denolfe)