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)