Change8

v3.28.0

Breaking Changes
📦 payload-cmsView on GitHub →
1 breaking12 features🐛 13 fixes🔧 7 symbols

Summary

This release focuses on significant performance improvements via an opt-in compilation flag and upgrades the core Lexical dependency to 0.27.1, alongside numerous bug fixes across database, GraphQL, and UI components.

⚠️ Breaking Changes

  • Projects relying on server-only Payload dependencies being bundled during development might see unexpected behavior due to the new opt-in compilation performance flag. To maintain previous behavior, ensure you do not enable `devBundleServerPackages: false` in `withPayload` configuration.

Migration Steps

  1. To enable compilation performance improvements, update your `next.config.js` to include `{ devBundleServerPackages: false }` in the `withPayload` call: `export default withPayload(nextConfig, { devBundleServerPackages: false })`.
  2. If you manually installed `lexical`, update it to version `0.27.1`.
  3. If encountering richtext-lexical errors after the upgrade, perform a clean reinstall: 1. Delete `node_modules`. 2. Delete your lockfile (e.g., `pnpm-lock.json`). 3. Reinstall dependencies (e.g., `pnpm install`).

✨ New Features

  • Introduced an opt-in flag (`devBundleServerPackages: false`) in `withPayload` configuration to potentially cut Payload's compile times in half during development.
  • Upgraded the Lexical dependency from `0.21.0` to `0.27.1`, enabling groundwork for features like color pickers and including table improvements.
  • Payload now defaults to `noindex nofollow` for pages.
  • The `validate` function in field configurations now threads the path through.
  • Allows specification of which JWT extraction methods are supported, and in which order.
  • MongoDB: Strips keys from read results that do not exist in the schema.
  • Next.js: Fully exposes Next.js metadata.
  • Lexical: Allows disabling indentation for specific nodes.
  • Lexical: Adds ability to disable auto link creation.
  • Lexical: New HTML converter introduced.
  • UI: Implemented form state queues.
  • UI: Added ability to disable the copy to locale option in collection configuration.

🐛 Bug Fixes

  • Ensured only authenticated users can access the `payload-locked-documents` collection.
  • Fixed issue where upload imageSizes forced original file uploads to be compressed.
  • Added missing auth property to new defaults function.
  • MongoDB: Properly sanitized `updateVersion` read result.
  • GraphQL: Sanitized GraphQL field names for schema generation.
  • Import/Export Plugin: Fixed issue where plugin broke `i18n` configuration.
  • Translations: Updated translation placeholders to not be translated for Lithuanian.
  • UI: Added fallback locale when `defaultLocale` is unavailable.
  • UI: Fixed stale list thumbnails when navigating.
  • UI: Corrected logic for showing the copyToLocale button and added a test.
  • UI: Ensured `upload.displayPreview` affects all previews in the admin panel.
  • UI: Applied consistent styling to custom & default block thumbnails.
  • UI: Fixed incorrect error states.

🔧 Affected Symbols

withPayloadlexicalpayload-locked-documentsfield validate functiongraphql field namesi18n configurationupload.displayPreview