v3.44.0
payloadcms/payloadv3.44.0Jun 27, 2025by denolfe
AI Summary
Introduces auth sessions and collection-level preferences, but requires a migration for projects using local auth with `db-postgres` or `db-sqlite`.
Key Highlights
- Auth sessions feature (requires migration for local auth on Postgres/SQLite)
- Collection-level preferences
- Collection-level `disableBulkEdit`
- Import/Export preview improvements
Breaking Changes
- Migration required for local auth strategy with `db-postgres` or `db-sqlite` (auth.useSessions defaults to true)
New Features
- Auth sessions
- Collection-level preferences
- Collection-level `disableBulkEdit`
- Import/Export preview improvements
Full Release Notes
## [v3.44.0](https://github.com/payloadcms/payload/compare/v3.43.0...v3.44.0) (2025-06-27)
### π¨ Notice π¨
**If your project uses the local auth strategy with `db-postgres` or `db-sqlite`, a migration is required.** This is due to a new security feature (enabled by default) that stores a unique auth session identifier in the database.
To opt out and continue using the previous behavior, you can disable the feature by setting `auth.useSessions: false` in your users collection config.
For example:
```ts
// payload.config.ts
collections: [
{
slug: 'users',
auth: {
useSessions: false,
},
fields: [],
},
],
```
### π Features
* auth sessions ([#12483](https://github.com/payloadcms/payload/issues/12483)) ([26d709d](https://github.com/payloadcms/payload/commit/26d709d))
* collection-level preferences ([#12909](https://github.com/payloadcms/payload/issues/12909)) ([c8b7214](https://github.com/payloadcms/payload/commit/c8b7214))
* collection-level `disableBulkEdit` ([#12850](https://github.com/payloadcms/payload/issues/12850)) ([a5ec55c](https://github.com/payloadcms/payload/commit/a5ec55c))
* **plugin-import-export:** preview displays CSV and JSON data accurately ([#12948](https://github.com/payloadcms/payload/issues/12948)) ([3830d71](https://github.com/payloadcms/payload/commit/3830d71))
* **templates:** added int and e2e tests to blank and website templates ([#12866](https://github.com/payloadcms/payload/issues/12866)) ([87c7952](https://github.com/payloadcms/payload/commit/87c7952))
### π Bug Fixes
* richTextField supports beforeInput/afterInput, but these were missing from types.ts ([#12889](https://github.com/payloadcms/payload/issues/12889)) ([e769550](https://github.com/payloadcms/payload/commit/e769550))
* validate "null" value for point field as true when its not required ([#12908](https://github.com/payloadcms/payload/issues/12908)) ([2da6d92](https://github.com/payloadcms/payload/commit/2da6d92))
* get external resource blocked ([#12927](https://github.com/payloadcms/payload/issues/12927)) ([a7ad573](https://github.com/payloadcms/payload/commit/a7ad573))
* restore missing properties to live preview client config ([#12904](https://github.com/payloadcms/payload/issues/12904)) ([bcb10b5](https://github.com/payloadcms/payload/commit/bcb10b5))
* uses valid fractional index for test ([#12942](https://github.com/payloadcms/payload/issues/12942)) ([8900a38](https://github.com/payloadcms/payload/commit/8900a38))
* querying virtual fields deeply with `draft: true` ([#12868](https://github.com/payloadcms/payload/issues/12868)) ([bc9b501](https://github.com/payloadcms/payload/commit/bc9b501))
* use small pill size when viewing version information ([#12844](https://github.com/payloadcms/payload/issues/12844)) ([6c4dfe4](https://github.com/payloadcms/payload/commit/6c4dfe4))
* **db-mongodb:** strip deleted from the config blocks from the result ([#12869](https://github.com/payloadcms/payload/issues/12869)) ([54afaf9](https://github.com/payloadcms/payload/commit/54afaf9))
* **db-postgres:** joins with custom schema ([#12937](https://github.com/payloadcms/payload/issues/12937)) ([c1f6297](https://github.com/payloadcms/payload/commit/c1f6297))
* **db-postgres:** querying on `hasMany: true` select field in a relationship ([#12916](https://github.com/payloadcms/payload/issues/12916)) ([b74969d](https://github.com/payloadcms/payload/commit/b74969d))
* **drizzle:** skip column if undefined in findMany ([#12902](https://github.com/payloadcms/payload/issues/12902)) ([605c993](https://github.com/payloadcms/payload/commit/605c993))
* **live-preview:** client-side live preview cannot populate more than 10 relationships at once ([#12929](https://github.com/payloadcms/payload/issues/12929)) ([7472798](https://github.com/payloadcms/payload/commit/7472798))
* **live-preview:** foreign postMessage events reset client-side state ([#12925](https://github.com/payloadcms/payload/issues/12925)) ([67fa5a0](https://github.com/payloadcms/payload/commit/67fa5a0))
* **next:** live preview popup triggers leave without saving modal ([#12947](https://github.com/payloadcms/payload/issues/12947)) ([141133a](https://github.com/payloadcms/payload/commit/141133a))
* **next:** prevent errors in globals version view ([#12920](https://github.com/payloadcms/payload/issues/12920)) ([39e9519](https://github.com/payloadcms/payload/commit/39e9519))
* **next:** remove error handling from next auth functions ([#12897](https://github.com/payloadcms/payload/issues/12897)) ([1b5e3fe](https://github.com/payloadcms/payload/commit/1b5e3fe))
* **next:** remove console.error from next auth functions ([#12881](https://github.com/payloadcms/payload/issues/12881)) ([fe58f03](https://github.com/payloadcms/payload/commit/fe58f03))
* **plugin-import-export:** duplicated rows and headers in CSV export when streaming paginated results ([#12941](https://github.com/payloadcms/payload/issues/12941)) ([5cf9287](https://github.com/payloadcms/payload/commit/5cf9287))
* **plugin-import-export:** csv export for polymorphic relationship fields ([#12926](https://github.com/payloadcms/payload/issues/12926)) ([6d76874](https://github.com/payloadcms/payload/commit/6d76874))
* **plugin-import-export:** omit CSV columns when toCSV returns undefined ([#12923](https://github.com/payloadcms/payload/issues/12923)) ([751691a](https://github.com/payloadcms/payload/commit/751691a))
* **plugin-multi-tenant:** updates tenant selector upon tenant creation ([#12936](https://github.com/payloadcms/payload/issues/12936)) ([c76d839](https://github.com/payloadcms/payload/commit/c76d839))
* **richtext-lexical:** consistent html converter inline padding ([#12848](https://github.com/payloadcms/payload/issues/12848)) ([11ac230](https://github.com/payloadcms/payload/commit/11ac230))
* **ui:** usePreventLeave should not show alert for exceptions ([#12722](https://github.com/payloadcms/payload/issues/12722)) ([c3c1614](https://github.com/payloadcms/payload/commit/c3c1614))
* **ui:** vertically align table headers to the middle ([#12699](https://github.com/payloadcms/payload/issues/12699)) ([0e9865c](https://github.com/payloadcms/payload/commit/0e9865c))
* **ui:** properly render create new button in polymorphic joins ([#12930](https://github.com/payloadcms/payload/issues/12930)) ([a1822d2](https://github.com/payloadcms/payload/commit/a1822d2))
* **ui:** render DateTime label as <label> instead of <span> ([#12949](https://github.com/payloadcms/payload/issues/12949)) ([4b9566f](https://github.com/payloadcms/payload/commit/4b9566f))
* **ui:** bulk upload losing state when adding additional files ([#12946](https://github.com/payloadcms/payload/issues/12946)) ([d62d9b4](https://github.com/payloadcms/payload/commit/d62d9b4))
* **ui:** unreachable custom views when admin route set to '/' ([#12812](https://github.com/payloadcms/payload/issues/12812)) ([379fc12](https://github.com/payloadcms/payload/commit/379fc12))
* **ui:** toggle list selections off on successful bulk action ([#12861](https://github.com/payloadcms/payload/issues/12861)) ([9f17db8](https://github.com/payloadcms/payload/commit/9f17db8))
* **ui:** align caret on error tooltip for checkbox field ([#12917](https://github.com/payloadcms/payload/issues/12917)) ([c094b0e](https://github.com/payloadcms/payload/commit/c094b0e))
* **ui:** updates auth fields UI to reflect access control ([#12745](https://github.com/payloadcms/payload/issues/12745)) ([1845669](https://github.com/payloadcms/payload/commit/1845669))
* **ui:** folder server function must reference exports dir ([#12898](https://github.com/payloadcms/payload/issues/12898)) ([0d50799](https://github.com/payloadcms/payload/commit/0d50799))
* **ui:** custom row labels on arrays should not be removed on field duplication ([#12895](https://github.com/payloadcms/payload/issues/12895)) ([37c945b](https://github.com/payloadcms/payload/commit/37c945b))
* **ui:** date format of useAsTitle lost after changing value ([#12928](https://github.com/payloadcms/payload/issues/12928)) ([20bbbcf](https://github.com/payloadcms/payload/commit/20bbbcf))
* **ui:** properly differentiate between DOM events and raw values in setValue ([#12892](https://github.com/payloadcms/payload/issues/12892)) ([c03e9c1](https://github.com/payloadcms/payload/commit/c03e9c1))
* **ui:** should select document after creation from relationship field ([#12842](https://github.com/payloadcms/payload/issues/12842)) ([25e3902](https://github.com/payloadcms/payload/commit/25e3902))
* **ui:** support react node content in ConfirmationModal heading and body ([#12841](https://github.com/payloadcms/payload/issues/12841)) ([dffdee8](https://github.com/payloadcms/payload/commit/dffdee8))
### π Refactors
* changed default exports to named exports in payload package ([#12871](https://github.com/payloadcms/payload/issues/12871)) ([053192c](https://github.com/payloadcms/payload/commit/053192c))
* remove unused assets, move remaining assets out of payload packages ([#12874](https://github.com/payloadcms/payload/issues/12874)) ([bb17cc3](https://github.com/payloadcms/payload/commit/bb17cc3))
* simplify job queue error handling ([#12845](https://github.com/payloadcms/payload/issues/12845)) ([59f536c](https://github.com/payloadcms/payload/commit/59f536c))
* simplify job type ([#12816](https://github.com/payloadcms/payload/issues/12816)) ([84cb2b5](https://github.com/payloadcms/payload/commit/84cb2b5))
### π Documentation
* remove group from list of default field validations ([#12921](https://github.com/payloadcms/payload/issues/12921)) ([e5e0ec8](https://github.com/payloadcms/payload/commit/e5e0ec8))
* filterOptions anchor link fix ([#12883](https://github.com/payloadcms/payload/issues/12883)) ([fcaf989](https://github.com/payloadcms/payload/commit/fcaf989))
* fix typo on authentication overview page ([#12891](https://github.com/payloadcms/payload/issues/12891)) ([7a0308f](https://github.com/payloadcms/payload/commit/7a0308f))
* **plugin-sentry:** add pg query instrumentation guide ([#12229](https://github.com/payloadcms/payload/issues/12229)) ([dede3a4](https://github.com/payloadcms/payload/commit/dede3a4))
### π§ͺ Tests
* bulk edit flaky selectors ([#12950](https://github.com/payloadcms/payload/issues/12950)) ([86e48ae](https://github.com/payloadcms/payload/commit/86e48ae))
* adds test for skipSafeFetch allowList ([#12954](https://github.com/payloadcms/payload/issues/12954)) ([7ebac63](https://github.com/payloadcms/payload/commit/7ebac63))
* guard against null values in custom toCSV functions ([#12938](https://github.com/payloadcms/payload/issues/12938)) ([1cdec86](https://github.com/payloadcms/payload/commit/1cdec86))
* fix `database/int.spec.ts` with postgres custom schema ([#12922](https://github.com/payloadcms/payload/issues/12922)) ([cf87871](https://github.com/payloadcms/payload/commit/cf87871))
* fix `database` integration tests with postgres ([#12919](https://github.com/payloadcms/payload/issues/12919)) ([886c07e](https://github.com/payloadcms/payload/commit/886c07e))
### π Templates
* bump for v3.43.0 ([#12831](https://github.com/payloadcms/payload/issues/12831)) ([d1826c6](https://github.com/payloadcms/payload/commit/d1826c6))
### π Examples
* fix broken navigation to post in localization example ([#12810](https://github.com/payloadcms/payload/issues/12810)) ([6a935d4](https://github.com/payloadcms/payload/commit/6a935d4))
### βοΈ CI
* bring back CODEOWNERS file for reviews, approval not required [skip ci] ([1db0619](https://github.com/payloadcms/payload/commit/1db0619))
* revert bump pnpm to v10 ([#12840](https://github.com/payloadcms/payload/issues/12840)) ([#12906](https://github.com/payloadcms/payload/issues/12906)) ([ca0d036](https://github.com/payloadcms/payload/commit/ca0d036))
* add timeout-minutes for int and e2e ([#12903](https://github.com/payloadcms/payload/issues/12903)) ([c7dc1b4](https://github.com/payloadcms/payload/commit/c7dc1b4))
* adjust neverBuiltDependencies in test/package.json ([#12896](https://github.com/payloadcms/payload/issues/12896)) ([a44e4c4](https://github.com/payloadcms/payload/commit/a44e4c4))
* bump pnpm to v10 ([#12840](https://github.com/payloadcms/payload/issues/12840)) ([85e0e0e](https://github.com/payloadcms/payload/commit/85e0e0e))
### π‘ Chores
* fix jest global teardown incorrectly always returning process exit status 0 ([#12907](https://github.com/payloadcms/payload/issues/12907)) ([5368440](https://github.com/payloadcms/payload/commit/5368440))
* set trimTrailingWhitespace and insertFinalNewline in vscode settings ([#12939](https://github.com/payloadcms/payload/issues/12939)) ([b1a57fa](https://github.com/payloadcms/payload/commit/b1a57fa))
* fix withPayload helper jsdoc ([#12503](https://github.com/payloadcms/payload/issues/12503)) ([57f4fb6](https://github.com/payloadcms/payload/commit/57f4fb6))
* remove neverBuiltDependencies from test/package.json ([4831f66](https://github.com/payloadcms/payload/commit/4831f66))
* add eslint rule to ignore default exports in test suite configs ([#12655](https://github.com/payloadcms/payload/issues/12655)) ([9c5adba](https://github.com/payloadcms/payload/commit/9c5adba))
### π€ Contributors
- James Mikrut (@jmikrut)
- Jacob Fletcher (@jacobsfletch)
- Elliot DeNolf (@denolfe)
- Roman (@spielerx)
- Jesper We (@JesperWe)
- ThijsAtFreave (@ThijsAtFreave)
- Sam Wheeler (@swheeler7)
- Chandler Gonzales (@jcgsville)
- Jessica Rynkar (@jessrynkar)
- Said Akhrarov (@akhrarovsaid)
- Dani Calero π (@danicaleroo)
- Sasha (@r1tsuu)
- Dan Ribbens (@DanRibbens)
- Patrik (@PatrikKozak)
- Dave Ryan (@dave-wwg)
- Jarrod Flesch (@JarrodMFlesch)
- Kendell (@kendelljoseph)
- OndΕej ZΓ‘vodnΓ½ (@ozavodny)
- Paul (@paulpopus)
- Ruby Jasmin (@rubyjasmin)
- Anatoly Kopyl (@anatolykopyl)
- Alessio Gravili (@AlessioGr)
- Andrea Ghidini (@ghidosoft)
- Adler Weber (@adlrwbr)
- Marcus Michaels (@marcusmichaels)
- Philip (@stuckinsnow)