v3.49.0

payloadcms/payloadv3.49.0Jul 25, 2025by denolfe

AI Summary

A major release introducing trash support (soft deletes), group-by functionality for list views, and job scheduling capabilities. It also refactors documentation to remove references to Payload Cloud.

Key Highlights

  • Trash support (soft deletes) for collections
  • Group-by functionality for list views
  • Scheduling jobs functionality
  • Refactoring to remove Payload Cloud references

New Features

  • Trash support (soft deletes)
  • Group by
  • Scheduling jobs
  • Expose refresh method to list drawer context

Full Release Notes

## [v3.49.0](https://github.com/payloadcms/payload/compare/v3.48.0...v3.49.0) (2025-07-25)


### 🚀 Features

* adds trash support (soft deletes) ([#12656](https://github.com/payloadcms/payload/issues/12656)) ([f63dc2a](https://github.com/payloadcms/payload/commit/f63dc2a))
* group by ([#13138](https://github.com/payloadcms/payload/issues/13138)) ([bccf6ab](https://github.com/payloadcms/payload/commit/bccf6ab))
* scheduling jobs ([#12863](https://github.com/payloadcms/payload/issues/12863)) ([c08b2ae](https://github.com/payloadcms/payload/commit/c08b2ae))
* **ui:** expose refresh method to list drawer context ([#13173](https://github.com/payloadcms/payload/issues/13173)) ([e48427e](https://github.com/payloadcms/payload/commit/e48427e))

### 🐛 Bug Fixes

* filtering by polymorphic relationships inside other fields ([#13265](https://github.com/payloadcms/payload/issues/13265)) ([75385de](https://github.com/payloadcms/payload/commit/75385de))
* text field validation for minLength: 1, required: false ([#13124](https://github.com/payloadcms/payload/issues/13124)) ([af2ddff](https://github.com/payloadcms/payload/commit/af2ddff))
* empty folderType arrays break relational dbs ([#13219](https://github.com/payloadcms/payload/issues/13219)) ([7f9de6d](https://github.com/payloadcms/payload/commit/7f9de6d))
* handle undefined values in afterChange hooks when read:false and create:true on the field level access for parents and siblings ([#12664](https://github.com/payloadcms/payload/issues/12664)) ([46d8a26](https://github.com/payloadcms/payload/commit/46d8a26))
* exit payload jobs:run process after completion ([#13211](https://github.com/payloadcms/payload/issues/13211)) ([4ae503d](https://github.com/payloadcms/payload/commit/4ae503d))
* **db-mongodb:** handle duplicate unique index error for DocumentDB ([#13239](https://github.com/payloadcms/payload/issues/13239)) ([c1cfceb](https://github.com/payloadcms/payload/commit/c1cfceb))
* **db-postgres:** search is broken when `useAsTitle` is not specified ([#13232](https://github.com/payloadcms/payload/issues/13232)) ([a83ed5e](https://github.com/payloadcms/payload/commit/a83ed5e))
* **next:** prevent base list filters from being injected into the url ([#13253](https://github.com/payloadcms/payload/issues/13253)) ([0eac58e](https://github.com/payloadcms/payload/commit/0eac58e))
* **plugin-import-export:** json preview and downloads preserve nesting and exclude disabled fields ([#13210](https://github.com/payloadcms/payload/issues/13210)) ([8f85da8](https://github.com/payloadcms/payload/commit/8f85da8))
* **ui:** preserve localized blocks and arrays when using CopyToLocale ([#13216](https://github.com/payloadcms/payload/issues/13216)) ([4a712b3](https://github.com/payloadcms/payload/commit/4a712b3))
* **ui:** incorrect blocks label sizing ([#13264](https://github.com/payloadcms/payload/issues/13264)) ([fa7d209](https://github.com/payloadcms/payload/commit/fa7d209))
* **ui:** ensure document unlocks when logging out from edit view of a locked document ([#13142](https://github.com/payloadcms/payload/issues/13142)) ([7e81d30](https://github.com/payloadcms/payload/commit/7e81d30))
* **ui:** monomorphic relationship fields should not show relationTo option labels ([#13245](https://github.com/payloadcms/payload/issues/13245)) ([29fb9ee](https://github.com/payloadcms/payload/commit/29fb9ee))
* **ui:** select all should reset when params change, page, filter, etc ([#12612](https://github.com/payloadcms/payload/issues/12612)) ([412bf4f](https://github.com/payloadcms/payload/commit/412bf4f))
* **ui:** ensure publishSpecificLocale works during create operation ([#13129](https://github.com/payloadcms/payload/issues/13129)) ([dce898d](https://github.com/payloadcms/payload/commit/dce898d))
* **ui:** properly sync search params to user preferences ([#13200](https://github.com/payloadcms/payload/issues/13200)) ([d7a3faa](https://github.com/payloadcms/payload/commit/d7a3faa))

### ⚡ Performance

* **db-postgres:** avoid including `prettier` to the bundle ([#13251](https://github.com/payloadcms/payload/issues/13251)) ([380ce04](https://github.com/payloadcms/payload/commit/380ce04))
* **drizzle:** single-roundtrip db updates for simple collections ([#13186](https://github.com/payloadcms/payload/issues/13186)) ([94f5e79](https://github.com/payloadcms/payload/commit/94f5e79))

### 🛠 Refactors

* **drizzle:** use getTableName utility ([#13257](https://github.com/payloadcms/payload/issues/13257)) ([1ad7b55](https://github.com/payloadcms/payload/commit/1ad7b55))

### 📚 Documentation

* add `status` to forbidden field names when using Postgres and drafts are enabled ([#13233](https://github.com/payloadcms/payload/issues/13233)) ([7ae4f8c](https://github.com/payloadcms/payload/commit/7ae4f8c))
* remove payload cloud ([#13240](https://github.com/payloadcms/payload/issues/13240)) ([77f279e](https://github.com/payloadcms/payload/commit/77f279e))
* fix typo, example was not valid JSON ([#13224](https://github.com/payloadcms/payload/issues/13224)) ([0eb8f75](https://github.com/payloadcms/payload/commit/0eb8f75))
* shorten line length in code snippet comments to avoid horizontal scrolling ([#13217](https://github.com/payloadcms/payload/issues/13217)) ([d6e21ad](https://github.com/payloadcms/payload/commit/d6e21ad))
* **plugin-import-export:** document plugin-import-export ([#13243](https://github.com/payloadcms/payload/issues/13243)) ([14322a7](https://github.com/payloadcms/payload/commit/14322a7))

### 🔨 Build

* suppress pnpm update notification ([#13241](https://github.com/payloadcms/payload/issues/13241)) ([e7a652f](https://github.com/payloadcms/payload/commit/e7a652f))

### ⚙️ CI

* default audit-dependencies script to high severity ([#13244](https://github.com/payloadcms/payload/issues/13244)) ([3f8fb67](https://github.com/payloadcms/payload/commit/3f8fb67))

### 🏡 Chores

* add new int test verifying that select *improves* performance of new optimization ([#13254](https://github.com/payloadcms/payload/issues/13254)) ([aeee070](https://github.com/payloadcms/payload/commit/aeee070))
* **plugin-import-export:** use debug-level logging for createExport process ([#13242](https://github.com/payloadcms/payload/issues/13242)) ([246a42b](https://github.com/payloadcms/payload/commit/246a42b))

### 🤝 Contributors

- Sasha (@r1tsuu)
- Patrik (@PatrikKozak)
- German Jablonski (@GermanJablo)
- Jarrod Flesch (@JarrodMFlesch)
- Jacob Fletcher (@jacobsfletch)
- Dan Ribbens (@DanRibbens)
- Alessio Gravili (@AlessioGr)
- Elliot DeNolf (@denolfe)
- fgrsource (@fgrsource)
- Chandler Gonzales (@jcgsville)
- Jessica Rynkar (@jessrynkar)
- iamacup (@iamacup)
- Jake Fell (@jakefell)