v3.18.0

payloadcms/payloadv3.18.0Jan 20, 2025by denolfe

AI Summary

Introduces the multi-tenant plugin, support for remote URL uploads, JPEG XL image size calculation, and JSX/HTML converters for lexical tab nodes.

Key Highlights

  • Multi-tenant plugin is now available.
  • Support for client-side and server-side remote URL uploads.
  • JPEG XL image size calculation support.
  • JSX and HTML converters for tab nodes.

New Features

  • Multi-tenant plugin
  • Remote URL uploads (client and server)
  • JPEG XL image size calculation
  • JSX and HTML converters for tab nodes
  • Server-side view context exposure

Full Release Notes

## [v3.18.0](https://github.com/payloadcms/payload/compare/v3.17.1...v3.18.0) (2025-01-20)


### 🚀 Features

* adds support for both client-side and server-side remote URL uploads fetching ([#10004](https://github.com/payloadcms/payload/issues/10004)) ([38a06e7](https://github.com/payloadcms/payload/commit/38a06e7))
* support JPEG XL image size calculation ([#10624](https://github.com/payloadcms/payload/issues/10624)) ([6ebcbe4](https://github.com/payloadcms/payload/commit/6ebcbe4))
* adds multi-tenant plugin ([#10447](https://github.com/payloadcms/payload/issues/10447)) ([813e70b](https://github.com/payloadcms/payload/commit/813e70b))
* **examples:** add example with Remix + Payload Local API ([#10171](https://github.com/payloadcms/payload/issues/10171)) ([5a9cf89](https://github.com/payloadcms/payload/commit/5a9cf89))
* **richtext-lexical:** add jsx and html converters for tab nodes ([#10565](https://github.com/payloadcms/payload/issues/10565)) ([2e09da8](https://github.com/payloadcms/payload/commit/2e09da8))
* **ui:** exposes context of the view being rendered on the server ([#10620](https://github.com/payloadcms/payload/issues/10620)) ([e80d679](https://github.com/payloadcms/payload/commit/e80d679))

### 🐛 Bug Fixes

* updates field validation error messages to use labels if applicable ([#10601](https://github.com/payloadcms/payload/issues/10601)) ([ad553e9](https://github.com/payloadcms/payload/commit/ad553e9))
* delete scheduled publish jobs when deleting documents ([#10584](https://github.com/payloadcms/payload/issues/10584)) ([05b9d94](https://github.com/payloadcms/payload/commit/05b9d94))
* UpsertArgs is not exported in payload ([#9347](https://github.com/payloadcms/payload/issues/9347)) ([7a392dd](https://github.com/payloadcms/payload/commit/7a392dd))
* form state read access control args ([#10576](https://github.com/payloadcms/payload/issues/10576)) ([05b03b2](https://github.com/payloadcms/payload/commit/05b03b2))
* missing find collection versions REST endpoint ([#10573](https://github.com/payloadcms/payload/issues/10573)) ([120735c](https://github.com/payloadcms/payload/commit/120735c))
* basePath was not passed through if method was overriden ([#10562](https://github.com/payloadcms/payload/issues/10562)) ([90e1843](https://github.com/payloadcms/payload/commit/90e1843))
* **db-mongodb:** incorrect errors logging due to invalid logic in `handleError` ([#10575](https://github.com/payloadcms/payload/issues/10575)) ([9043b10](https://github.com/payloadcms/payload/commit/9043b10))
* **payload-cloud:** add ts strict mode and fix a couple of wrong runtime behaviors ([#10570](https://github.com/payloadcms/payload/issues/10570)) ([16ad7a6](https://github.com/payloadcms/payload/commit/16ad7a6))
* **plugin-seo:** loosen some types to restore compatibility between minor versions ([#10670](https://github.com/payloadcms/payload/issues/10670)) ([9c29541](https://github.com/payloadcms/payload/commit/9c29541))
* **plugin-stripe:** hooks did not use api key from plugin config ([#10671](https://github.com/payloadcms/payload/issues/10671)) ([d2f63dc](https://github.com/payloadcms/payload/commit/d2f63dc))
* **richtext-lexical:** setting hideInsertParagraphAtEnd to true did not hide insert paragraph button ([#10581](https://github.com/payloadcms/payload/issues/10581)) ([8ab05b0](https://github.com/payloadcms/payload/commit/8ab05b0))
* **richtext-lexical:** inline blocks did not store nested fields correctly ([#10578](https://github.com/payloadcms/payload/issues/10578)) ([61117ee](https://github.com/payloadcms/payload/commit/61117ee))
* **richtext-lexical:** ensure jsx and html converters do not output linebreak if editor is empty ([#10563](https://github.com/payloadcms/payload/issues/10563)) ([df4af70](https://github.com/payloadcms/payload/commit/df4af70))
* **richtext-slate:** link and upload extra field drawers did not render fields if collection has unrelated access control set ([#10583](https://github.com/payloadcms/payload/issues/10583)) ([ecf0572](https://github.com/payloadcms/payload/commit/ecf0572))
* **ui:** renders custom block row labels ([#10686](https://github.com/payloadcms/payload/issues/10686)) ([6c19579](https://github.com/payloadcms/payload/commit/6c19579))
* **ui:** fixed many bugs in the WhereBuilder relationship select menu ([#10553](https://github.com/payloadcms/payload/issues/10553)) ([56667cd](https://github.com/payloadcms/payload/commit/56667cd))
* **ui:** replace hard coded path to API with `serverURL` and `routes.api` ([#10618](https://github.com/payloadcms/payload/issues/10618)) ([5a95237](https://github.com/payloadcms/payload/commit/5a95237))
* **ui:** placement issue with sonner toasts ([#10641](https://github.com/payloadcms/payload/issues/10641)) ([f1cc8bd](https://github.com/payloadcms/payload/commit/f1cc8bd))
* **ui:** show outline on focus for sort column buttons ([#9557](https://github.com/payloadcms/payload/issues/9557)) ([818467d](https://github.com/payloadcms/payload/commit/818467d))

### ⚡ Performance

* list view table should not send duplicative client CollectionConfig to client ([#10664](https://github.com/payloadcms/payload/issues/10664)) ([823e223](https://github.com/payloadcms/payload/commit/823e223))
* ensure deepCopy in beforeValidate hook does not run unnecessarily for rest and graphQL API ([#10666](https://github.com/payloadcms/payload/issues/10666)) ([b69fe99](https://github.com/payloadcms/payload/commit/b69fe99))
* optimize getEntityConfig lookups ([#10665](https://github.com/payloadcms/payload/issues/10665)) ([c07c9e9](https://github.com/payloadcms/payload/commit/c07c9e9))
* remove deepCopying in sanitizeJoinQuery, optimize flattenWhereToOperators ([#10663](https://github.com/payloadcms/payload/issues/10663)) ([91ed882](https://github.com/payloadcms/payload/commit/91ed882))
* operations performance optimizations ([#10609](https://github.com/payloadcms/payload/issues/10609)) ([42382b6](https://github.com/payloadcms/payload/commit/42382b6))
* reduce document data deepCopying in field hooks ([#10610](https://github.com/payloadcms/payload/issues/10610)) ([116fd99](https://github.com/payloadcms/payload/commit/116fd99))
* do not send minRows and maxRows undefined values to client ([#10600](https://github.com/payloadcms/payload/issues/10600)) ([0a1cf7b](https://github.com/payloadcms/payload/commit/0a1cf7b))
* ensure unnecessary config translations are not sent to the client ([#10524](https://github.com/payloadcms/payload/issues/10524)) ([3fb6ac3](https://github.com/payloadcms/payload/commit/3fb6ac3))
* significantly reduce form state response size by up to 3x ([#9388](https://github.com/payloadcms/payload/issues/9388)) ([31ae27b](https://github.com/payloadcms/payload/commit/31ae27b))
* **richtext-lexical:** ensure internal link nodes do not store url field, and vice versa ([#10564](https://github.com/payloadcms/payload/issues/10564)) ([5d6c29f](https://github.com/payloadcms/payload/commit/5d6c29f))
* **ui:** remove unnecessary deepCopy in reduceToSerializableFields ([#10667](https://github.com/payloadcms/payload/issues/10667)) ([a98a398](https://github.com/payloadcms/payload/commit/a98a398))
* **ui:** speed up list view rendering, ensure root layout does not re-render when navigating to list view ([#10607](https://github.com/payloadcms/payload/issues/10607)) ([fafe37e](https://github.com/payloadcms/payload/commit/fafe37e))

### 📚 Documentation

* react hooks - update useForm import path ([#10658](https://github.com/payloadcms/payload/issues/10658)) ([ef44bdd](https://github.com/payloadcms/payload/commit/ef44bdd))
* removes live preview image placeholder comment ([#10643](https://github.com/payloadcms/payload/issues/10643)) ([64fc2df](https://github.com/payloadcms/payload/commit/64fc2df))
* update wording for sentence ([#10599](https://github.com/payloadcms/payload/issues/10599)) ([22f3c79](https://github.com/payloadcms/payload/commit/22f3c79))
* add section on localized access control ([#10567](https://github.com/payloadcms/payload/issues/10567)) ([8217842](https://github.com/payloadcms/payload/commit/8217842))

### 🧪 Tests

* field level validation errors ([#10614](https://github.com/payloadcms/payload/issues/10614)) ([86ff0a4](https://github.com/payloadcms/payload/commit/86ff0a4))

### 📝 Templates

* form fields will now respect 'required' flag from config on website template ([#10681](https://github.com/payloadcms/payload/issues/10681)) ([2d70269](https://github.com/payloadcms/payload/commit/2d70269))
* add cache tag to images so that they can be revalidated along with the page on website templates ([#10647](https://github.com/payloadcms/payload/issues/10647)) ([7d10e1b](https://github.com/payloadcms/payload/commit/7d10e1b))
* bump for v3.17.1 ([#10560](https://github.com/payloadcms/payload/issues/10560)) ([592f02b](https://github.com/payloadcms/payload/commit/592f02b))

### 📓 Examples

* add example on Astro + Payload Local API ([#10174](https://github.com/payloadcms/payload/issues/10174)) ([2bf58b6](https://github.com/payloadcms/payload/commit/2bf58b6))

### 🔨 Build

* move larger scripts into tools dir in workspace ([#10653](https://github.com/payloadcms/payload/issues/10653)) ([f18ca9c](https://github.com/payloadcms/payload/commit/f18ca9c))

### ⚙️ CI

* update canary script for tools dir ([711febc](https://github.com/payloadcms/payload/commit/711febc))
* add multi-tenant plugin to publish list ([076ffa2](https://github.com/payloadcms/payload/commit/076ffa2))
* disable integration tests retrying ([#10615](https://github.com/payloadcms/payload/issues/10615)) ([28b7c04](https://github.com/payloadcms/payload/commit/28b7c04))
* access sha in dispatch event ([5ee36fc](https://github.com/payloadcms/payload/commit/5ee36fc))
* dispatch event ([f306785](https://github.com/payloadcms/payload/commit/f306785))
* **scripts:** publish-canary script always bump minor, more realistic [skip ci][skip lint] ([4629784](https://github.com/payloadcms/payload/commit/4629784))

### 🏡 Chores

* set save-prefix='' for repo [skip ci] ([ef4b8d9](https://github.com/payloadcms/payload/commit/ef4b8d9))
* run pnpm dev without dev - this improves error logging on init ([#10669](https://github.com/payloadcms/payload/issues/10669)) ([9215f03](https://github.com/payloadcms/payload/commit/9215f03))
* adjust multi tenant version ([#10640](https://github.com/payloadcms/payload/issues/10640)) ([baad382](https://github.com/payloadcms/payload/commit/baad382))
* multi-tenant plugin updates ([#10598](https://github.com/payloadcms/payload/issues/10598)) ([0d47a5d](https://github.com/payloadcms/payload/commit/0d47a5d))
* enable noUncheckedIndexedAccess in all packages except richtext-lexical ([#10592](https://github.com/payloadcms/payload/issues/10592)) ([d4039f2](https://github.com/payloadcms/payload/commit/d4039f2))
* enable noImplicitOverride in all packages ([#10588](https://github.com/payloadcms/payload/issues/10588)) ([d55b6a3](https://github.com/payloadcms/payload/commit/d55b6a3))
* update mongodb-memory-server v9 -> v10 ([#10556](https://github.com/payloadcms/payload/issues/10556)) ([918bd72](https://github.com/payloadcms/payload/commit/918bd72))
* make TypeScript strict in test folder. Simplify tsconfig ([#10582](https://github.com/payloadcms/payload/issues/10582)) ([a304dc4](https://github.com/payloadcms/payload/commit/a304dc4))
* make TypeScript strict by default in packages and 7 packages stricter ([#10579](https://github.com/payloadcms/payload/issues/10579)) ([085c1d0](https://github.com/payloadcms/payload/commit/085c1d0))
* **db-mongodb:** update mongoose and mongodb deps ([#10644](https://github.com/payloadcms/payload/issues/10644)) ([00cc10c](https://github.com/payloadcms/payload/commit/00cc10c))
* **deps:** upgrade various dependencies ([#10657](https://github.com/payloadcms/payload/issues/10657)) ([b6e9c3b](https://github.com/payloadcms/payload/commit/b6e9c3b))
* **deps:** bumps path-to-regexp ([8c3f6e1](https://github.com/payloadcms/payload/commit/8c3f6e1))
* **examples:** bumps custom components example to latest and runs seed on init ([#10661](https://github.com/payloadcms/payload/issues/10661)) ([9f5ffed](https://github.com/payloadcms/payload/commit/9f5ffed))
* **richtext-lexical:** add unit test that ensures lexical dependency checker is updated ([#10561](https://github.com/payloadcms/payload/issues/10561)) ([6a6ef8f](https://github.com/payloadcms/payload/commit/6a6ef8f))
* **templates:** make TypeScript strict in website template ([#10587](https://github.com/payloadcms/payload/issues/10587)) ([2ce3829](https://github.com/payloadcms/payload/commit/2ce3829))

### 🤝 Contributors

- Alessio Gravili (@AlessioGr)
- Jacob Fletcher (@jacobsfletch)
- Elliot DeNolf (@denolfe)
- Sasha (@r1tsuu)
- Germán Jabloñski (@GermanJablo)
- Paul (@paulpopus)
- Boyan Bratvanov (@bratvanov)
- Dan Ribbens (@DanRibbens)
- Jarrod Flesch (@JarrodMFlesch)
- Patrik (@PatrikKozak)
- Riley Langbein (@rilrom)
- Said Akhrarov (@akhrarovsaid)
- Greg Presland (@gpresland)
- DracoBlue (@DracoBlue)
- Jessica Chowdhury (@JessChowdhury)
- Suphon T. (@suphon-t)