v3.64.0 (2025-11-13)
๐ Features
- add support for UTC timezone in date fields (#14586) (8b34e40)
- next: turbopack build support, fix incorrect handling of external packages (#14475) (3a975d7)
- plugin-mcp: adds MCP context to req.payloadAPI (#14595) (860bdf2)
- plugin-mcp: adds custom auth config (#14538) (73a18dc)
- plugin-redirects: support translations (#14548) (ad8f0b2)
UTC Timezone Support - Add support for 'UTC' as a timezone value in date fields. Previously unsupported due to validation against Intl API runtime values. Also fixes issue where having only one timezone would make it selected by default. #14586
import { buildConfig } from 'payload'
const config = buildConfig({
admin: {
timezones: {
supportedTimezones: [
{
label: 'UTC',
value: 'UTC',
},
],
defaultTimezone: 'UTC',
},
},
})Turbopack Build Support - Full support for Turbopack builds (now default in Next.js 16). Properly externalizes database adapter entry points to prevent production failures. Resolves issues with direct dependency externalization causing runtime errors. #14475
MCP Context Detection - Detect when Payload API calls originate from MCP context using req.payloadAPI === 'MCP'. Enables conditional logic in hooks based on MCP usage. #14595
export const Posts: CollectionConfig = {
slug: 'posts',
hooks: {
beforeRead: [
({ doc, req }) => {
if (req.payloadAPI === 'MCP') {
doc.title = `${doc.title} (MCP Hook Override)`
}
return doc
},
],
},
}Custom Auth Configuration - Override default API key authentication with custom authorization logic using overrideAuth. Provides granular control over MCP access permissions. #14538
import { type MCPAccessSettings, mcpPlugin } from '@payloadcms/plugin-mcp'
plugins: [
mcpPlugin({
overrideAuth: (req) => {
return {
posts: { find: true },
products: { find: true, update: true },
} as MCPAccessSettings
},
})
]Redirect Plugin Translation Support - Enable translations for plugin fields, eliminating need for verbose field overrides configuration. Configure field labels in multiple languages directly through i18n config. #14548
export default buildConfig({
i18n: {
translations: {
en: {
'plugin-redirects': {
fromUrl: 'Source URL (Custom)',
},
},
de: {
'plugin-redirects': {
fromUrl: 'Quell-URL',
internalLink: 'Interner Link',
},
},
},
},
plugins: [redirectsPlugin({ collections: ['pages'] })],
})๐ Bug Fixes
- previous value undefined for nested fields in afterChange (#14582) (d60ea6e)
- default values inconsistent between Local and REST APIs (#14556) (8f7ef35)
- findGlobalVersionByID id type (#14534) (99ed0e5)
- localized block fields (#14587) (2295c89)
- add secondary PDF mimeType validation and tests (#14529) (ce479ab)
- unlock access not being correctly denied when using a where query (#14585) (f63e34e)
- error when calling jobs.handleSchedules when there are no schedules defined (#14519) (072cb97)
- changing the language of the admin panel does not work for "radio" and "select" fields. (#14569) (bb520d6)
- inject custom translations into supportedLanguages in sanitization (#14549) (d7f1ea2)
- db-mongodb: localization transforms on nested localized fields (#14600) (6070d8d)
- db-mongodb: findVersions/findGlobalVersions not respecting limit of 0 (#14573) (43dcf84)
- graphql: avoid errors with sort as empty string (#14594) (fad476d)
- next: turbopack error when using db-d1-sqlite package (#14558) (bd6decf)
- next, ui: show status "changed" in List View (#14555) (565680d)
- plugin-form-builder: expose formSubmissionID as a variable to be used in emails (#14429) (ad74386)
- plugin-mcp: correctly uses local access controls (#14457) (fc2becf)
- richtext-lexical: urls being wrongly encoded by incomplete URL validation (#14557) (2cb0c59)
- storage-r2: respect data.prefix in handleUpload path construction (#14485) (454d0d3)
- ui: error on inserting new documents on uploads with hasMany (#14567) (fd44d2b)
- ui: save button becomes disabled after failed save with draft validation (#14584) (6fda71a)
- ui: invalid req.locale shows incorrect data (#14537) (f29a07f)
โก Performance
๐ Refactors
๐ Documentation
๐งช Tests
- move draft validation tests from form-state to field error states test suite (#14599) (e1f07ff)
- run cpa against create-next-app latest and canary (#14583) (cca97c6)
- 21x faster versions int suite (#14510) (844f99f)
๐ Templates
โ๏ธ CI
๐ก Chores
- add .worktrees to .gitignore (87f2bd9)
- fix serverExternalPackages errors in monorepo (#14535) (e76da3f)
๐ค Contributors
- Kendell (@kendelljoseph)
- Jarrod Flesch (@JarrodMFlesch)
- Patrik (@PatrikKozak)
- Paul (@paulpopus)
- German Jablonski (@GermanJablo)
- Jessica Rynkar (@jessrynkar)
- Sasha (@r1tsuu)
- Sam (@damnsamn)
- Alessio Gravili (@AlessioGr)
- Tobias Odendahl (@tak-amboss)
- Elliot DeNolf (@denolfe)
- Jens Becker (@jhb-dev)
- Sean Zubrickas (@zubricks)