github payloadcms/payload v3.63.0

one day ago

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

Don't miss a new payload release

NewReleases is sending notifications on new releases.