v3.82.0

payloadcms/payloadv3.82.0Apr 8, 2026by DanRibbens

AI Summary

This release introduces media file disambiguation via query parameters, a TypeScript post-process hook for type generation, and updates to plugin translations. It also fixes several bugs in Next.js, storage adapters, and the UI.

Key Highlights

  • Added ability to disambiguate media files by prefix via query parameter
  • Introduced `typescript.postProcess` hook for custom type generation
  • Updated translations for Portuguese, Swedish, French, and Japanese plugins
  • Fixed Next.js HMR issues and bumped minimum required Next.js version

New Features

  • Media file prefix disambiguation
  • TypeScript post-process hook
  • Portuguese translation for plugin-redirects
  • Search plugin `beforeSync` hook updates
  • UI drag-and-drop components export

Full Release Notes

## [v3.82.0](https://github.com/payloadcms/payload/compare/v3.81.0...v3.82.0) (2026-04-08)


### 🚀 Features

* disambiguate media files by prefix via query parameter ([#15844](https://github.com/payloadcms/payload/issues/15844)) ([05ddec1](https://github.com/payloadcms/payload/commit/05ddec1))
* add missing disableErrors to globals findOne operation ([#14913](https://github.com/payloadcms/payload/issues/14913)) ([c8332e7](https://github.com/payloadcms/payload/commit/c8332e7))
* improve default slugify utility by triming whitespace first ([#14421](https://github.com/payloadcms/payload/issues/14421)) ([fdaa051](https://github.com/payloadcms/payload/commit/fdaa051))
* add typescript.postProcess hook for type generation ([#16103](https://github.com/payloadcms/payload/issues/16103)) ([67b5dc3](https://github.com/payloadcms/payload/commit/67b5dc3))
* **plugin-redirects:** add Portuguese translation ([#15269](https://github.com/payloadcms/payload/issues/15269)) ([122f4c1](https://github.com/payloadcms/payload/commit/122f4c1))
* **plugin-search:** pass collection slug to `beforeSync` hook ([#11581](https://github.com/payloadcms/payload/issues/11581)) ([ebbd6ad](https://github.com/payloadcms/payload/commit/ebbd6ad))
* **ui:** export drag-and-drop components ([#12626](https://github.com/payloadcms/payload/issues/12626)) ([23b0f1b](https://github.com/payloadcms/payload/commit/23b0f1b))

### 🐛 Bug Fixes

* incorrect 24 hour format comment example ([#15649](https://github.com/payloadcms/payload/issues/15649)) ([f42b767](https://github.com/payloadcms/payload/commit/f42b767))
* resolve 404/500 error when downloading files containing hash in filename ([#15799](https://github.com/payloadcms/payload/issues/15799)) ([3a09387](https://github.com/payloadcms/payload/commit/3a09387))
* JSDoc string for focalPoint option in uploads so it correctly mentions defaults to true ([#13070](https://github.com/payloadcms/payload/issues/13070)) ([84090ac](https://github.com/payloadcms/payload/commit/84090ac))
* skip validation for unpublish operations with localized required fields ([#16120](https://github.com/payloadcms/payload/issues/16120)) ([24b9e13](https://github.com/payloadcms/payload/commit/24b9e13))
* skip default validation for virtual fields ([#16015](https://github.com/payloadcms/payload/issues/16015)) ([e09c619](https://github.com/payloadcms/payload/commit/e09c619))
* **db-mongodb:** update mongoose-paginate-v2 to fix collation pagination ([#16049](https://github.com/payloadcms/payload/issues/16049)) ([78a27ab](https://github.com/payloadcms/payload/commit/78a27ab))
* **drizzle:** convert equals/not_equals to in/not_in for hasMany relationship array values ([#15766](https://github.com/payloadcms/payload/issues/15766)) ([59af156](https://github.com/payloadcms/payload/commit/59af156))
* **next:** fix hmr, bump minimum required next.js 16 version to 16.2.2 ([#16202](https://github.com/payloadcms/payload/issues/16202)) ([7f83571](https://github.com/payloadcms/payload/commit/7f83571))
* **next:** admin.meta.title object form renders [object Object] in browser tab ([#16117](https://github.com/payloadcms/payload/issues/16117)) ([0981cdc](https://github.com/payloadcms/payload/commit/0981cdc))
* **plugin-mcp:** add error handling to convertCollectionSchemaToZod ([#16114](https://github.com/payloadcms/payload/issues/16114)) ([6184b0c](https://github.com/payloadcms/payload/commit/6184b0c))
* **plugin-multi-tenant:** infinite api calling loop on user switch ([#16065](https://github.com/payloadcms/payload/issues/16065)) ([3da805f](https://github.com/payloadcms/payload/commit/3da805f))
* **storage-*:** redundant re-uploads when file was already uploaded by the client and add comprehensive E2E tests for `s3` and `vercel-blob` ([#16115](https://github.com/payloadcms/payload/issues/16115)) ([a6735f3](https://github.com/payloadcms/payload/commit/a6735f3))
* **storage-azure:** fix azure storage mime type handling for streaming uploads ([#15949](https://github.com/payloadcms/payload/issues/15949)) ([cd7fcea](https://github.com/payloadcms/payload/commit/cd7fcea))
* **templates:** tailwind file extension is wrong in website template components.json file ([#9342](https://github.com/payloadcms/payload/issues/9342)) ([2011f28](https://github.com/payloadcms/payload/commit/2011f28))
* **templates:** fixed forgot password link ([#15037](https://github.com/payloadcms/payload/issues/15037)) ([b505e36](https://github.com/payloadcms/payload/commit/b505e36))
* **templates:** add generated files to ESLint ignores ([#15716](https://github.com/payloadcms/payload/issues/15716)) ([941a41f](https://github.com/payloadcms/payload/commit/941a41f))
* **templates:** typo in with-cloudflare-d1 template ([#14243](https://github.com/payloadcms/payload/issues/14243)) ([14b708f](https://github.com/payloadcms/payload/commit/14b708f))
* **translations:** fix Swedish unpublish translations and capitalization ([#15353](https://github.com/payloadcms/payload/issues/15353)) ([4e48706](https://github.com/payloadcms/payload/commit/4e48706))
* **translations:** correct French translation for 'move' action ([#14771](https://github.com/payloadcms/payload/issues/14771)) ([750d29f](https://github.com/payloadcms/payload/commit/750d29f))
* **translations:** update passive voice and newLabel wording in zh-TW translations ([#13761](https://github.com/payloadcms/payload/issues/13761)) ([e284ab5](https://github.com/payloadcms/payload/commit/e284ab5))
* **translations:** update Japanese translations related to localizeStatus ([#15358](https://github.com/payloadcms/payload/issues/15358)) ([7ab2881](https://github.com/payloadcms/payload/commit/7ab2881))
* **ui:** relationship filter duplicate options when switching operators ([#16204](https://github.com/payloadcms/payload/issues/16204)) ([3a1f31a](https://github.com/payloadcms/payload/commit/3a1f31a))
* **ui:** unpublish button missing for globals and version count incorrectly incrementing after unpublish ([#16203](https://github.com/payloadcms/payload/issues/16203)) ([1ddeb60](https://github.com/payloadcms/payload/commit/1ddeb60))
* **ui:** exclude unnamed tab labels from filter and groupBy field options ([#9965](https://github.com/payloadcms/payload/issues/9965)) ([b13c5c9](https://github.com/payloadcms/payload/commit/b13c5c9))
* **ui:** update node to v20 ([#15717](https://github.com/payloadcms/payload/issues/15717)) ([b2593d6](https://github.com/payloadcms/payload/commit/b2593d6))
* **ui:** radio fields do not reliably trigger admin.condition re-evaluation on sibling fields ([#16056](https://github.com/payloadcms/payload/issues/16056)) ([7e2a126](https://github.com/payloadcms/payload/commit/7e2a126))

### ⚡ Performance

* skip validation for default timezones ([#16129](https://github.com/payloadcms/payload/issues/16129)) ([76f3693](https://github.com/payloadcms/payload/commit/76f3693))

### 🛠 Refactors

* **plugin-seo:** rename non-JSX files from .tsx to .ts ([#14418](https://github.com/payloadcms/payload/issues/14418)) ([b67882c](https://github.com/payloadcms/payload/commit/b67882c))
* **translations:** improve German translations for consistency and accuracy ([#14439](https://github.com/payloadcms/payload/issues/14439)) ([f3c0bc8](https://github.com/payloadcms/payload/commit/f3c0bc8))

### 📚 Documentation

* fix typo in Collection Config docs (collection → collections) ([#16183](https://github.com/payloadcms/payload/issues/16183)) ([ac085cd](https://github.com/payloadcms/payload/commit/ac085cd))
* remove JSX comment from content in dashboard ([#16156](https://github.com/payloadcms/payload/issues/16156)) ([05447b7](https://github.com/payloadcms/payload/commit/05447b7))
* add warning about Cosmos dB incompatibility ([#13350](https://github.com/payloadcms/payload/issues/13350)) ([c4375bd](https://github.com/payloadcms/payload/commit/c4375bd))
* add info about custom errors via `APIError` to hooks overview ([#13047](https://github.com/payloadcms/payload/issues/13047)) ([d03054e](https://github.com/payloadcms/payload/commit/d03054e))
* fix typo in storage-adapters documentation ([#13648](https://github.com/payloadcms/payload/issues/13648)) ([911f059](https://github.com/payloadcms/payload/commit/911f059))
* rename incorrect usage of the cloud storage plugin to align with the imported module in storage-adapters.mdx ([#11475](https://github.com/payloadcms/payload/issues/11475)) ([d491f29](https://github.com/payloadcms/payload/commit/d491f29))
* add dev note about auth strategy hot-reload requirement ([#14122](https://github.com/payloadcms/payload/issues/14122)) ([c4da453](https://github.com/payloadcms/payload/commit/c4da453))
* fix anchor link reference for settingsMenu ([#14391](https://github.com/payloadcms/payload/issues/14391)) ([8c748d6](https://github.com/payloadcms/payload/commit/8c748d6))
* nested plugin ([#15230](https://github.com/payloadcms/payload/issues/15230)) ([2e653ae](https://github.com/payloadcms/payload/commit/2e653ae))
* add getDataByPath to useForm table ([#12098](https://github.com/payloadcms/payload/issues/12098)) ([69a49e7](https://github.com/payloadcms/payload/commit/69a49e7))
* add missing comma to seo plugin doc ([#11516](https://github.com/payloadcms/payload/issues/11516)) ([df03ed0](https://github.com/payloadcms/payload/commit/df03ed0))
* fix typo in ecommerce template link in seo plugin docs ([#15641](https://github.com/payloadcms/payload/issues/15641)) ([e2cd07c](https://github.com/payloadcms/payload/commit/e2cd07c))
* corrects Local API example in import export docs ([#16128](https://github.com/payloadcms/payload/issues/16128)) ([13a726a](https://github.com/payloadcms/payload/commit/13a726a))
* update link to Custom Components Performance docs ([#15723](https://github.com/payloadcms/payload/issues/15723)) ([9141e34](https://github.com/payloadcms/payload/commit/9141e34))
* update folders documentation with the right property ([#14060](https://github.com/payloadcms/payload/issues/14060)) ([b63198d](https://github.com/payloadcms/payload/commit/b63198d))

### 📝 Templates

* fix tailwind typography config so that it works better with shadcn CLI ([#16209](https://github.com/payloadcms/payload/issues/16209)) ([4931458](https://github.com/payloadcms/payload/commit/4931458))

### 🏡 Chores

* upgrade vitest and @vitest/ui to 4.1.2 ([#16154](https://github.com/payloadcms/payload/issues/16154)) ([5af591c](https://github.com/payloadcms/payload/commit/5af591c))
* export FieldAccessArgs from payload ([#14755](https://github.com/payloadcms/payload/issues/14755)) ([c3ec73f](https://github.com/payloadcms/payload/commit/c3ec73f))
* extract sanitizeField from sanitizeFields ([#16133](https://github.com/payloadcms/payload/issues/16133)) ([b705af4](https://github.com/payloadcms/payload/commit/b705af4))
* improve int summary counts when content-api is unavailable ([#16127](https://github.com/payloadcms/payload/issues/16127)) ([a65e715](https://github.com/payloadcms/payload/commit/a65e715))
* add React component file structure conventions to CLAUDE.md ([#16125](https://github.com/payloadcms/payload/issues/16125)) ([9284441](https://github.com/payloadcms/payload/commit/9284441))
* **richtext-lexical:** improve Swedish translations ([#15273](https://github.com/payloadcms/payload/issues/15273)) ([ac16116](https://github.com/payloadcms/payload/commit/ac16116))
* **templates:** add type detection on getGlobal utility ([#11617](https://github.com/payloadcms/payload/issues/11617)) ([b278a17](https://github.com/payloadcms/payload/commit/b278a17))
* **templates:** remove redundant condition check ([#12130](https://github.com/payloadcms/payload/issues/12130)) ([cf0a883](https://github.com/payloadcms/payload/commit/cf0a883))

### 🤝 Contributors

- Alessio Gravili (@AlessioGr)
- Maxim Seshuk (@maximseshuk)
- Paul (@paulpopus)
- Jens Becker (@jhb-dev)
- JianJroh (@JianJroh)
- Pierre Cabrière (@pierrecabriere)
- Tyler Schwartz (@tschwartz)
- Jarrod Flesch (@JarrodMFlesch)
- Patrik (@PatrikKozak)
- Mohsen (@webgodo)
- German Jablonski (@GermanJablo)
- Anders Semb Hermansen (@andershermansen)
- Marcus Forsberg (@marcusforsberg)
- Sasha Rakhmatulin (@r1tsuu)
- Said Akhrarov (@akhrarovsaid)
- marketsystems (@marketsystems)
- Eduardo Würch (@ewurch)
- Matthieu (@RibeyrollesMatthieu)
- Riley Langbein (@rilrom)
- Matthew DeAbreu (@mdeabreu)
- Tim @ erdee (@tim-at-erdee)
- José Eduardo Dias (@josedudias)
- Rot4tion (@Rot4tion)
- Adebayo Ajayi (@Braggedtooth)
- Christian Wesselhoeft (@xtian)
- ab192130 (@ab192130)
- MichalKormanik (@MichalKormanik)
- Yi Chi (@chiyi4488)
- swenzel-arc (@swenzel-arc)
- roboin (@Robot-Inventor)
- Wes DiMiceli (@wesdimiceli)
- codeflorist (@codeflorist)
- Vincent Vu (@rubixvi)
- Ilham Saputrajati (@ilhamsj)
- Boyan Bratvanov (@bratvanov)
- Roman Ryzhikov (@yagee)
- spiner2000 (@spiner2000)
- Sean Zubrickas (@zubricks)
- Sebastian Blank (@blankse)
- Max Malm (@benjick)
- Omar Yusuf Abdi (@omar-y-abdi)
- Shaun Wallace (@ShaunMWallace)