Skip to content

Releases: payloadcms/payload

v3.28.0

11 Mar 21:18
d959d84
Compare
Choose a tag to compare

v3.28.0 (2025-03-11)

Important

Compilation Performance Improvements

We’ve introduced a new opt-in flag that can cut Payload’s compile times in half during development. To enable it, add the following to your next.config.js:

const nextConfig = {
  // ...
}

-export default withPayload(nextConfig)
+export default withPayload(nextConfig, { devBundleServerPackages: false })

In some rare cases, you may see unexpected behavior if your project relies on server-only Payload dependencies being bundled during development. Because of this, we’ve made the feature opt-in for existing projects.

Lexical Version Bump

This release upgrades the lexical dependency from 0.21.0 to 0.27.1. Alongside table improvements and bug fixes, this version bump lays the groundwork for frequently requested features like color pickers.

If you installed lexical manually, update it to 0.27.1. 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, do the following, in this order:

  1. Delete node_modules
  2. Delete your lockfile (e.g. pnpm-lock.json)
  3. Reinstall your dependencies (e.g. pnpm install)

🚀 Features

  • defaults to noindex nofollow (#11623) (5285518)
  • threads path through field validate function (#11591) (3ede7ab)
  • allow specification of which JWT extraction methods are supported, and in which order (#10794) (8f6d2e7)
  • db-mongodb: strip keys from the data that don't exist in the schema from read results (#11558) (2ad035f)
  • next: fully expose Next.js metadata (#11593) (397c1f1)
  • richtext-lexical: allow disabling indentation for specific nodes (#11631) (eb09ce9)
  • richtext-lexical: upgrade lexical from 0.21.0 to 0.27.1 (#11564) (557ac99)
  • richtext-lexical: adds ability to disable auto link creation (#11563) (1e708bd)
  • richtext-lexical: new HTML converter (#11370) (36921bd)
  • ui: form state queues (#11579) (ac1e3cf)
  • ui: adds disable copy to locale option to collection config (#11546) (657ad20)

🐛 Bug Fixes

  • ensure only authenticated users can access the payload-locked-documents collection (#11624) (8f3d1bd)
  • upload imageSizes forces original file uploads to be compressed (#11612) (6d0924e)
  • add missing auth property to new defaults function (#11561) (3af0468)
  • db-mongodb: properly sanitize updateVersion read result (#11589) (e9afb36)
  • graphql: sanitize graphql field names for schema generation (#11556) (029cac3)
  • plugin-import-export: plugin breaks i18n configuration (#11590) (5d65cb0)
  • translations: update translation placeholders to not be translated for lithuanian (#11622) (85f88a0)
  • ui: adds fallback locale when defaultLocale is unavailable (#11614) (9ac7a3e)
  • ui: stale list thumbnails when navigating (#11609) (fc5876a)
  • ui: logic for showing copyToLocale button and adds test (#11584) (a53876d)
  • ui: upload.displayPreview should affect all previews in the admin panel (#11496) (6f90d62)
  • ui: apply consistent styling to custom & default block thumbnails (#11555) (8378654)
  • ui: incorrect error states (#11574) (4811531)

⚡ Performance

  • 50% faster compilation speed by skipping bundling of server-only packages during dev (#11594) (c7bb694)

🛠 Refactors

  • more reliable import map generation, supporting turbopack and tsconfig basePath (#11618) (243cdb1)

📚 Documentation

📝 Templates

  • fix issue with populateAuthors hook breaking live-preview on website template (#11608) (72efc84)
  • allow displaying dynamic error message on forms created via Form Builder plugin (#11275) (814ced4)

⚙️ CI

  • adjust paths filter for workflows, only look at main.yml (#11572) (9f7e8f4)
  • add canary nightly cron, adjust lock and stale crons (259ea6a)
  • use GITHUB_OUTPUT instead of set-output [skip ci] (1ad1de7)
  • canary and internal releases [skip ci] (#11565) (1797782)

🏡 Chores

  • set all licenses for internal tooling (30af889)
  • db-postgres: enable TypeScript strict (#11560) (c8f01e3)
  • deps: bump all eslint packages (#11629) (f2da72b)
  • deps: bump next.js from 15.2.0 to 15.2.1 in monorepo (#11576) (b0da85d)
  • deps: bumps @payloadcms/admin-bar in templates and examples (#11566) (7cef890)
  • ui: code/json field full height should include any padding added (#11607) (051c1fe)
  • ui: removes margin when row is empty and passes style from props (#11504) (6699844)

🤝 Contributors

v3.27.0

05 Mar 21:50
54acdad
Compare
Choose a tag to compare

v3.27.0 (2025-03-05)

🚀 Features

🐛 Bug Fixes

  • safe auth strategy execution (#11515) (312aa63)
  • beforeValidate deleting value when access returns false (#11549) (6939a83)
  • collection config deep merge during sanitization causing unpredictable behavior (#11524) (5adb764)
  • format admin url inside forgot pw email (#11509) (56dec13)
  • next: admin panel fails compiling when fullySpecified is set in next config (#11531) (cc05937)
  • richtext-lexical: fix bug in $createAutoLinkNode when the link is preceded by a textnode (#11551) (4ebe673)
  • storage-*: client uploads with disablePayloadAccessControl: true (#11530) (5cc0e74)
  • storage-gcs: client uploads are enabled even if clientUploads is not set (#11527) (e36ab6a)
  • ui: views rendered in drawers can update step nav (#11548) (04b0468)
  • ui: execute client upload handler only when file exists (#11538) (31e2179)

📚 Documentation

🧪 Tests

⚙️ CI

🏡 Chores

  • cleanup generated configs (#11536) (8f203bb)
  • indexes are not iterable, corrects indexes default value sanitization (#11534) (f0ea918)
  • add plugin-import-export to publishList release tool (#11535) (672dace)

🤝 Contributors

v3.26.0

04 Mar 15:08
1d16831
Compare
Choose a tag to compare

v3.26.0 (2025-03-04)

🚀 Features

  • ability to cancel jobs (#11409) (38131ed)
  • maintains column state in url (#11387) (3709950)
  • db-*: support limit in db.updateMany (#11488) (6a3d58b)
  • db-*: add updateMany method to database adapter (#11441) (41c7413)
  • richtext-lexical: add htmlToLexical helper (#11479) (cd29978)
  • richtext-lexical: add editorConfigFactory helper to streamline getting the editor config (#11467) (e1b3084)
  • ui: close the nav when the user navigates away on small screens (#10932) (9bb89b7)

🐛 Bug Fixes

  • avif images not converting to upload.formatOptions set file types (#11505) (c417e3a)
  • excludes index files from migration files filtering (#10722) (c828e33)
  • response headers from authstrategies are now merged together, even if no user was returned (#10883) (45a7c8b)
  • ensures req.origin includes port on localhost (#11454) (a65289c)
  • ensure errors returned from tasks are properly logged (#11443) (d53f166)
  • incorrect value inside beforeValidate field hooks (#11433) (b3e7a9d)
  • examples: ensure working multi-tenant example with pg (#11501) (4ddf965)
  • examples: replace depreciated 'mergeHeaders' import in the MultiTenant example (#11306) (48e613b)
  • next: incorrect active state for partial matches of collection names in sidebar (#11511) (7d2480a)
  • next: active nav item not clickable in edit view (#11457) (83b4548)
  • next: properly instantiates req.url on localhost (#11455) (67c4a20)
  • next: email verification not working due to incorrect token url parsing (#11439) (f3844ee)
  • next: disables active nav item (#11434) (c4bc0ae)
  • plugin-multi-tenant: scope access constraint to admin collection (#11430) (9c25e7b)
  • richtext-lexical: ensure nested forms do not use form element (#11462) (6d8aca5)
  • storage-*: ensure client handler is always added to the import map, even if the plugin is disabled (#11438) (dfddee2)
  • storage-s3, storage-azure, storage-gcs: client uploads when a collection has prefix configured (#11436) (fc42c40)
  • storage-uploadthing: files are duplicated to the storage via client uploads (#11518) (f143d25)
  • templates: handle enableLink condition safely (#10728) (f7f5651)
  • ui: uses query provider as single source of truth for where builder (#11476) (927078c)
  • ui: remove stale thumbnails in bulkUpload after partial success (#10651) (e75d38c)
  • ui: bulk editing users throws client-side exception (#11461) (6cbda9e)
  • ui: scope rah-static and progress-bar styles to payload-default layer (#11442) (bef98c8)
  • ui: use full image url for upload previews instead of thumbnail url (#11435) (96d1d90)
  • ui: locale selector in versions view should remove filtered locales (#11447) (9e97319)
  • ui: copyToLocale should not pass id in data, throws error in postgres (#11402) (428c133)
  • ui: duplicate basePath in Logout Button Link (#11432) (f7b1cd9)
  • ui: disable publish button if form is autosaving (#11343) (7118b64)

⚡ Performance

  • automatically add index on a relationship field when used as target for a join field (#11463) (90d3c65)
  • disable returning of db operations that don't need the return value (#11437) (6ce5e8b)
  • db-*: add option to disable returning modified documents in db methods (#11393) (c21dac1)
  • db-mongodb: faster join field aggregation by replacing mongoose-aggregate-paginate-v2 with a custom implementation (#10936) (d4d2bf4)
  • next: reduce initReq calls from 3 to 1 per page load (#11312) (c8c578f)

📚 Documentation

  • clarify that image resizing/cropping require sharp to be specified in payload config (#11470) (d57a786)
  • fix documentation "CheckListFeature" (#11480) (b9108b4)
  • add few notes about DocumentDB and Azure Cosmos DB (#11336) (25e8799)
  • fix method useAllFormFields on admin/hooks.mdx (#10935) (8b5bc3d)
  • use local API to upload a local file (#10839) (19b4ec2)
  • adds info and example for headersWithCors (#11141) (77395b6)
  • custom auth strategy requires the collection slug in return value (#11327) (fcaf591)
  • broken ' char entity instead of ' in plugins/build-your-own (#11363) (206b4b9)
  • replace HTML entity ' with literal apostrophe (#11321) (8b55e7b)

📝 Templates

  • fix vercel website template importmap error caused by missing import (#11500) (562acb7)
  • bump payload vers...
Read more

v3.25.0

27 Feb 17:12
bdf0113
Compare
Choose a tag to compare

v3.25.0 (2025-02-27)

🚀 Features

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

🐛 Bug Fixes

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

⚡ Performance

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

🛠 Refactors

📚 Documentation

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

🧪 ...

Read more

v3.24.0

19 Feb 18:44
f3161f9
Compare
Choose a tag to compare

v3.24.0 (2025-02-19)

🚀 Features

  • add support for interfaceName on radio and select fields to create reusable top level types (#11277) (acead10)
  • join field across many collections (#10919) (6d36a28)
  • add page query parameter for joins (#10998) (847d8d8)
  • view component types (#11126) (b80010b)
  • route transitions (#9275) (3f550bc)
  • add siblingFields arg to field hooks (#11117) (155f9f8)
  • richtext-lexical: export INSERT_BLOCK_COMMAND and INSERT_INLINE_BLOCK_COMMAND (#11193) (dc36572)
  • translations: add support for lithuanian (#11243) (8bbe7bc)
  • ui: enable specific css selectors on the localizer per locale (80b33ad)
  • ui: confirmation modal (#11271) (bd8ced1)
  • ui: adds admin.components.listMenuItems option (#11230) (8a2b712)
  • ui: add hideFileInputOnCreate and hideRemoveFile to collection upload config (#11217) (daaaa5f)
  • ui: refines progress bar animation curve (#11167) (16d75a7)

🐛 Bug Fixes

  • versions not loading properly (#11256) (0651ae0)
  • db transaction errors caused by checkDocumentLockStatus (#11273) (9b8f8d7)
  • localized fields within block references were not handled properly if any parent is localized (#11207) (e6fea1d)
  • upload and auth endpoints are mounted for all collections (#11231) (749962a)
  • populate is ignored for nested relationships (#11227) (938472b)
  • ensure leavesFirst option works correctly in traverseFields utility (#11219) (6b9d81a)
  • join field does not show validation error (#11170) (dd28959)
  • db-mongodb: properly handle document notfound cases for update and delete operations (#11267) (7922d66)
  • db-mongodb: remove duplicative indexing of timestamps (#11028) (12f51ba)
  • db-postgres: querying other collections via relationships inside blocks (#11255) (88548fc)
  • db-postgres: ensure countDistinct works correctly and achieve better performance when the query has table joins (#11208) (513ba63)
  • next: imports toast from @payloadcms/ui (#11279) (cd48904)
  • next: document header padding on tablet sized screens (#11192) (70db44f)
  • next: pre-flight OPTIONS request errors from the graphql endpoint (#11103) (ececa65)
  • plugin-multi-tenant: corrects default value for tenantsArrayTenantFieldName (#11189) (b65ae07)
  • plugin-seo: add missing supported languages (#11254) (74ce889)
  • richtext-lexical: add container div to table element to allow horizontal scroll in HTML and JSX converters (#11119) (9068bda)
  • richtext-lexical: reliably install exact lexical version by removing it from peerDeps (#11122) (2056e9b)
  • richtext-lexical: unindent button in toolbar is never active (#11089) (7a400a7)
  • ui: minor issues with tabs and publish buttons when in RTL (#11282) (e83318b)
  • ui: turbopack with the latest next.js canary [skip lint] (#11280) (009e908)
  • ui: disabledLocalStrategy.enableFields missing email/username fields (#11232) (9fc1cd0)
  • ui: unsaved changes allows for scheduled publish missing changes (#11001) (618624e)
  • ui: timezone issue related to date only fields in Pacific timezones (#11203) (8b0ae90)
  • ui: database errors when running autosave and ensure autosave doesn't run unnecessarily (#11270) (1328522)
  • ui: do not pass req in handleFormStateLocking (#11269) (7f5aaad)
  • ui: issues with prevent leave and autosave when the form is submitted but invalid (#11233) (06debf5)
  • ui: allow selectinputs to reset to their initial values if theres no provided value (#11252) (1c4eba4)
  • ui: selection status not updating after toggleAll in useSelection hook (#11218) (5817b81)
  • ui: properly handle singular and plural bulk edit labels (#11198) (779f511)
  • ui: hide edit button on deleted relationship options (#11005) (cba5c7b)
  • ui: respect locale in buildTableState (#11147) (077fb3a)
  • ui: hide array field "add" button if admin.readOnly: true is set (#11184) (b1734b0)
  • ui: unable to use browser back navigation after visiting list view (#11172) (0a3820a)
  • ui: url encode imageCacheTag for media on dashboard (#11164) (d47c980)
  • ui: json schema (#11123) (7f124cf)
  • ui: prevent omitting fileSize from non-images (#11146) (6901b26)
  • ui: adds delay to progress bar for fast networks (#11157) (de68ef4)
  • ui: safe call within useEffect tea...
Read more

v3.23.0

11 Feb 18:00
480c6e7
Compare
Choose a tag to compare

v3.23.0 (2025-02-11)

🚀 Features

🐛 Bug Fixes

  • set initialValues alongside values during onSuccess (#10825) (fde526e)
  • unhelpful "cannot overwrite model once compiled" errors swallowing actual error (#11057) (6a99677)
  • error when passing functions to array or block fields labels property (#11056) (6d48cf9)
  • db-mongodb: ensures same level operators are respected (#11087) (d2fe9b0)
  • db-postgres: incorrect pagination results when querying hasMany relationships multiple times (#11096) (98fec35)
  • next: allows relative live preview urls (#11083) (91a0f90)
  • payload-cloud: handle socket closures (#11113) (da77f99)
  • richtext-lexical: improve keyboard navigation on DecoratorNodes (#11022) (fa18923)
  • richtext-lexical: toggling between internal and custom links does not update fields (#11074) (9fb7160)
  • richtext-lexical: fixed the positioning of the button to add columns or rows in tables (#11050) (886bd94)
  • storage-s3: sockets not closing (#11015) (95ec575)
  • ui: relationship filter renders stale values when changing fields (#11080) (da6511e)
  • ui: incorrectly incrementing version counts if maxPerDoc is set to 0 (#11097) (3616818)

📚 Documentation

  • update custom endpoints docs, handler does not accept array of functions anymore (#11110) (1f3ccb8)
  • adds options table to payload-wide upload options (#10904) (d6a03ee)
  • fixing 3 dead internal links (#11100) (3f80c59)
  • adds usePayloadAPI hook to React Hooks documentation (#11079) (d56de79)
  • fix typo in BlockquoteFeature name (#11078) (87ba7f7)
  • typo in jobs queue workflows (#11063) (dc56acb)
  • plugin-multi-tenant: update tenantsArrayField config options (#11045) (ac6f4e2)

📝 Templates

🏡 Chores

🤝 Contributors

v3.22.0

07 Feb 14:29
a80c6b5
Compare
Choose a tag to compare

v3.22.0 (2025-02-07)

🚀 Features

  • ui: adds filtering config option and implementation for filtering a… (#11007) (a63a3d0)
  • ui: improve hasMany TextField UX (#10976) (d8cfdc7)

🐛 Bug Fixes

  • db-postgres: ensure globals have createdAt, updatedAt and globalType fields (#10938) (57143b3)
  • db-postgres: select hasMany: true with autosave doesn't work properly (#11012) (3ad56cd)
  • next: viewing modified-only diff view containing localized arrays throws error (#11006) (09721d4)
  • plugin-multi-tenant: correctly set doc default value on load (#11018) (f25acb8)
  • richtext-lexical: duplicative error paths in validation (#11025) (2b76a04)
  • richtext-lexical: ensure sub-fields have access to full document data in form state (#9869) (ae32c55)
  • ui: removing final condition closes where builder (#11032) (b820a75)
  • ui: clearing value from relationship filter leaves stale query (#11023) (7a73265)
  • ui: relationship filter clearing on blur (#11021) (8940726)
  • ui: improve useIgnoredEffect hook (#10961) (8ed4104)
  • ui: allow schedule publish to be accessed without changes (#10999) (bdbb999)
  • ui: apply cacheTags upload config property to other admin panel image components (#10801) (e29ac52)

🛠 Refactors

  • do not use description functions for generated types JSDocs (#11027) (8b6ba62)

🧪 Tests

🏡 Chores

🤝 Contributors

v3.21.0

05 Feb 19:22
834fdde
Compare
Choose a tag to compare

v3.21.0 (2025-02-05)

🚀 Features

  • exposes helpful args to ts schema gen (#10984) (2118c6c)
  • adds auto resize feature to textarea (#10786) (7d429f8)
  • plugin-multi-tenant: allow opting out of tenant access control merge (#10888) (be790a9)

🐛 Bug Fixes

  • allow public errors to thread through on response (#10419) (ea9abfd)
  • db-postgres: select hasMany inside arrays and blocks with versions (#10829) (68a7de2)
  • db-postgres: write operations on polymorphic joined collections throw error (#10854) (e1dcb95)
  • plugin-multi-tenant: incorrect tenant selection with postgres (#10992) (2a1ddf1)
  • plugin-multi-tenant: fixed hardcoded user tenants field (#10782) (9638dbe)
  • plugin-search: deleting docs even when there's a published version (#10993) (42da87b)
  • plugin-search: generates full docURL with basePath from next config (#10910) (0f85a6e)
  • plugin-search: gets api route from useConfig (#10632) (6353cf8)
  • richtext-lexical: removes css from jsx converter (#10997) (45913e4)
  • richtext-lexical: link drawer has no fields if parent document create access control is false (#10954) (136c90c)
  • ui: client should add back default values for valid and passesCondition form field properties (#10709) (35e5be8)
  • ui: revert unrelated code (#10897) (3985893)
  • ui: error in version view if document contains localized arrays or blocks (#10893) (85c0842)
  • ui: create-first-user crashes when users collection has join field (#10871) (2f66bdc)

📚 Documentation

🧪 Tests

📝 Templates

📓 Examples

  • multi-tenant seed script, readme and other improvements (#10702) (ae0736b)
  • added missing sharp dependency to the remix website package (#10931) (58666fb)

⚙️ CI

  • increase closed issue lock for inactivity to 7 days (8af8bef)

🏡 Chores

  • deps: bump packages used to build payload (#10950) (109de8c)
  • deps: bumps @faceless-ui/window-info to v3.0.1 and @faceless-ui/scroll-info to 2.0.0 (#10913) (2f787a9)
  • deps: deprecates body-scroll-lock (c7ad46c)
  • examples: misc improvements to the draft preview example (#10876) (2b9ee62)
  • plugin-search: improves types (#10955) (1771271)
  • plugin-search: deprecates apiBasePath from config (#10953) (4a4e90a)
  • templates: improves and simplifies draft preview (#10895) (8a79e59)

🤝 Contributors

v3.20.0

29 Jan 15:49
5bd17cc
Compare
Choose a tag to compare

v3.20.0 (2025-01-29)

🚀 Features

  • allow publish and publish specific locale buttons to be swapped (#9438) (9b49741)
  • allows fields to be collapsed in the version view diff (#8054) (828b3b7)
  • ui: allows customizing version diff components, render versions ui on the server (#10815) (c562fbf)
  • ui: toggle showing only modified fields in version diff view (#10807) (33ac13d)

🐛 Bug Fixes

  • checks for localization to prevent publish button breaking (#10844) (9c31a52)
  • field paths within hooks (#10638) (0acaf8a)
  • next: remove toString coercion inside getDocumentPermissions (#10828) (9f9919d)
  • plugin-form-builder: type of MessageField to object (#10792) (92e6beb)
  • plugin-form-builder: type of MessageField to SerializedEditorState (#10789) (5603c1c)
  • plugin-multi-tenant: issue #10740 - "The following field is invalid: Assigned Tenant" (#10764) (c1c64a0)
  • plugin-multi-tenant: remove tenant cookie on logout (#10761) (22633a6)
  • plugin-nested-docs: update draft and published child docs on resave (#10454) (7a39870)
  • richtext-lexical: preserve selection in Firefox when using LexicalMenu (#10867) (0e5ff24)
  • richtext-lexical: afterRead hooks were not awaited (#10747) (9f2bca1)
  • translations: adds et to import file (#10823) (ffe8020)
  • ui: adds title attribute to Logout button for tooltip (#10851) (989140b)
  • ui: correctly reset blocksDrawer search state after close (#10847) (8a6d995)
  • ui: adds prev value on form state validat functions (#10832) (a835518)
  • ui: hide the restore button's empty submenu in a draft version (#10756) (0d81ff2)
  • ui: include check for parent permissions in renderField (#10729) (8289588)

⚡ Performance

  • skips field validations until the form is submitted (#10580) (82f1bb9)
  • only validate filter options on submit (#10738) (a05240a)

📚 Documentation

📝 Templates

⚙️ CI

  • remove docker login, not functional for external contributors (eca4f47)
  • update CODEOWNERS (d6ae07d)
  • fix run e2e command (#10779) (344b231)

🏡 Chores

  • improves routeError log safety (#10793) (ace7557)
  • uncomment collectionSlugs array in fields test suite, for resetDB to work properly (#10778) (72a5c02)
  • migrate outdated @payloadcms/next/utilities imports (#10777) (b9d3250)
  • disable bun run test buttons if bun extension is installed (#10775) (03f7bdf)
  • cpa: re-pin template versions (#10857) (c08f012)
  • deps: upgrades react-diff-viewer-continued to v4.0.4 to suppress react 19 warnings and use ESM imports (#10834) (57f7218)
  • templates: update missing changes in vercel website template (#10827) (c75c6ce)
  • templates: fix eslint errors in vercel templates (#10768) (52f86c7)
  • templates: fix: the contact page of the website template throws an error in live preview (#10785) (d6658b5)
  • templates: fix eslint errors in plugin template (#10770) (b76401c)

🤝 Contributors

v3.19.0

23 Jan 18:45
b2ebf85
Compare
Choose a tag to compare

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 and maxDistance in near 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

🤝 Contributors