Change8

v3.65.0

Breaking Changes
📦 payload-cmsView on GitHub →
1 breaking6 features🐛 17 fixes🔧 11 symbols

Summary

This release disables Turbopack support, requiring a switch to Webpack builds, while introducing significant feature enhancements like type-safe custom properties and MongoDB connection lifecycle hooks.

⚠️ Breaking Changes

  • Turbopack Build support is disabled. Users must now use Webpack to build their app. Use \`pnpm build\` on Next.js 15 or \`pnpm build --webpack\` on Next.js 16.

Migration Steps

  1. If you were using Turbopack, switch your build command to use Webpack: use \`pnpm build\` for Next.js 15 or \`pnpm build --webpack\` for Next.js 16.

✨ New Features

  • Added augmentable interfaces (\`CollectionCustom\`, \`CollectionAdminCustom\`, \`GlobalCustom\`, \`GlobalAdminCustom\`) for type-safe custom properties on collections and globals.
  • Allow specifying \`payloadInstanceCacheKey\` in \`handleEndpoints\` and \`createPayloadRequest\` to control cached Payload instance usage.
  • Added \`afterCreateConnection\` and \`afterOpenConnection\` hooks to the MongoDB adapter (\`db-mongodb\`).
  • Added localization support to MCP resource operations (create, update, find, delete) in \`plugin-mcp\`.
  • Custom tool, prompt, and resource handlers in \`plugin-mcp\` now receive a \`PayloadRequest\` object.
  • Extracted and exported the \`BlockSelector\` component from \`BlocksDrawer\` in the UI, including a new \`onSelect\` callback.

🐛 Bug Fixes

  • Login hooks are now triggered after password reset.
  • Ensured \`restoreAsDraft\` only updates the published document when \`draft\` is false.
  • Removed transaction initialization for global document access.
  • Version count queries now correctly allow querying on localized fields.
  • Prevented upload mimeType error when \`useTempFiles\` is true.
  • Fixed autoRefresh not working due to stale closure and missing configuration in the client.
  • Fixed \`TypeWithVersion\` missing the \`latest\` property.
  • Resolved GraphQL version error occurring in production.
  • Corrected outgoing localized data from \`afterRead\` hooks.
  • Relationships no longer fallback if \`fallbackLocale\` is explicitly set to false.
  • Hidden Turbopack warnings.
  • Fixed logout-inactivity route getting stuck on the loading indicator when inactivity and \`isLoggedIn\` are both true.
  • Tightened up error visibility handling.
  • Properly structured the Claude plugin (\`claude\`).
  • Database adapters (\`db-*\`) no longer exit the process on connection errors.
  • Prevented race condition in transaction session cleanup for MongoDB and Drizzle.
  • Added PostgreSQL 18 support for Drizzle.

🔧 Affected Symbols

CollectionCustomCollectionAdminCustomGlobalCustomGlobalAdminCustomhandleEndpointscreatePayloadRequestafterCreateConnectionafterOpenConnectionBlockSelectorBlocksDrawerPayloadRequest