Skip to content

Releases: payloadcms/payload

v3.14.0

03 Jan 13:41
766b67f
Compare
Choose a tag to compare

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

📝 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

v3.13.0

02 Jan 04:24
b0ebd92
Compare
Choose a tag to compare

v3.13.0 (2025-01-02)

🚀 Features

  • adds more control over how to disable graphql for collections /… (#10265) (7a59e7d)
  • richtext-lexical: ability to override default placeholder (#10278) (182eaa3)
  • translations: add Catalan translations (#10260) (5188a9b)
  • ui: expose onMount to CodeField (#10223) (68a5f5c)

🐛 Bug Fixes

  • close db connections after running jobs from command line. (#9994) (eb69885)
  • cpa: do not overwrite custom.scss file on update (#10285) (c3eb272)
  • graphql: Change config from raw path to file: url (#9311) (16c6abe)
  • plugin-cloud-storage: actually deprecate adapters (#9640) (c4b31c0)
  • plugin-search: respect custom api route in reindexButton (#10258) (cdaebcc)
  • richtext-lexical: empty lines were incorrectly stripped from mdx blocks if doNotTrimChildren was set to true (#10287) (ee3c2cc)
  • richtext-lexical: throw toast error when attempting to create upload node without any upload collections enabled (#10277) (07e86c0)
  • richtext-lexical: various issues for lexical sub-fields due to incorrectly generated client field schema map (#10276) (35df899)
  • richtext-lexical: formatted link markdown conversion not working (#10269) (885e966)
  • richtext-lexical: ensure markdown normalization does not merge escaped code block lines (#10230) (c01b4bf)
  • translations: adds missing max validations keys to client (#10266) (5d6064a)
  • ui: checkboxes as first field were crashing WhereBuilder (#10290) (f3f36d8)
  • ui: relationship edit drawers now respect current locale (#10262) (6dac4c5)
  • ui: properly filters fields from list view columns and conditions (#10246) (f5a955d)
  • ui: disableListColumn on first field breaks filter condition selection (#10267) (039b489)
  • ui: removes useless verified checkbox on user create (#10252) (8671e85)
  • ui: autosave wasnt firing on first change (#10256) (ef7242c)

📚 Documentation

  • explicit payload usage from req to avoid import payload confusion (#10291) (76e4402)
  • fix all missing vertical lines in tables (#10288) (b6de432)
  • add missing vertical line to Collection Upload options table (#10282) (950f8ce)
  • adds useListQuery to list of React hooks and updates useDocumentInfo (#10186) (be87ba0)
  • fix dispatch actions link for useFormFields and useAllFormFields (#10273) (313b4ba)
  • fix incorrect escaping of * (#10274) (5b4730d)
  • fix docs for generate db schema (#10251) (63bca12)
  • adds notes about importance of serverURL for verify / forgot-pa… (#10248) (6af6e44)
  • add clarity about forgot-password and verify tokens (#10247) (363a24c)
  • richtext-lexical: minor improvements (#10280) (943798a)
  • richtext-lexical: improve building custom feature docs, add example for custom blocks (code field within lexical) (#10279) (6e19e82)

🧪 Tests

🏡 Chores

🤝 Contributors

v3.12.0

28 Dec 17:09
fabe541
Compare
Choose a tag to compare

v3.12.0 (2024-12-28)

🚀 Features

🐛 Bug Fixes

  • deep querying, handle getLocalizedPaths for blocks (#10187) (eff75f9)
  • generate types when no en language is defined in i18n (#10181) (8debb68)
  • ensure tab label and description are serializable (#10115) (68b5f61)
  • db-postgres: prevent indexes from changing name on HMR (#10154) (374b79d)
  • db-postgres: joins to self collection (#10182) (a0d8131)
  • richtext-lexical: newlines in mdx props were stripped, even though objects inside props may expect there to be newlines (#10215) (67db04c)
  • richtext-lexical: restore selection (#10129) (154ad9d)
  • ui: pagination resets perPage (#10199) (fad4ee6)
  • ui: prevent many upload fields overwriting bulkUpload onSuccess (#10189) (ebf3cee)
  • ui: public users unable to log out (#10188) (f3aebe3)
  • ui: infinite loading states when adding blocks or array rows (#10175) (b33f4b0)

⚡ Performance

  • db-postgres: do not push database schema if not changed (#10155) (98666eb)

📚 Documentation

🧪 Tests

📝 Templates

  • use publishConfig for the plugin template (#10196) (a5b9adc)
  • update Dockerfile for the website template, use the LTS version for Node.js image (#10184) (5613a7e)
  • bump for v3.11.0 (#10121) (235eade)

⚙️ CI

  • only label stale issues/prs, disable closing (1372f24)

🏡 Chores

  • bump next to 15.1.3 in the monorepo (#10211) (7a4d53a)
  • update rimraf and fix windows compatible clean script (#10152) (326b720)
  • UnauthorizedError file misspelled as UnathorizedError (#10157) (6b45b2d)
  • examples: localization example (#10134) (3bbc5bf)
  • live-preview: strongly types message events (#10148) (466f109)
  • richtext-lexical: export $createServerBlockNode, $isServerBlockNode and ServerBlockNode for the server (#10192) (1dc4b2c)
  • ui: exports parseSearchParams (#10185) (5d3b816)

🤝 Contributors

v3.11.0

21 Dec 13:02
e9a330d
Compare
Choose a tag to compare

v3.11.0 (2024-12-21)

🚀 Features

🐛 Bug Fixes

  • ensures generated IDs persist on create (#10089) (957867f)
  • db-mongodb: mongodb optimizations (#10120) (b08ff88)
  • ui: join table row still shows after deletion (#9783) (a58b9fc)
  • ui: ensure unpublish confirmation is reachable when opened in drawers (#10109) (ec853c4)

📚 Documentation

📝 Templates

🤝 Contributors

v3.10.0

20 Dec 19:47
4d50046
Compare
Choose a tag to compare

v3.10.0 (2024-12-20)

🚀 Features

  • jsdocs for generated types, by using admin.description (#9917) (b330873)

  • join field with polymorphic relationships (#9990) (d03658d)

  • db-postgres, db-sqlite: drizzle schema generation (#9953) (23f1ed4)

    Full type safety on payload.drizzle with a single command

     pnpm payload generate:db-schema
    
    395461122-3ced958b-ec1d-49f5-9f51-d859d5fae236.mov
  • make req partial and optional in DB / Local API operations (#9935) (0e5bda9)

  • db-postgres, db-sqlite: drizzle schema generation (#9953) (23f1ed4)

  • db-sqlite: add idType: 'uuid' support (#10016) (03ff775)

  • ui: export RelationshipTable component (#10084) (6bba7be)

🐛 Bug Fixes

  • unique error message regression (#10064) (0c57eef)
  • commit transaction if a user isnt found in forgotPassword operation (#10055) (439dd04)
  • db-mongodb: querying by localized polymorphic relationships using objects (#10037) (5753efb)
  • db-postgres: relationships v2-v3 migration errors when migrating from v2 to stable v3 (#10080) (07be617)
  • db-postgres: query has many relationships nested in row fields (#9944) (#9944) (eee6432)
  • examples: awaits getHeaders in auth example (#10100) (7bedd6d)
  • examples: add missing header component in auth example (#10088) (dd3c2eb)
  • richtext-*: use correct "for" attribute for label (#10036) (97c120a)
  • richtext-lexical: incorrect string interpolation in the upload converter (#10069) (6a8aeca)
  • richtext-lexical: ui bug when zooming in Safari (#10072) (12dad35)
  • storage-vercel-blob: fixes issue where files with spaces in their name would not be retrieved correctly (#10062) (ce74f1b)
  • templates: broken preview if alternative auth strategy was used, invalid error handling (#9785) (d8c106c)
  • ui: close copy locale modal after locale is changed (#10096) (59fc9d0)
  • ui: join field "add new" calculate initial drawer data with relationship inside blocks (#10057) (1d46b6d)

⚡ Performance

  • db-mongodb: improve performance of all operations, up to 50% faster (#9594) (e468292)

🛠 Refactors

  • consistent caps for acronyms in variable names (#10101) (a7109ed)
  • optimize database schema generation bin script (#10086) (7c4ea5b)

🧪 Tests

  • revert default db adapter in integration tests to mongodb (#10079) (034b442)
  • consolidates custom id e2e tests (#10061) (97a1f4a)

📝 Templates

  • removes DATABASE_URI env var from with-vercel-website template .env.example (#10098) (52b1a9a)
  • update dockerfiles (#10073) (997aed3)
  • add Posts to internal links in website template (#10063) (605cf42)

🏡 Chores

  • proper docker-compose postgres url (ba0e7ae)
  • deps: bump turbo (044c22d)
  • examples: updates auth example to latest (#10090) (7292220)
  • richtext-slate: exports useElementButton, useLeafButton (#10047) (a501e60)
  • templates: remove console.log that logs payload secret for security (#10095) (dec87e9)

🤝 Contributors

v3.9.0

18 Dec 21:04
d0d7b51
Compare
Choose a tag to compare

v3.9.0 (2024-12-18)

🚀 Features

  • add shouldRestore config to job queue tasks (#10059) (194a8c1)
  • join field support relationships inside arrays (#9773) (b0b2fc6)
  • db-mongodb: allow to customize mongoose schema options with collectionsSchemaOptions (#9885) (198763a)
  • storage-*: add support for browser-based caching via etags (#10014) (ef90ebb)

🐛 Bug Fixes

  • encodes upload filename urls (#10048) (1446fe4)
  • passes field permissions to custom fields (#10024) (eb037a0)
  • beforeValidate previousValue argument (#10022) (99ca1ba)
  • cpa: updates CPAs w/ vercel-postgres db types to use POSTGRES_URL & updates .env.example to use generic env var strings (#10027) (70666a0)
  • db-postgres: select query on upload fields with hasMany: true (#10029) (2ee3e30)
  • payload-cloud: improve not found logging (#10058) (f29e633)
  • plugin-search: prevent error on undefined value in linkToDoc component (#9932) (29ad1fc)
  • templates: prevent image priority and lazy loading incompatibility (#10023) (7037983)
  • ui: properly allows configuring rows for the textarea field (#10031) (61c5e0d)
  • ui: properly sync field values in bulk upload preventing stale data overriding old docs (#9918) (7787105)

📚 Documentation

  • fixes typo removeTokenFromRepsonse to removeTokenFromResponse (#10026) (13e0505)

📝 Templates

🔨 Build

⚙️ CI

  • add email-resend and email-* to scopes for pr-title workflow (#10053) (93dde52)

🏡 Chores

🤝 Contributors

v3.8.0

17 Dec 02:17
3f35d36
Compare
Choose a tag to compare

v3.8.0 (2024-12-17)

🚀 Features

  • expose req to defaultValue function arguments (#9937) (6dea111)
  • join field admin.defaultColumns (#9982) (2ec4d0c)
  • db-vercel-postgres: allow to use a local database using pg instead of @vercel/postgres (#9771) (41167bf)
  • graphql: graphQL custom field complexity and validationRules (#9955) (36e21f1)
  • storage-vercel-blob: allow fallback to disk if token not set (#10005) (fa49e04)

🐛 Bug Fixes

  • remove localized property from RowField and CollapsibleField (#9672) (c187bff)
  • edit join field not rendering (#9971) (f5516b9)
  • job collection was not added if job config only has workflows and no predefined tasks (#9963) (f48f981)
  • db-sqlite: working point field CRUD and default value (#9989) (00909ec)
  • templates: adds priority to hero images (#10003) (f54e180)
  • ui: does not render row labels until form state returns (#10002) (ed44ec0)
  • ui: automatically subscribes custom fields to conditional logic (#9928) (1502e09)

⚡ Performance

  • reduce generated types for select by respecting interfaceName (#9870) (26a10ed)

🛠 Refactors

  • deduplicate and abstract SQL schema building (#9987) (727fba7)
  • plugin-seo: strongly type collection and global slugs in plugin config (#9962) (c167365)

📚 Documentation

🧪 Tests

📝 Templates

  • fix missing ts-ignore in seed script causing build errors (#10001) (8258d5c)
  • bump for v3.7.0 (#10000) (0f63db0)
  • add hero image field to posts instead of using the meta image for the hero as well (#9999) (12fa4fd)
  • conditionally render the live preview listener component (#9973) (050ff84)
  • fixes formatting issue with authors and footer not being at the bottom in the website template (#9969) (c2adf38)
  • bump for v3.7.0 (#9966) (1d6a935)

⚙️ CI

  • wait until version resolves in post-release-templates (#9968) (e073183)

🏡 Chores

  • deps: bumps react-select to v5.9.0 to supress react 19 warnings (#9967) (4dc5003)

🤝 Contributors

v3.7.0

13 Dec 17:13
4c3e41b
Compare
Choose a tag to compare

v3.7.0 (2024-12-13)

🚀 Features

  • expose pagination: false to REST / GraphQL (#9952) (b101fec)
  • add waitUntil property to payload.jobs.queue (#9950) (0d07ce2)
  • allow loading predefined migrations from proper exports (#9872) (d4d79c1)
  • allows excluding entities from the nav sidebar / dashboard without disabling its routes (#9897) (b1d92c2)
  • ui: allow customizing min height of code editor (#9920) (bae2fe5)

🐛 Bug Fixes

  • updates username validation to allow for all special character usage (#9946) (7a8b464)
  • join collection read access (#9930) (5af71fb)
  • db-postgres: payload.db.upsert inserts new rows instead of updating existing ones (#9916) (5e39634)
  • plugin-nested-docs: publishing parent doc should not publish child doc (#9958) (50e7c24)
  • translations: capitalized swedish 'collapseAll' translation (#9908) (821bd35)
  • ui: awaits form state before rendering conditional fields (#9933) (796df37)
  • ui: properly passes readOnly prop to email & username auth fields (#9938) (a582431)
  • ui: truncates richtext fields when displaying within a joins field (#9911) (d9efd19)

🛠 Refactors

  • ui: migrates away from React.forwardRef (#9907) (4c57df6)
  • ui: export TableColumnsProvider, documentDrawerBaseClass and SelectMany (#9899) (00d438e)

📚 Documentation

🧪 Tests

📝 Templates

  • fix build by reducing strictness of eslint rules (#9943) (d78550c)
  • set up prettier, bump next to 15.1.0, bump eslint to v9, set up .vscode configs (#9936) (c7272bb)
  • change names of data variables to improve clarity between data and elements (#9912) (23e2f7b)
  • fix preview path protocol not being https in production environments (#9910) (6a09fe1)
  • fix live preview relative URLs on website template (#9906) (afa08d0)
  • bump nextjs version to 15.1 (#9903) (d97d7ed)
  • bump for v3.6.0 (#9900) (5c2f72d)

⚙️ CI

🏡 Chores

  • use non-permanent / => /admin redirect so that the browser doesn't cache it for projects that don't redirect (#9948) (d57cad6)
  • update what-is-payload.mdx (#9942) (9eb1b50)
  • deflake postgres and sqlite integration joins test (#9939) (c298cbc)
  • export JobLog and importHandlerPath, add missing id type to JobLog (#9921) (fffab66)
  • payload-cloud: improve error log of staticHandler (#9934) (4334940)
  • translations: improve password reset message (#9931) (6fffbdb)
  • ui: export SearchFilter, EditUpload, FileDetails, PreviewSizes, PreviewButton, ErrorIcon, InfoIcon, SuccessIcon, WarningIcon (#9919) (c8046ca)

🤝 Contributors

v3.6.0

11 Dec 18:11
45d2064
Compare
Choose a tag to compare

v3.6.0 (2024-12-11)

🚀 Features

  • expose session, db in migrations to use the active transaction with the database directly (#9849) (b73fc58)
  • consolidates create and duplicate operations (#9866) (ca52a50)
  • allow where in payload.jobs.run (#9877) (b1ef28d)
  • add payload.jobs.runByID (#9875) (09246a4)
  • next: adds suppressHydrationWarning property to payload config admin options (#9867) (5223990)

🐛 Bug Fixes

  • cannot pass function to client error when defining server-only props in custom field components (#9898) (91e8acc)
  • ensures autosave only runs sequentially (#9892) (a0f0316)
  • forgotPassword set expiration time (#9871) (306b5d2)
  • upgrade pg snapshot during v3 upgrade if needed (#9837) (1e5364f)
  • next: thread default ServerProps to view actions and other components that were missing (#9868) (0303b78)
  • next: next.js 15.1.0 compatibility by not importing isRedirectError from next/dist (#9878) (5bfc92d)
  • next: does not format top-level domains within admin.preview or livePreview.url functions (#9831) (e095222)
  • richtext-*: field errors and descriptions were not displayed (#9824) (60ceeb0)
  • richtext-lexical: lexical-html export (#9793) (d791db2)
  • templates: website infinite reload bug with 404s in production mode (#9843) (d3b8d0c)
  • ui: ensures admin.disableListFilter is disabled despite url search params (#9874) (da6bc55)
  • ui: refreshes column state during hmr and respects admin.disableListColumn despite preferences (#9846) (f7172b5)
  • ui: prevents unwanted data overrides when bulk editing (#9842) (563694d)

🛠 Refactors

  • richtext-lexical: export useBlockComponentContext and useInlineBlockComponentContext (#9896) (b83ea84)
  • richtext-lexical: export JSXConverter type (#9815) (7599ede)

📚 Documentation

  • properly capitalize SQLite and Next.js (#9848) (7642837)
  • add missing types, prefer pnpm, fix various typos, discourage using payload from import (#9847) (254d888)
  • fix typo (#9845) (36c2714)

🧪 Tests

  • properly mock nodemailer verify in unit test (#9832) (e746d7a)

📝 Templates

  • bump for v3.5.0 (#9844) (43a0ce7)
  • website template added changes for seed script, relative live preview URLs and fixed endpoint status code (#9808) (b0c9b41)
  • bump for v3.5.0 (#9804) (1fdc7cc)

⚙️ CI

  • add missing tests to all-green dependency array (#9825) (84abfdf)
  • add PR co-authors to contributors section of release notes (e236c28)
  • add types testing with tstyche (#9803) (f09ee0b)
  • adjust tag detection for post-release-templates (67a35d3)

🏡 Chores

  • better default for useAsTitle with custom auth collections (#9841) (fee1744)
  • post-release-templates fetch tags (2c0bea8)
  • update template lockfiles (a80de3f)
  • deps: upgrade dataloader dependency from 2.2.2 to 2.2.3 (#9823) (dc741bb)

🤝 Contributors

v3.5.0

06 Dec 20:05
ff62017
Compare
Choose a tag to compare

v3.5.0 (2024-12-06)

🚀 Features

  • upgrade to React 19 stable and Next.js 15.0.4 (#9801) (8f3f449)

    It is recommended to upgrade to React 19 stable and Next.js 15.0.4 in your existing project. The pnpm.overrides and overrides keys are not needed anymore!

    To do that, change the following in your package.json:

...
  "dependencies": {
-    "next": "15.0.3",
+    "next": "15.0.4",
-    "react": "19.0.0-rc-66855b96-20241106",
-    "react-dom": "19.0.0-rc-66855b96-20241106",
+    "react": "19.0.0",
+    "react-dom": "19.0.0",
     ...
  },
  "devDependencies": {
-    "@types/react": "npm:[email protected]",
-    "@types/react-dom": "npm:[email protected]".
+    "@types/react": "19.0.1",
+    "@types/react-dom": "19.0.1",
  },
-  "pnpm": {
-    "overrides": {
-      "@types/react": "npm:[email protected]",
-      "@types/react-dom": "npm:[email protected]"
-    }
-  },
-  "overrides": {
-    "@types/react": "npm:[email protected]",
-    "@types/react-dom": "npm:[email protected]"
-  }
  • export sanitizeSelectParam, sanitizePopulateParam, senitizeJoinParams utils (#9777) (afd0b54)
  • allow to define global label as function (#9759) (0829a35)
  • live-preview: supports relative urls for dynamic preview deployments (#9746) (f12b4dc)
  • next: supports relative preview URLs (#9755) (1fc9c47)

🐛 Bug Fixes

  • defaultPopulate and populate with nested to arrays/blocks properties (#9751) (7def6b7)
  • getPayload generate import map only when used in Payload Admin Panel (#9371) (d8f7034)
  • db-mongodb: bump mongoose to 8.8.3 (#9747) (840dde2)
  • db-postgres: handle select query on select fields (#9607) (dff71ee)
  • ui: collapsed array state on input change (#9800) (62fc2f5)
  • ui: join field ignoring defaultSort and defaultLimit (#9766) (a11243e)
  • ui: disable doc submenu when parent button is disabled (#9750) (1ab3be6)
  • ui: stale locale value from useLocale (#9582) (fa7ed3f)
  • ui: only render header dom node if needed (#9742) (8e26824)
  • ui: incorrect label size for group field (#9740) (4a324a9)

📚 Documentation

  • adds missing "to" in jobs-queue/overview (#9778) (de53f2a)
  • plugin-search: add info on collection reindexing (#9764) (c9ce350)

📝 Templates

  • bump for v3.4.0 (#9780) (d3232b9)
  • improvements to seed speed on website template and updated hero and collapsible fields (#9779) (19ddd3c)
  • fixes the seeding for the website template when using postgres (#9758) (3d1305d)
  • improve speed of seed script (#9748) (2321970)
  • website: add next sitemap robots disallow config for /admin (#9761) (97d3bb1)

⚙️ CI

  • add nightly stale cron (#9802) (a1a0a07)
  • explicitly use ubuntu-24.04 instead of latest to ensure compat (#9786) (bbf35a6)
  • fetch-depth 0 needed for lint job (a108986)
  • main workflow improvements (#9784) (4cc6f4c)
  • only run tests when needed via needs_tests filter (#9781) (cb691e0)
  • post-release-templates assign PR to user that triggered (ef8d3c9)
  • post-release-templates always use latest tag with workflow_dispatch (28c6b2a)
  • use PAT for post-release-templates (c2ff9b1)
  • ensure clean all script does not error after retrying step, by installing globby and chalk globally (#9745) (84a5b40)
  • ensure triage actions work for PRs from forks (12a8bba)

🏡 Chores

  • cpa: updates .env.example env vars along side .env vars based on selected DB (#9757) (1aa23d3)
  • richtext-lexical: remove outdated custom block component examples (#9754) (61a4656)
  • templates: migrate to new richtext component in website template (#9615) (89db8fb)
  • translations: improved serbian translations for the lexical editor (#9795) (10eab87)
  • ui: expose onInputChange from react-select in SelectInput component (#9728) (8f785e1)