v3.28.0
Breaking Changes📦 payload-cmsView on GitHub →
⚠ 1 breaking✨ 12 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
- To enable compilation performance improvements, update your `next.config.js` to include `{ devBundleServerPackages: false }` in the `withPayload` call: `export default withPayload(nextConfig, { devBundleServerPackages: false })`.
- If you manually installed `lexical`, update it to version `0.27.1`.
- 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