Releases: payloadcms/payload
Releases · payloadcms/payload
v3.19.0
v3.19.0 (2025-01-23)
🚀 Features
- richtext-lexical: make decoratorNodes and blocks selectable. Centralize selection and deletion logic (#10735) (4aaef5e)
- ui: adds edit many option for bulk uploads (#10646) (be2c482)
🐛 Bug Fixes
- next.js rewrites were not respected for rest api (#10759) (c0ae994)
- browser validation error when visiting account page (#10717) (c1b912d)
- custom blocks field label component missing from config (#10692) (a5695ba)
- apply CORS response headers without
headersWithCors
(#10597) (be98eda) - rest api with
?locale=*
doesn't return full localized data (#10619) (7f8f2f0) - join field with the target relationship inside localized array (#10621) (25a70ab)
- properly handle nullable
minDistance
andmaxDistance
innear
query (#10622) (46c1b37) - db-mongodb: v2-v3 migration versions docs of collections and globals without relationship fields (#10755) (2d8ff72)
- db-mongodb: querying polymorphic relationships with the
all
operator (#10704) (d601300) - db-mongodb: beginTransaction invalid type without replicaset (#10690) (90f88f8)
- next: admin panel UI not rendering custom upload components (#9925) (e4fa171)
- plugin-multi-tenant: selected tenant could become incorrect when navigating out of doc (#10723) (e6d0260)
- plugin-multi-tenant: corrects user type in userHasAccessToAllTenants fn (#10707) (2a98c84)
- plugin-multi-tenant: prevent throwing when no user exists (#10699) (a9c0832)
- plugin-nested-docs: cannot update more than 10 child docs (#10737) (3501d47)
- richtext-lexical: improved regex matchers for absolute and relative URLs to make autolinking more reliable (#10725) (9bb27af)
- richtext-lexical: incorrect table action menu placement (#10627) (9684d31)
- ui: filters out upload specific fields for bulk editing (#10726) (f181f97)
- ui: admin description not being respected on tabs and padding issues with tab descriptions (#10710) (67f7c95)
- ui: issue with thumbnail component crashing the UI if the image didnt exist (#10689) (ddeb29f)
📚 Documentation
- moves collection and globals admin docs to their respective config overviews (#10743) (e5b3da9)
- moves customizing fields doc to fields overview (#10742) (0ca3736)
- adds examples of typed custom field components (#10741) (8b3e2ff)
- adds info on useSelection and useStepNav hooks (#10683) (d8682f2)
- multi-tenant plugin - remove @beta and fix npm url (#10697) (6d43910)
📝 Templates
- update website readmes for additional information on jobs and revalidation (#10758) (61a2a9c)
- fix potential error in the initial form state caused by type mismatch (#10713) (5e4a1d4)
⚙️ CI
🏡 Chores
- temporarily revert 10597 (#10718) (0c5321e)
- adds plugin-multi-tenant scope for pr title (#10706) (3e0baf5)
- examples: change to useClickableCard to use AbortController (#10680) (b55342d)
- plugin-multi-tenant: test suite enhancements (#10732) (9a87699)
- templates: fix eslint errors in website template (#10752) (5689c65)
🤝 Contributors
- Sasha (@r1tsuu)
- Germán Jabloñski (@GermanJablo)
- Paul (@paulpopus)
- Jacob Fletcher (@jacobsfletch)
- Dan Ribbens (@DanRibbens)
- Patrik (@PatrikKozak)
- Alessio Gravili (@AlessioGr)
- Jarrod Flesch (@JarrodMFlesch)
- Elliot DeNolf (@denolfe)
- Said Akhrarov (@akhrarovsaid)
- Boyan Bratvanov (@bratvanov)
- David Murdoch (@dsm23)
- Riley Langbein (@rilrom)
v3.18.0
v3.18.0 (2025-01-20)
🚀 Features
- adds support for both client-side and server-side remote URL uploads fetching (#10004) (38a06e7)
- support JPEG XL image size calculation (#10624) (6ebcbe4)
- adds multi-tenant plugin (#10447) (813e70b)
- examples: add example with Remix + Payload Local API (#10171) (5a9cf89)
- richtext-lexical: add jsx and html converters for tab nodes (#10565) (2e09da8)
- ui: exposes context of the view being rendered on the server (#10620) (e80d679)
🐛 Bug Fixes
- updates field validation error messages to use labels if applicable (#10601) (ad553e9)
- delete scheduled publish jobs when deleting documents (#10584) (05b9d94)
- UpsertArgs is not exported in payload (#9347) (7a392dd)
- form state read access control args (#10576) (05b03b2)
- missing find collection versions REST endpoint (#10573) (120735c)
- basePath was not passed through if method was overriden (#10562) (90e1843)
- db-mongodb: incorrect errors logging due to invalid logic in
handleError
(#10575) (9043b10) - payload-cloud: add ts strict mode and fix a couple of wrong runtime behaviors (#10570) (16ad7a6)
- plugin-seo: loosen some types to restore compatibility between minor versions (#10670) (9c29541)
- plugin-stripe: hooks did not use api key from plugin config (#10671) (d2f63dc)
- richtext-lexical: setting hideInsertParagraphAtEnd to true did not hide insert paragraph button (#10581) (8ab05b0)
- richtext-lexical: inline blocks did not store nested fields correctly (#10578) (61117ee)
- richtext-lexical: ensure jsx and html converters do not output linebreak if editor is empty (#10563) (df4af70)
- richtext-slate: link and upload extra field drawers did not render fields if collection has unrelated access control set (#10583) (ecf0572)
- ui: renders custom block row labels (#10686) (6c19579)
- ui: fixed many bugs in the WhereBuilder relationship select menu (#10553) (56667cd)
- ui: replace hard coded path to API with
serverURL
androutes.api
(#10618) (5a95237) - ui: placement issue with sonner toasts (#10641) (f1cc8bd)
- ui: show outline on focus for sort column buttons (#9557) (818467d)
⚡ Performance
- list view table should not send duplicative client CollectionConfig to client (#10664) (823e223)
- ensure deepCopy in beforeValidate hook does not run unnecessarily for rest and graphQL API (#10666) (b69fe99)
- optimize getEntityConfig lookups (#10665) (c07c9e9)
- remove deepCopying in sanitizeJoinQuery, optimize flattenWhereToOperators (#10663) (91ed882)
- operations performance optimizations (#10609) (42382b6)
- reduce document data deepCopying in field hooks (#10610) (116fd99)
- do not send minRows and maxRows undefined values to client (#10600) (0a1cf7b)
- ensure unnecessary config translations are not sent to the client (#10524) (3fb6ac3)
- significantly reduce form state response size by up to 3x (#9388) (31ae27b)
- richtext-lexical: ensure internal link nodes do not store url field, and vice versa (#10564) (5d6c29f)
- ui: remove unnecessary deepCopy in reduceToSerializableFields (#10667) (a98a398)
- ui: speed up list view rendering, ensure root layout does not re-render when navigating to list view (#10607) (fafe37e)
📚 Documentation
- react hooks - update useForm import path (#10658) (ef44bdd)
- removes live preview image placeholder comment (#10643) (64fc2df)
- update wording for sentence (#10599) (22f3c79)
- add section on localized access control (#10567) (8217842)
🧪 Tests
📝 Templates
- form fields will now respect 'required' flag from config on website template (#10681) (2d70269)
- add cache tag to images so that they can be revalidated along with the page on website templates (#10647) (7d10e1b)
- bump for v3.17.1 (#10560) (592f02b)
📓 Examples
🔨 Build
⚙️ CI
v3.17.1
v3.17.1 (2025-01-14)
Important
This release upgrades the lexical dependency from 0.20.0
to 0.21.0
. If you installed lexical manually, update it to 0.21.0
. Installing lexical manually is not recommended, as it may break between updates, and our re-exported versions should be used. See the yellow banner box for details.
If you still encounter richtext-lexical errors, delete node_modules
and your lockfile (e.g. pnpm-lock.json
), then reinstall (e.g. pnpm install
). Some package managers do not update the lexical peerdep automatically, likely due to a bug on their end.
🐛 Bug Fixes
🤝 Contributors
- Alessio Gravili (@AlessioGr)
v3.17.0
v3.17.0 (2025-01-13)
Important
Please upgrade to 3.17.1. In 3.17.0, you may encounter richtext-lexical dependency checker errors during development.
🚀 Features
- delete scheduled published events (#10504) (f95d6ba)
- add ability to disable cache tags for admin thumbnails (#10319) (6b051bd)
- consolidates logic in update and updateByID operations (#9998) (690e99f)
- richtext-lexical: add new paragraph button below the editor (#10530) (6757f7d)
- richtext-lexical: respect imageURL for blocks and inline blocks (#10532) (ab564d3)
- richtext-lexical: upgrade lexical from 0.20.0 to 0.21.0. Fixes table selection & scrollable table bugs (#10501) (04733f0)
🐛 Bug Fixes
- respect res header immutability (#10554) (5cfb1da)
- better messaging when no arg passed to payload cli (#10550) (9278eec)
- aligns first render for hydration of dates in list view (#10541) (cc13ae7)
- rest api with Next.js
basePath
option (#10535) (04a8083) - localized tabs with empty data and an array field inside lead to crash in
afterChange
(#10410) (1af7d87) - cpa: proper debug logging (#10549) (9004205)
- next: ensures req.locale is populated before running access control (#10533) (afcc970)
- richtext-lexical: error when deleting links (#10557) (9631060)
- richtext-lexical: insert paragraph at end button overlaps floating link toolbar (#10552) (6ada450)
- richtext-lexical: remove alteration of lexical text format constant (#10415) (69fac59)
- richtext-lexical: combine 2 normalizeMarkdown implementations and fix code block regex (#10470) (0252681)
- richtext-lexical: editor placeholder had incorrect padding set for small viewports (#10531) (26711a7)
- richtext-lexical: adds support for localized placeholder (#10523) (dc6d79e)
- richtext-lexical: lexical editor behind a drawer was incorrectly registered as parent editor of lexical editor within drawer (#10502) (fd96a9a)
- translations: update etTranslations type to DefaultTranslationsObject (#10358) (2e0595b)
- ui: reset pagination when typing in WhereBuilder select menu (#10551) (a3ef5ee)
- ui: passes serverProps to custom label components within table columns (#10547) (6848cf4)
- ui: scheduled publish not showing related events in postgres (#10481) (c9584a9)
- ui: table custom label missing client field props (#10540) (415fbf1)
- ui: fixed issue with updatedAt timestamps not updating in the UI when drafts are updated (#10503) (082c4f0)
🛠 Refactors
- improve error logging during onInit and website template seed (#10528) (142c504)
- next: cleans up initPage through initReq overrides and consolidated return types (#10449) (c850bd4)
📚 Documentation
- improves grammar in vercel postgres usage note (#10365) (5043a8a)
- updates docs to reflect correct array hook usage (#10546) (43b40f0)
📝 Templates
- fix issue with shadcn utilities alias across website template and localization example (#10507) (d20dc58)
- bump for v3.16.0 (#10499) (a49f782)
⚙️ CI
🏡 Chores
🤝 Contributors
- Alessio Gravili (@AlessioGr)
- Elliot DeNolf (@denolfe)
- Germán Jabloñski (@GermanJablo)
- Dan Ribbens (@DanRibbens)
- Anthony Mifsud (@amifsud02)
- Ben Löffel (@benloeffel)
- Jacob Fletcher (@jacobsfletch)
- Tristan (@tristankrass)
- Jarrod Flesch (@JarrodMFlesch)
- Paul (@paulpopus)
- Simon Vreman (@SimonVreman)
- Amelia (@LimChorngUan)
- Sasha (@r1tsuu)
- Said Akhrarov (@akhrarovsaid)
v3.16.0
v3.16.0 (2025-01-10)
🚀 Features
- consolidates REST API handling, decouple from next.js (#10466) (686e48d)
- exports ListPreferences from payload (#10474) (ae1542b)
- export the default JWTAuthentication strategy (#10430) (81c1e47)
- autoRun jobs (#10401) (c0dc0cc)
- payload-cloud: set up cron jobs on init (#10106) (36e50dd)
🐛 Bug Fixes
- collection access endpoint optional ID and use 404 for not found response (#10487) (225c24d)
- do not autorun jobs during next build process (#10483) (d8f4f06)
- properly validates preferences json (#10465) (6a262ab)
- schedule publish allowed before saving draft (#10461) (3349a4c)
- next: properly instantiates locale context (#10451) (a78bc6c)
- payload-cloud: infinite recursion on init (#10467) (34a0d00)
- richtext-lexical: respect defaultValue config of link feature url and linkType fields (#10498) (4fc6956)
- richtext-lexical: properly handle error if blocks or inline blocks are not found (#10497) (e0df0d6)
- richtext-lexical: update Thai translations for blockquote and horizontal rule (#10469) (8d5d2d1)
- richtext-lexical: allow external state mutation of block node from outside the form (#10486) (4c96028)
- richtext-lexical: inline Block drawers opened when document mounts (#10480) (bdb96dd)
- ui: disables form during locale change (#8705) (f4596fc)
- ui: stale doc status when publishing, reverting and unpublishing (#10405) (17e7ee2)
- ui: removes edit drawer button from
uploads
collection edit view (#10426) (9701fc6)
📚 Documentation
- update beforeValidate documentation (#10367) (21eec87)
- update draft doc for formatting (#10393) (a8d6f3f)
- removed unnecessary visible
tag in fields/blocks (#10456) (83bd0e2)
📝 Templates
- adjusted the cron job schedule so its compatible with hobby tiers as well (#10457) (d9ff2e0)
- add support for scheduled publish to the website template [no lint] (#10455) (7321f9f)
🏡 Chores
- update year in licenses (#10463) (e46ad67)
- import copy icon from nested folder (#9223) (ac97bfd)
- templates: generate new migrations for vercel (#10458) (5318d24)
🤝 Contributors
- Sasha (@r1tsuu)
- Jacob Fletcher (@jacobsfletch)
- Alessio Gravili (@AlessioGr)
- Sepiolina (@TidalCare)
- Steve Kuznetsov (@stevekuznetsov)
- Adrian Maj (@AdrianMaj)
- Germán Jabloñski (@GermanJablo)
- Dan Ribbens (@DanRibbens)
- Paul (@paulpopus)
- Jarrod Flesch (@JarrodMFlesch)
- Patrik (@PatrikKozak)
v2.32.0
v2.31.0
v3.15.1
v3.15.1 (2025-01-08)
🐛 Bug Fixes
- vercel upload adapter warning false positive (#10434) (7a21b44)
- deprecates admin.disable property (#10429) (b092754)
- richtext-lexical: fix default arg in normalizeMarkdown (#10424) (4d7587d)
🤝 Contributors
- Elliot DeNolf (@denolfe)
- Jacob Fletcher (@jacobsfletch)
- Germán Jabloñski (@GermanJablo)
v3.15.0
v3.15.0 (2025-01-07)
🚀 Features
- allow running sub-tasks from tasks (#10373) (08fb159)
- warn if deploying to vercel and any upload collection missing storage adapter (#10391) (22c4dee)
- next: pass through query params from document view to find operations (#10343) (4a15b86)
- next: adds support for resetting preferences (#10304) (1cade17)
🐛 Bug Fixes
- extends type
all
to the locale type definition in req (#10399) (eadce5e) - increase safety of findConfig (#10400) (f629709)
- handle
withoutEnlargement
for undefinedheight
orwidth
(#10078) (d212733) - allow to set
maxDepth: 0
for join fields, improve join field JSDoc (#10336) (ba228dd) - copy to locale with localized arrays and blocks generate new IDs to prevent errors in postgres (#10292) (c7b3204)
- adds path to server field component prop types (#10330) (e97c43e)
- cpa: ensures .env & .env.example file modifications occur before git initialization (#10312) (3847718)
- db-postgres: handle
undefined
fallback foradapter.schemaName
in relationships migration (#10384) (1525cc6) - db-postgres: added missing quotes and schema name to sql statement in v2-v3 migration (#10322) (556b8ed)
- email-resend: add reply_to to the API when sending emails (#10407) (c7f21fc)
- live-preview-react: allows react peer deps of v16.8.0 or later (#10328) (f2fab39)
- next: live preview tab did not display custom edit view components (#10412) (ef7191b)
- richtext-lexical: make div container optional (#10383) (7fc6227)
- richtext-lexical: formatted inline code resulted in incorrect markdown export (#10413) (827c75a)
- richtext-lexical: modify JSXConvertersFunction type to support block types in strict mode (#10398) (d772b2b)
- richtext-lexical: open inline block drawer on mount (#10318) (5997aa1)
- storage-vercel-blob: return 404 when file is not found (#10327) (d68a1ea)
- ui: drawer component missing closing bracket in style calc (#10411) (ab53aba)
- ui: sort resets columns (#10402) (a83a430)
- ui: make relationship fields update the collection when it is changed in the drawer dropdown (#10338) (be84ad7)
- ui: properly reflects hook changes in ui (#10268) (3ea1d39)
- ui: ensures list drawer does not change underlying step nav (#10339) (b44aade)
📚 Documentation
- minor lexical docs improvements (#10414) (b774f55)
- fix all other links to live-preview example (#10385) (53aea62)
- fix CORS anchor link (#10333) (fd52de6)
- fix link to live-preview example and remove empty placeholder (#10380) (1e247f8)
- fix links and formatting (#10346) (5e4e274)
🧪 Tests
📝 Templates
- fix nested docs url generation for categories (#10403) (398b609)
- use
cross-env
in the plugin template to achieve compatibility with Windows (#10390) (c1abd16) - prevent plugin template from including nested next folder in git (#10364) (0ce7c66)
- bump for v3.14.0 (#10324) (3d5b9f0)
⚙️ CI
- scripts: create draft release with release script, cleanup [skip ci] (6dcf817)
🏡 Chores
- export RunInlineTaskFunction type (#10372) (1a9fba5)
- change base image for template base dockerfile [skip ci] (daf314c)
- deps: bumps react-datepicker to v7.6.0 to suppress react 19 warnings (#10366) (8d24528)
- examples: set HTML dir attribute for RTL locales #10344 (#10345) (df827c0)
- examples: remove outdated testing example (#10370) (5ba477b)
- examples: removes all instances of React.forwardRef (#10334) (1f4790a)
- richtext-lexical: improve block not found error message (#10348) (09d6c60)
- templates: unpin payload packages (#10386) (422e8e3)
- templates: removes all instances of React.forwardRef (#10331) (47e8158)
🤝 Contributors
- Alessio Gravili (@AlessioGr)
- Paul (@paulpopus)
- Boyan Bratvanov (@bratvanov)
- Jacob Fletcher (@jacobsfletch)
- Amir Aryan (@amiraryan1996)
- Patrik (@PatrikKozak)
- Elliot DeNolf (@denolfe)
- Germán Jabloñski (@GermanJablo)
- Sasha (@r1tsuu)
- bakaptr (@Zhousiru)
- Nacho Martin (@nachomglz)
- Said Akhrarov (@akhrarovsaid)
- Danilo Lemes (@Danil0v3s)
- James Mikrut (@jmikrut)
- Anders Semb Hermansen (@andershermansen)
- Jarrod Flesch (@JarrodMFlesch)
v3.14.0
v3.14.0 (2025-01-03)
🚀 Features
🐛 Bug Fixes
- ensure scheduled publish restriction (#10317) (4e57054)
- ensure
loggingLevels
is respected (#10308) (2e58a4a) - 'oldValue' must be a string error when viewing version diffs in postgres (#10313) (d9e0cd3)
- safely executes form state conditions, validations, and default values (#10275) (7928eca)
- next: returns proper verb tenses from update and delete routes (#10307) (d38ca83)
- richtext-lexical: allow any priority of FOCUS_COMMAND (#10128) (018c193)
- ui: unable to find user field schemas when updating password (#10305) (b14935c)
- ui: properly instantiates abort controllers (#10309) (abb51b9)
- ui: gracefully handle deletions in collection with upload hasMany (#9426) (2ae7d8e)
- ui: disable save button until the upload file is uploaded / ready (#10083) (bd7f705)
📚 Documentation
- warn when using
defaultPopulate
on collections with uploads enabled (#10138) (d6d9edc) - fix typo in join.mdx (#10190) (b2042c5)
📝 Templates
- fix media block generating an error if referenced media is missing (#10310) (951c38e)
- reorders postcss plugins in the website template for tailwind compatibility (#10176) (a000e4a)
🏡 Chores
- examples: fix JSX rendering of internal links (#10303) (510968f)
- translations: adjust Norwegian translation of events (#10300) (c658022)
🤝 Contributors
- Sasha (@r1tsuu)
- Angel P. (@PlagueFPS)
- Jacob Fletcher (@jacobsfletch)
- Paul (@paulpopus)
- Alexander Cato (@alexander-cato)
- Tristan (@tristankrass)
- Dan Ribbens (@DanRibbens)
- Said Akhrarov (@akhrarovsaid)
- Sondre Ørland (@sondreorland)
- Germán Jabloñski (@GermanJablo)
- Grant Kennedy (@gkennedy87)
- Patrik (@PatrikKozak)