made with
payload
  • Showcases
  • Plugins
  • Creators
  • Tutorials
  • Templates
  • Videos

Not affiliated with PayloadCMS. Made by paul

  • Contact
  • Submit an entry
  • Releases
  • Stats
Back to Releases

v3.63.0

Version v3.63.0Minor Release
Released:

November 7, 2025

Type:

New features, backward compatible

GitHub:View Release
Download TarballDownload ZIP

Release Notes

v3.63.0 (2025-11-07)

πŸš€ Features

  • add support for polymorphic uploads (#14363) (df40d0e)
  • adds new UI option Duplicate In [Select Locales] (#13803) (53d8557)

Polymorphic Uploads

Upload fields can now reference multiple upload collections, similar to polymorphic relationships. This enables more flexible media management where a single field can accept different types of files from various collections. Works seamlessly with bulk upload and hasMany options. #14363

import type { CollectionConfig } from 'payload'
export const ExampleCollection: CollectionConfig = {
slug: 'example-collection',
fields: [
{
name: 'media',
type: 'upload',
relationTo: ['images', 'documents', 'videos'], // references multiple upload collections
},
],
}
ts

Can also be combined with hasMany:

import type { CollectionConfig } from 'payload'
export const ExampleCollection: CollectionConfig = {
slug: 'example-collection',
fields: [
{
name: 'media',
type: 'upload',
relationTo: ['images', 'documents', 'videos'], // references multiple upload collections
hasMany: true, // allows multiple uploads
},
],
}
ts

πŸ› Bug Fixes

  • use TSiblingData for previousSiblingDoc in FieldHook (#14503) (339a0c3)
  • support generic types for kv.get (#14494) (f6194c6)
  • group-by sticky pagination not rendering for virtual relationship fields (#14470) (648021c)
  • ensure importMap is reliably generated during HMR (fixes Next.js 16 issue) (#14474) (61a7095)
  • hmr not working in next.js 16 (#14462) (0231a8d)
  • disable lockedDocuments if the kv adapter uses a collection (#14453) (827c9a1)
  • drizzle: postgesql where in jsonb (#13742) (207295b)
  • graphql: sort by multiple fields (#14486) (b925d34)
  • next: withPayload wrapper next.js 16 support (#14473) (c0de75e)
  • next: version._status field queried/returned for entities without drafts (#14423) (a22dff3)
  • plugin-cloud-storage: file sizes use correct mime type (#11633) (2410296)
  • richtext-lexical: prevent unnecessary requests for inline blocks (#14522) (69408f0)
  • richtext-lexical: bulk upload drawer rendered at the wrong depth if already in a drawer (#14472) (4fd8d03)
  • ui: virtual fields disappearing from filter/groupBy dropdowns with access control (#14514) (a3c0e84)
  • ui: safely access fieldPermissions (#14458) (2393721)
  • ui: simplify UI orderable collections table by allowing only ascending order (#14433) (eba6cfc)

⚑ Performance

  • ui: avoid unnecessary remounting of DraggableSortable (#14463) (91e64b3)

πŸ›  Refactors

  • use formatNames utility for interface name generation (#14481) (39bead7)

πŸ“š Documentation

  • hooks terminology update (#13847) (245576b)
  • plugin-mcp: clarify example (#14325) (c8d6cf0)

πŸ§ͺ Tests

  • use new chromium headless browser for playwright, bump playwright (#14464) (2bb5535)
  • multi-tenant flake (#14447) (80d7781)

πŸ“ Templates

  • remove payload cloud template, remove cloud plugin from templates (#14479) (76ba2df)
  • remove outdated cloning and payload cloud information (#14484) (d4d9622)

πŸ”¨ Build

  • add kv-redis to publishList (#14416) (6420927)

βš™οΈ CI

  • speed up workflow reruns, remove run_number from build cache key (#14448) (f67d031)
  • add kv and plugin-mcp to valid PR scopes (be0943a)

🏑 Chores

  • standardize query param parsing (#14498) (3c9f56e)
  • enables folders on website template (#14116) (219fba2)
  • bump kv-redis version (ff670c0)
  • claude: update claude PostToolUse hook to only format on write (9f2adeb)
  • claude: set some sane defaults (#14445) (aa14d86)
  • claude: add analyze-issue command (#14435) (f1456a0)

🀝 Contributors

  • Sasha (@r1tsuu)
  • Elliot DeNolf (@denolfe)
  • Chris Rieckmann (@c-riq)
  • Sam Wheeler (@swheeler7)
  • Alessio Gravili (@AlessioGr)
  • Slava Nossar (@slavanossar)
  • Jacob Fletcher (@jacobsfletch)
  • Patrik (@PatrikKozak)
  • Paul (@paulpopus)
  • Tobias Odendahl (@tak-amboss)
  • Kendell (@kendelljoseph)
  • Jessica Rynkar (@jessrynkar)
  • German Jablonski (@GermanJablo)
  • Sean Zubrickas (@zubricks)
  • Violet Rosenzweig (@6TELOIV)
Browse All ReleasesView on GitHub