v3.25.0

payloadcms/payloadv3.25.0Feb 27, 2025by denolfe

AI Summary

Focuses on storage improvements for Vercel, multi-tenant plugin enhancements including customization options, and join field capabilities such as counting related documents.

Key Highlights

  • Large file uploads support on Vercel.
  • Multi-tenant plugin allows customization of selector labels.
  • New `useTenantSelection` hook for public usage.
  • Join fields can now count related documents.
  • Support for block groups in the UI.

New Features

  • Large file uploads on Vercel
  • Count related docs for join fields
  • Multi-tenant selector label customization
  • Multi-tenant filtering of users and tenants
  • UseTenantSelection hook
  • Lexical client access to server components
  • Block groups support

Full Release Notes

## [v3.25.0](https://github.com/payloadcms/payload/compare/v3.24.0...v3.25.0) (2025-02-27)


### ๐Ÿš€ Features

* **storage-*:** large file uploads on Vercel ([#11382](https://github.com/payloadcms/payload/issues/11382)) ([b540da5](https://github.com/payloadcms/payload/commit/b540da5))
* allow to count related docs for join fields ([#11395](https://github.com/payloadcms/payload/issues/11395)) ([3436fb1](https://github.com/payloadcms/payload/commit/3436fb1))
* add support for not_like operation ([#11326](https://github.com/payloadcms/payload/issues/11326)) ([b014416](https://github.com/payloadcms/payload/commit/b014416))
* **plugin-multi-tenant:** allow customization of selector label ([#11418](https://github.com/payloadcms/payload/issues/11418)) ([958e195](https://github.com/payloadcms/payload/commit/958e195))
* **plugin-multi-tenant:** filter users list and tenants lists ([#11417](https://github.com/payloadcms/payload/issues/11417)) ([45cee23](https://github.com/payloadcms/payload/commit/45cee23))
* **plugin-multi-tenant:** export useTenantSelection hook for public usage ([#11364](https://github.com/payloadcms/payload/issues/11364)) ([f477e0e](https://github.com/payloadcms/payload/commit/f477e0e))
* **richtext-lexical:** allows client features to access components added to the import map by the server feature ([#11414](https://github.com/payloadcms/payload/issues/11414)) ([7e713a4](https://github.com/payloadcms/payload/commit/7e713a4))
* **richtext-lexical:** support single-quoted jsx property values in mdx converter ([#11290](https://github.com/payloadcms/payload/issues/11290)) ([563c21b](https://github.com/payloadcms/payload/commit/563c21b))
* **ui:** threads row data through list drawer onSelect callback ([#11339](https://github.com/payloadcms/payload/issues/11339)) ([d766b19](https://github.com/payloadcms/payload/commit/d766b19))
* **ui:** adds support for block groups ([#11239](https://github.com/payloadcms/payload/issues/11239)) ([22f61ad](https://github.com/payloadcms/payload/commit/22f61ad))

### ๐Ÿ› Bug Fixes

* ensure custom IDs are returned to the result when `select` query exists ([#11400](https://github.com/payloadcms/payload/issues/11400)) ([526e535](https://github.com/payloadcms/payload/commit/526e535))
* ensure generated types for config.blocks are not undefined if no blocks defined ([#11377](https://github.com/payloadcms/payload/issues/11377)) ([820a6ec](https://github.com/payloadcms/payload/commit/820a6ec))
* safely access config.blocks during type generation ([#11320](https://github.com/payloadcms/payload/issues/11320)) ([3ffc268](https://github.com/payloadcms/payload/commit/3ffc268))
* working `bin` configuration for custom scripts ([#11294](https://github.com/payloadcms/payload/issues/11294)) ([f779e48](https://github.com/payloadcms/payload/commit/f779e48))
* db transaction errors caused by checkDocumentLockStatus ([#11287](https://github.com/payloadcms/payload/issues/11287)) ([9728d80](https://github.com/payloadcms/payload/commit/9728d80))
* **db-mongodb:** `hasNextPage` with polymorphic joins ([#11394](https://github.com/payloadcms/payload/issues/11394)) ([6b6c289](https://github.com/payloadcms/payload/commit/6b6c289))
* **deps:** ensure Next.js 15.2.0 compatibility, upgrade nextjs and @types/react versions in monorepo ([#11419](https://github.com/payloadcms/payload/issues/11419)) ([2a3682f](https://github.com/payloadcms/payload/commit/2a3682f))
* **next:** nested relationship filter options ([#11375](https://github.com/payloadcms/payload/issues/11375)) ([0a1af45](https://github.com/payloadcms/payload/commit/0a1af45))
* **next:** use correct hmr url if assetPrefix is set in next config ([#10859](https://github.com/payloadcms/payload/issues/10859)) ([1725af5](https://github.com/payloadcms/payload/commit/1725af5))
* **next:** uses assetPrefix from next config in webpack-hmr URL ([#11229](https://github.com/payloadcms/payload/issues/11229)) ([26163a7](https://github.com/payloadcms/payload/commit/26163a7))
* **plugin-multi-tenant:** user access, thread field names through ([#11365](https://github.com/payloadcms/payload/issues/11365)) ([3778180](https://github.com/payloadcms/payload/commit/3778180))
* **plugin-nested-docs:** fallback to empty string if `useAsTitle` field is undefined ([#11338](https://github.com/payloadcms/payload/issues/11338)) ([09ca514](https://github.com/payloadcms/payload/commit/09ca514))
* **plugin-nested-docs:** corrects data shape of breadcrumbs returned in hooks ([#10866](https://github.com/payloadcms/payload/issues/10866)) ([d92c000](https://github.com/payloadcms/payload/commit/d92c000))
* **richtext-lexical:** incorrect UploadData types ([#11288](https://github.com/payloadcms/payload/issues/11288)) ([2612756](https://github.com/payloadcms/payload/commit/2612756))
* **ui:** skip bulk upload thumbnail generation on non-image files ([#11378](https://github.com/payloadcms/payload/issues/11378)) ([81fd42e](https://github.com/payloadcms/payload/commit/81fd42e))
* **ui:** allow json fields to be updated externally ([#11371](https://github.com/payloadcms/payload/issues/11371)) ([36e152d](https://github.com/payloadcms/payload/commit/36e152d))
* **ui:** bulk upload `DiscardWithoutSaving` modal styles ([#11381](https://github.com/payloadcms/payload/issues/11381)) ([7bb1c9d](https://github.com/payloadcms/payload/commit/7bb1c9d))
* **ui:** object type field labels not displaying in search filter ([#11366](https://github.com/payloadcms/payload/issues/11366)) ([f1b005c](https://github.com/payloadcms/payload/commit/f1b005c))
* **ui:** custom block labels stale when reordering blocks ([#11367](https://github.com/payloadcms/payload/issues/11367)) ([2477fc6](https://github.com/payloadcms/payload/commit/2477fc6))
* **ui:** link element triggering clicks twice ([#11362](https://github.com/payloadcms/payload/issues/11362)) ([f9121c1](https://github.com/payloadcms/payload/commit/f9121c1))
* **ui:** only show bulk select all when count is less than total ([#11329](https://github.com/payloadcms/payload/issues/11329)) ([a8bec9a](https://github.com/payloadcms/payload/commit/a8bec9a))
* **ui:** confirmation modal should build off of drawerDepth, instead โ€ฆ ([#11305](https://github.com/payloadcms/payload/issues/11305)) ([460d50b](https://github.com/payloadcms/payload/commit/460d50b))

### โšก Performance

* remove deep copy of the entire sanitized entity config in `configToJSONSchema` ([#11342](https://github.com/payloadcms/payload/issues/11342)) ([a13d4fe](https://github.com/payloadcms/payload/commit/a13d4fe))
* add limit: 1 and pagination: false to various payload queries ([#11319](https://github.com/payloadcms/payload/issues/11319)) ([0058f82](https://github.com/payloadcms/payload/commit/0058f82))
* ensure fetching and updating preferences doesn't cause transaction errors and is done correctly ([#11311](https://github.com/payloadcms/payload/issues/11311)) ([845c647](https://github.com/payloadcms/payload/commit/845c647))
* **db-mongodb:** remove `JSON.parse(JSON.stringify)` copying of results ([#11293](https://github.com/payloadcms/payload/issues/11293)) ([1dc748d](https://github.com/payloadcms/payload/commit/1dc748d))
* **drizzle:** use faster, direct db query for getting id to update in updateOne ([#11391](https://github.com/payloadcms/payload/issues/11391)) ([e4712a8](https://github.com/payloadcms/payload/commit/e4712a8))
* **next:** reduce getNavPrefs calls from 3 to 1 per page load ([#11318](https://github.com/payloadcms/payload/issues/11318)) ([c7c5018](https://github.com/payloadcms/payload/commit/c7c5018))
* **next:** avoid unnecessary upsertPreferences call on page load ([#11302](https://github.com/payloadcms/payload/issues/11302)) ([76bd05c](https://github.com/payloadcms/payload/commit/76bd05c))

### ๐Ÿ›  Refactors

* simplify collection, global and auth operations ([#11374](https://github.com/payloadcms/payload/issues/11374)) ([4410a49](https://github.com/payloadcms/payload/commit/4410a49))
* simplify running field hooks ([#11372](https://github.com/payloadcms/payload/issues/11372)) ([dc9e8fa](https://github.com/payloadcms/payload/commit/dc9e8fa))
* **ui:** moves bulk edit controls ([#11332](https://github.com/payloadcms/payload/issues/11332)) ([f31568c](https://github.com/payloadcms/payload/commit/f31568c))

### ๐Ÿ“š Documentation

* adds Reserved Field Names section to migration guide ([#11308](https://github.com/payloadcms/payload/issues/11308)) ([bcc6857](https://github.com/payloadcms/payload/commit/bcc6857))
* improve lexical code block documentation ([#11416](https://github.com/payloadcms/payload/issues/11416)) ([67b7a73](https://github.com/payloadcms/payload/commit/67b7a73))
* add lexical docs for configuring jsx converters for internal links and overriding them ([#11415](https://github.com/payloadcms/payload/issues/11415)) ([88a2841](https://github.com/payloadcms/payload/commit/88a2841))
* add info about changes in localized fields to v2 -> v3 migration guide ([#11244](https://github.com/payloadcms/payload/issues/11244)) ([d326086](https://github.com/payloadcms/payload/commit/d326086))
* fix links to react hooks ([#11344](https://github.com/payloadcms/payload/issues/11344)) ([4224c68](https://github.com/payloadcms/payload/commit/4224c68))
* update outdated docs/rich-text/overview feature names ([#11324](https://github.com/payloadcms/payload/issues/11324)) ([6ff380c](https://github.com/payloadcms/payload/commit/6ff380c))
* fix formatting in field hooks table ([#11300](https://github.com/payloadcms/payload/issues/11300)) ([af92c15](https://github.com/payloadcms/payload/commit/af92c15))
* removes outdated `rateLimit` option ([#11291](https://github.com/payloadcms/payload/issues/11291)) ([c517e7e](https://github.com/payloadcms/payload/commit/c517e7e))
* fix invalid jsx in banner block ([#11289](https://github.com/payloadcms/payload/issues/11289)) ([b1e9aa5](https://github.com/payloadcms/payload/commit/b1e9aa5))

### ๐Ÿงช Tests

* removes all unnecessary page.waitForURL methods ([#11412](https://github.com/payloadcms/payload/issues/11412)) ([b975858](https://github.com/payloadcms/payload/commit/b975858))

### ๐Ÿ“ Templates

* update docker-compose to use postgres by default in postgres specific templates ([#11328](https://github.com/payloadcms/payload/issues/11328)) ([5d7be15](https://github.com/payloadcms/payload/commit/5d7be15))

### โš™๏ธ CI

* remove codeowners file ([#11385](https://github.com/payloadcms/payload/issues/11385)) ([48f183b](https://github.com/payloadcms/payload/commit/48f183b))

### ๐Ÿก Chores

* cleanup queues test suite ([#11410](https://github.com/payloadcms/payload/issues/11410)) ([c6ab312](https://github.com/payloadcms/payload/commit/c6ab312))
* add JSDoc for globals Local API operations ([#11313](https://github.com/payloadcms/payload/issues/11313)) ([0594701](https://github.com/payloadcms/payload/commit/0594701))
* cut down logging noise when file was not found on the disk ([#11295](https://github.com/payloadcms/payload/issues/11295)) ([f6f6a1d](https://github.com/payloadcms/payload/commit/f6f6a1d))
* add JSDoc for collection Local API operations properties ([#11265](https://github.com/payloadcms/payload/issues/11265)) ([ee5e96a](https://github.com/payloadcms/payload/commit/ee5e96a))
* passes allowCreate into list drawer and adds test ([#11284](https://github.com/payloadcms/payload/issues/11284)) ([c05f10a](https://github.com/payloadcms/payload/commit/c05f10a))
* **plugin-cloud:** refresh session on ExpiredToken error code ([#8904](https://github.com/payloadcms/payload/issues/8904)) ([1e698c2](https://github.com/payloadcms/payload/commit/1e698c2))
* **translations:** adds missing client keys and removes translated validation errors ([#10841](https://github.com/payloadcms/payload/issues/10841)) ([6fad5d7](https://github.com/payloadcms/payload/commit/6fad5d7))

### ๐Ÿค Contributors

- Sasha (@r1tsuu)
- Patrik (@PatrikKozak)
- Jacob Fletcher (@jacobsfletch)
- Alessio Gravili (@AlessioGr)
- Jarrod Flesch (@JarrodMFlesch)
- Elliot DeNolf (@denolfe)
- Kendell Joseph (@kendelljoseph)
- Jessica Chowdhury (@JessChowdhury)
- Rafal Sypien (@inuue)
- Paul (@paulpopus)
- Tib (@T1l3)
- Said Akhrarov (@akhrarovsaid)
- Boyan Bratvanov (@bratvanov)