Skip to content

Releases: payloadcms/payload

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)

v3.4.0

04 Dec 15:39
0ca473e
Compare
Choose a tag to compare

v3.4.0 (2024-12-04)

🚀 Features

  • adds configurable expiration prop for password reset tokens (#9710) (9bffa09)

🐛 Bug Fixes

  • hidden and disabled fields cause incorrect field paths (#9680) (a53c1d5)
  • join field description, custom components and loading state (#9703) (67179a7)
  • error after view is left idle on edit views (#9709) (fbb59ba)
  • copy data from locale transaction error (#9673) (d047f01)
  • richtext-lexical: ensure hooks from sub-fields receive document data and doc props, and not node data and doc props (#9406) (50823be)
  • ui: copy to locale incorrect label when locale label is defined as object (#9705) (18f9f35)

📚 Documentation

📝 Templates

  • vercel migrations (#9730) (32f0f34)
  • website template copy code button darkmode behavior (#9715) (fd9a007)
  • vercel website template migrations wrong adapter import (#9708) (01d5746)
  • website: add sitemap support to website template (#9727) (fce210b)
  • website: add new favicons and og images to website template (#9716) (1bd689b)
  • website: website remove maxDepth from references in link field (#9702) (d2007b1)

⚙️ CI

  • template bump workflow (#9733) (f5aad49)
  • create separate post-release-templates workflow (0c34f27)
  • pin specific github-releases-to-discord version (7bd1a16)

🏡 Chores

  • adds jsdocs for auth.forgotPassword.expiration prop (#9739) (c7218c0)
  • fix broken links in collections.mdx (#9697) (2ef7de5)
  • workflow rename (188466d)
  • change deprecation warning for getPayloadHMR to warning (#9700) (643c92d)
  • next: remove unused sanitizeEditViewProps fn (#9569) (92a01c2)
  • templates: add initial migrations for vercel with website template (#9706) (3f32224)

🤝 Contributors

v3.3.0

03 Dec 18:00
a6ba9e3
Compare
Choose a tag to compare

v3.3.0 (2024-12-03)

🚀 Features

  • disableLocalStrategy with auth fields still enabled (#9579) (6104fe5)
  • export built-in field validations (#9622) (519752f)
  • examples: add custom server example [skip-lint] (#9641) (fdfa07b)
  • ui: adds beforeInput & afterInput props for arrays, blocks, collapsible, group, radio, & relationship fields. (#9674) (58b7415)
  • ui: upgrade react-datepicker dependency from 6.2.0 to 7.5.0 (#9654) (9d72408)
  • ui: export CodeEditor (#9650) (963387f)
  • ui: export TabsProvider and TabComponent (#9647) (f151723)

🐛 Bug Fixes

  • throw proper error if import handler paths are not able to be imported, improve import handler path docs (#9679) (0dbfc23)
  • ensure jobs do not retry indefinitely by default, fix undefined values in error messages (#9605) (a89d544)
  • latest: true version disappear on parallel writes (#9032) (631edd4)
  • duplicate afterRead collection hook call on loginOperation (#9664) (c5fe021)
  • job task output data was not fetched and restored, if task failed previously (#9651) (f076797)
  • prevent workflow destructuring errors for failing tasks (#9649) (4cd31ce)
  • ensure job errors are saved in payload (#9644) (e6ea68e)
  • live-preview: populates localized relationships in client-side live preview (#9617) (3d1a065)
  • next: remove keyboard focus for closed nav items (#9558) (2d2e7d5)
  • plugin-search: delete proper search document when doc has the same value but different relationTo (#9616) (b896507)
  • richtext-lexical: ensure lexical doesn't break if used without react installed (#9620) (030b759)
  • richtext-lexical: add form id to drawSlug (#9613) (9892303)
  • translations: changes rs and rs-Latin dateFNSkey to proper locale instead of en-US (#9621) (2b4522b)
  • ui: data disappearing when form state updates in globals (#9682) (d1de106)
  • ui: properly animates height for dynamically rendered children (#9665) (d04cea1)
  • ui: upgrade sonner from 1.5.0 to 1.7.0 (#9666) (24c75b0)
  • ui: upgrade react-select, fixes type issues with select input (#9653) (73e0e25)

🛠 Refactors

  • deprecates params and search params contexts (#9581) (edc04ae)

📚 Documentation

  • add payload.auth to local api (#9632) (cf34d3a)
  • add upgrade from previous beta section to migration guide (#9642) (1e8c9d3)
  • fix links to /access-control/overview (#9619) (bc2d7c9)
  • adds missing comma to example config in localization.mdx (#9618) (aa5dd8a)

⚙️ CI

  • allow more commit types in release notes (#9677) (e4c3c5b)
  • add back CI-level automatic retrying for failing int and e2e tests (#9652) (0b445c8)
  • add github-releases-to-discord (702df1f)
  • small tweaks to post-release (f150a68)

🏡 Chores

  • upgrade all dependencies used to build payload (swc, esbuild, react compiler, babel) (#9658) (877b899)
  • upgrade all react and next-related packages (#9655) (71ba4a8)
  • add contributor count badge to readme (0716128)
  • examples: migrates form-builder example to 3.0 (#9681) (40f5c72)
  • scripts: fix generate template variations script (#9671) (5b3079a)

🤝 Contributors

v3.2.2

29 Nov 18:07
07e40d3
Compare
Choose a tag to compare

v3.2.2 (2024-11-29)

🚀 Features

  • richtext-lexical: fully-typed blocks in JSX serializer (#9554) (519bb79)

🐛 Bug Fixes

  • add generic to LabelFunction to prevent type error for custom translation keys (#9335) (27eeac2)
  • do not send admin dependencies to client (#9583) (3da9be0)
  • incorrect formState after doc save (#9573) (4b302f2)
  • plugin-sentry: capture non APIError errors to sentry (#9595) (61a51ca)
  • richtext-lexical: allow exiting the RTE with the keyboard in Firefox (#8654) (3c35d81)
  • richtext-lexical: various JSX converter issues (#9570) (17c7945)
  • ui: ensure UI is reactive to HMR changes, without having to refresh the page (#9602) (c4327f2)
  • ui: css is not defined error in production build (#9603) (36a6a19)
  • ui: retains search params when navigating back (#9576) (3961223)
  • ui: ensure Form submit button only uses onClick handler when needed, as that was causing issues with password manager extensions (#9572) (ca07c9f)

🤝 Contributors