WARNING: THIS SITE IS A MIRROR OF GITHUB.COM / IT CANNOT LOGIN OR REGISTER ACCOUNTS / THE CONTENTS ARE PROVIDED AS-IS / THIS SITE ASSUMES NO RESPONSIBILITY FOR ANY DISPLAYED CONTENT OR LINKS / IF YOU FOUND SOMETHING MAY NOT GOOD FOR EVERYONE, CONTACT ADMIN AT ilovescratch@foxmail.com
Skip to content

v3.63.0

Choose a tag to compare

@denolfe denolfe released this 07 Nov 15:16
· 146 commits to main since this release
5bf3bd4

v3.63.0 (2025-11-07)

🚀 Features

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
    },
  ],
}

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
    },
  ],
}

🐛 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

🧪 Tests

📝 Templates

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

🔨 Build

⚙️ 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

🤝 Contributors