v3.26.0
payloadcms/payloadv3.26.0Mar 4, 2025by denolfe
AI Summary
Enhancements include the ability to cancel jobs, improved database adapters with `updateMany` support, and new helpers for rich text editors. The UI also received improvements for mobile navigation and bulk editing.
Key Highlights
- Ability to cancel jobs in the queue.
- Database adapters now support `updateMany` with limits.
- New `htmlToLexical` and `editorConfigFactory` helpers.
- Column state is now maintained in the URL.
- Mobile navigation closes the sidebar automatically.
- Improved bulk upload UX with edit many option.
New Features
- Job cancellation capability
- Maintains column state in URL
- db.updateMany support with limits
- htmlToLexical helper
- editorConfigFactory helper
- Close nav on small screens navigation
- Improved hasMany TextField UX
Full Release Notes
## [v3.26.0](https://github.com/payloadcms/payload/compare/v3.25.0...v3.26.0) (2025-03-04) ### 🚀 Features * ability to cancel jobs ([#11409](https://github.com/payloadcms/payload/issues/11409)) ([38131ed](https://github.com/payloadcms/payload/commit/38131ed)) * maintains column state in url ([#11387](https://github.com/payloadcms/payload/issues/11387)) ([3709950](https://github.com/payloadcms/payload/commit/3709950)) * **db-*:** support limit in db.updateMany ([#11488](https://github.com/payloadcms/payload/issues/11488)) ([6a3d58b](https://github.com/payloadcms/payload/commit/6a3d58b)) * **db-*:** add updateMany method to database adapter ([#11441](https://github.com/payloadcms/payload/issues/11441)) ([41c7413](https://github.com/payloadcms/payload/commit/41c7413)) * **richtext-lexical:** add htmlToLexical helper ([#11479](https://github.com/payloadcms/payload/issues/11479)) ([cd29978](https://github.com/payloadcms/payload/commit/cd29978)) * **richtext-lexical:** add editorConfigFactory helper to streamline getting the editor config ([#11467](https://github.com/payloadcms/payload/issues/11467)) ([e1b3084](https://github.com/payloadcms/payload/commit/e1b3084)) * **ui:** close the nav when the user navigates away on small screens ([#10932](https://github.com/payloadcms/payload/issues/10932)) ([9bb89b7](https://github.com/payloadcms/payload/commit/9bb89b7)) ### 🐛 Bug Fixes * avif images not converting to `upload.formatOptions` set file types ([#11505](https://github.com/payloadcms/payload/issues/11505)) ([c417e3a](https://github.com/payloadcms/payload/commit/c417e3a)) * excludes index files from migration files filtering ([#10722](https://github.com/payloadcms/payload/issues/10722)) ([c828e33](https://github.com/payloadcms/payload/commit/c828e33)) * response headers from authstrategies are now merged together, even if no user was returned ([#10883](https://github.com/payloadcms/payload/issues/10883)) ([45a7c8b](https://github.com/payloadcms/payload/commit/45a7c8b)) * ensures req.origin includes port on localhost ([#11454](https://github.com/payloadcms/payload/issues/11454)) ([a65289c](https://github.com/payloadcms/payload/commit/a65289c)) * ensure errors returned from tasks are properly logged ([#11443](https://github.com/payloadcms/payload/issues/11443)) ([d53f166](https://github.com/payloadcms/payload/commit/d53f166)) * incorrect value inside beforeValidate field hooks ([#11433](https://github.com/payloadcms/payload/issues/11433)) ([b3e7a9d](https://github.com/payloadcms/payload/commit/b3e7a9d)) * **examples:** ensure working multi-tenant example with pg ([#11501](https://github.com/payloadcms/payload/issues/11501)) ([4ddf965](https://github.com/payloadcms/payload/commit/4ddf965)) * **examples:** replace depreciated 'mergeHeaders' import in the MultiTenant example ([#11306](https://github.com/payloadcms/payload/issues/11306)) ([48e613b](https://github.com/payloadcms/payload/commit/48e613b)) * **next:** incorrect active state for partial matches of collection names in sidebar ([#11511](https://github.com/payloadcms/payload/issues/11511)) ([7d2480a](https://github.com/payloadcms/payload/commit/7d2480a)) * **next:** active nav item not clickable in edit view ([#11457](https://github.com/payloadcms/payload/issues/11457)) ([83b4548](https://github.com/payloadcms/payload/commit/83b4548)) * **next:** properly instantiates req.url on localhost ([#11455](https://github.com/payloadcms/payload/issues/11455)) ([67c4a20](https://github.com/payloadcms/payload/commit/67c4a20)) * **next:** email verification not working due to incorrect token url parsing ([#11439](https://github.com/payloadcms/payload/issues/11439)) ([f3844ee](https://github.com/payloadcms/payload/commit/f3844ee)) * **next:** disables active nav item ([#11434](https://github.com/payloadcms/payload/issues/11434)) ([c4bc0ae](https://github.com/payloadcms/payload/commit/c4bc0ae)) * **plugin-multi-tenant:** scope access constraint to admin collection ([#11430](https://github.com/payloadcms/payload/issues/11430)) ([9c25e7b](https://github.com/payloadcms/payload/commit/9c25e7b)) * **richtext-lexical:** ensure nested forms do not use form element ([#11462](https://github.com/payloadcms/payload/issues/11462)) ([6d8aca5](https://github.com/payloadcms/payload/commit/6d8aca5)) * **storage-*:** ensure client handler is always added to the import map, even if the plugin is disabled ([#11438](https://github.com/payloadcms/payload/issues/11438)) ([dfddee2](https://github.com/payloadcms/payload/commit/dfddee2)) * **storage-s3, storage-azure, storage-gcs:** client uploads when a collection has `prefix` configured ([#11436](https://github.com/payloadcms/payload/issues/11436)) ([fc42c40](https://github.com/payloadcms/payload/commit/fc42c40)) * **storage-uploadthing:** files are duplicated to the storage via client uploads ([#11518](https://github.com/payloadcms/payload/issues/11518)) ([f143d25](https://github.com/payloadcms/payload/commit/f143d25)) * **templates:** handle enableLink condition safely ([#10728](https://github.com/payloadcms/payload/issues/10728)) ([f7f5651](https://github.com/payloadcms/payload/commit/f7f5651)) * **ui:** uses query provider as single source of truth for where builder ([#11476](https://github.com/payloadcms/payload/issues/11476)) ([927078c](https://github.com/payloadcms/payload/commit/927078c)) * **ui:** remove stale thumbnails in bulkUpload after partial success ([#10651](https://github.com/payloadcms/payload/issues/10651)) ([e75d38c](https://github.com/payloadcms/payload/commit/e75d38c)) * **ui:** bulk editing users throws client-side exception ([#11461](https://github.com/payloadcms/payload/issues/11461)) ([6cbda9e](https://github.com/payloadcms/payload/commit/6cbda9e)) * **ui:** scope rah-static and progress-bar styles to payload-default layer ([#11442](https://github.com/payloadcms/payload/issues/11442)) ([bef98c8](https://github.com/payloadcms/payload/commit/bef98c8)) * **ui:** use full image url for upload previews instead of thumbnail url ([#11435](https://github.com/payloadcms/payload/issues/11435)) ([96d1d90](https://github.com/payloadcms/payload/commit/96d1d90)) * **ui:** locale selector in versions view should remove filtered locales ([#11447](https://github.com/payloadcms/payload/issues/11447)) ([9e97319](https://github.com/payloadcms/payload/commit/9e97319)) * **ui:** copyToLocale should not pass id in data, throws error in postgres ([#11402](https://github.com/payloadcms/payload/issues/11402)) ([428c133](https://github.com/payloadcms/payload/commit/428c133)) * **ui:** duplicate basePath in Logout Button Link ([#11432](https://github.com/payloadcms/payload/issues/11432)) ([f7b1cd9](https://github.com/payloadcms/payload/commit/f7b1cd9)) * **ui:** disable publish button if form is autosaving ([#11343](https://github.com/payloadcms/payload/issues/11343)) ([7118b64](https://github.com/payloadcms/payload/commit/7118b64)) ### ⚡ Performance * automatically add index on a relationship field when used as target for a join field ([#11463](https://github.com/payloadcms/payload/issues/11463)) ([90d3c65](https://github.com/payloadcms/payload/commit/90d3c65)) * disable returning of db operations that don't need the return value ([#11437](https://github.com/payloadcms/payload/issues/11437)) ([6ce5e8b](https://github.com/payloadcms/payload/commit/6ce5e8b)) * **db-*:** add option to disable returning modified documents in db methods ([#11393](https://github.com/payloadcms/payload/issues/11393)) ([c21dac1](https://github.com/payloadcms/payload/commit/c21dac1)) * **db-mongodb:** faster join field aggregation by replacing `mongoose-aggregate-paginate-v2` with a custom implementation ([#10936](https://github.com/payloadcms/payload/issues/10936)) ([d4d2bf4](https://github.com/payloadcms/payload/commit/d4d2bf4)) * **next:** reduce initReq calls from 3 to 1 per page load ([#11312](https://github.com/payloadcms/payload/issues/11312)) ([c8c578f](https://github.com/payloadcms/payload/commit/c8c578f)) ### 📚 Documentation * clarify that image resizing/cropping require `sharp` to be specified in payload config ([#11470](https://github.com/payloadcms/payload/issues/11470)) ([d57a786](https://github.com/payloadcms/payload/commit/d57a786)) * fix documentation "CheckListFeature" ([#11480](https://github.com/payloadcms/payload/issues/11480)) ([b9108b4](https://github.com/payloadcms/payload/commit/b9108b4)) * add few notes about DocumentDB and Azure Cosmos DB ([#11336](https://github.com/payloadcms/payload/issues/11336)) ([25e8799](https://github.com/payloadcms/payload/commit/25e8799)) * fix method useAllFormFields on admin/hooks.mdx ([#10935](https://github.com/payloadcms/payload/issues/10935)) ([8b5bc3d](https://github.com/payloadcms/payload/commit/8b5bc3d)) * use local API to upload a local file ([#10839](https://github.com/payloadcms/payload/issues/10839)) ([19b4ec2](https://github.com/payloadcms/payload/commit/19b4ec2)) * adds info and example for headersWithCors ([#11141](https://github.com/payloadcms/payload/issues/11141)) ([77395b6](https://github.com/payloadcms/payload/commit/77395b6)) * custom auth strategy requires the collection slug in return value ([#11327](https://github.com/payloadcms/payload/issues/11327)) ([fcaf591](https://github.com/payloadcms/payload/commit/fcaf591)) * broken ' char entity instead of ' in plugins/build-your-own ([#11363](https://github.com/payloadcms/payload/issues/11363)) ([206b4b9](https://github.com/payloadcms/payload/commit/206b4b9)) * replace HTML entity ' with literal apostrophe ([#11321](https://github.com/payloadcms/payload/issues/11321)) ([8b55e7b](https://github.com/payloadcms/payload/commit/8b55e7b)) ### 📝 Templates * fix vercel website template importmap error caused by missing import ([#11500](https://github.com/payloadcms/payload/issues/11500)) ([562acb7](https://github.com/payloadcms/payload/commit/562acb7)) * bump payload versions, upgrade next.js to 15.2.0, fix eslint errors ([#11486](https://github.com/payloadcms/payload/issues/11486)) ([f03d450](https://github.com/payloadcms/payload/commit/f03d450)) * improve naming of richtext component import, add 'payload-richtext' classname ([#11485](https://github.com/payloadcms/payload/issues/11485)) ([398d48a](https://github.com/payloadcms/payload/commit/398d48a)) ### ⚙️ CI * change custom github actions target back to es5 ([fd1a4f6](https://github.com/payloadcms/payload/commit/fd1a4f6)) * clarify version reporting in issue templates ([#11498](https://github.com/payloadcms/payload/issues/11498)) ([a15c38f](https://github.com/payloadcms/payload/commit/a15c38f)) * repro guide to use `create-payload-app@latest` instead of `@beta` ([#11451](https://github.com/payloadcms/payload/issues/11451)) ([e055565](https://github.com/payloadcms/payload/commit/e055565)) ### 🏡 Chores * add docker volume directories to gitignore ([#10902](https://github.com/payloadcms/payload/issues/10902)) ([fa8a2f8](https://github.com/payloadcms/payload/commit/fa8a2f8)) * temporarily disables flaky "should execute a custom script" test ([#11487](https://github.com/payloadcms/payload/issues/11487)) ([1929644](https://github.com/payloadcms/payload/commit/1929644)) * **db-mongodb:** tsconfig uses `strict: true` and `noUncheckedIndexedAccess: true` ([#11444](https://github.com/payloadcms/payload/issues/11444)) ([79a7b4a](https://github.com/payloadcms/payload/commit/79a7b4a)) * **deps:** bumps payload-admin-bar to v1.0.7 to suppress react 19 warnings ([#11499](https://github.com/payloadcms/payload/issues/11499)) ([bf4fa59](https://github.com/payloadcms/payload/commit/bf4fa59)) * **eslint:** speed up no-imports-from-self rule by ensuring cache is used ([#11483](https://github.com/payloadcms/payload/issues/11483)) ([3774544](https://github.com/payloadcms/payload/commit/3774544)) * **examples:** update multi-tenant example ([#11459](https://github.com/payloadcms/payload/issues/11459)) ([81e8a9d](https://github.com/payloadcms/payload/commit/81e8a9d)) * **plugin-search:** enable TypeScript strict mode ([#11508](https://github.com/payloadcms/payload/issues/11508)) ([efce154](https://github.com/payloadcms/payload/commit/efce154)) * **richtext-lexical:** export LexicalFieldAdminProps ([#11464](https://github.com/payloadcms/payload/issues/11464)) ([dda17f0](https://github.com/payloadcms/payload/commit/dda17f0)) * **richtext-lexical:** improve UploadData jsdocs ([#11292](https://github.com/payloadcms/payload/issues/11292)) ([4a1b749](https://github.com/payloadcms/payload/commit/4a1b749)) * **translations:** enable TypeScript strict mode ([#11494](https://github.com/payloadcms/payload/issues/11494)) ([a3fe607](https://github.com/payloadcms/payload/commit/a3fe607)) ### 🤝 Contributors - Sasha (@r1tsuu) - Patrik (@PatrikKozak) - Germán Jabloñski (@GermanJablo) - Ondřej Nývlt (@onvlt) - Jarrod Flesch (@JarrodMFlesch) - Paul (@paulpopus) - Jacob Fletcher (@jacobsfletch) - Elliot DeNolf (@denolfe) - Vincent Vu (@rubixvi) - Alessio Gravili (@AlessioGr) - Dmitrii Kuzmin (@ApplY3D) - Said Akhrarov (@akhrarovsaid) - Michael Bykovski (@bykof) - Mike Newberry (@MikeNewXYZ) - nomad-dev (@n0mad-d3v) - Liège Arthur (@Thisisjuke) - Violet Rosenzweig (@6TELOIV) - Adrian Maj (@AdrianMaj) - Jessica Chowdhury (@JessChowdhury) - Martijn Luyckx (@martijnckx) - Roy Barber (@roybarber) - Philipp Meyer (@Quppi)