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.70.0

Version v3.70.0Minor Release
Released:

January 5, 2026

Type:

New features, backward compatible

GitHub:View Release
Download TarballDownload ZIP

Release Notes

v3.70.0 (2026-01-05)

🚀 Features

  • support qs-esm sort arrays in REST API (#15065) (2ccf898)
  • richtext-lexical: adds docs page for lexical blocks, adds new lexical block component types and styles (#14971) (329115c)

Multi-Column REST API Sorting

Sort by multiple columns in the REST API using array syntax, aligning REST API behavior with the Local API. Previously only string-based sorting was supported. #15065

// Sort by multiple fields via REST API query string
// GET /api/posts?sort[0]=createdAt&sort[1]=-title
// Equivalent to Local API:
const posts = await payload.find({
collection: 'posts',
sort: ['createdAt', '-title'],
})
ts

Lexical Blocks Documentation & Component Styles (richtext-lexical)

New documentation page for Lexical blocks with comprehensive examples showing usage and customization. Also introduces new block component types and styles for enhanced rich text editing. https://github.com/payloadcms/payload/pull/14971 See the https://payloadcms.com/docs/rich-text/blocks for full details.

🐛 Bug Fixes

  • s3 plugin uploads files before validation (#14988) (502947b)
  • add beforeDocumentControls to globals generate importmap (#15036) (4468197)
  • warning during Next.js build "the request of a dependency is an expression" (#15007) (cd87ab4)
  • next: turbopack build version check not working for 16.1.1 canaries (#15005) (ab68a2f)
  • plugin-mcp: pin modelcontextprotocol/sdk dependency version to 1.24.0 (#15017) (1a9d665)
  • storage-*: allow prefix to always exist as a field via alwaysInsertFields flag (#14949) (23a8689)
  • ui: invalid sass imports to support windows - add Stylelint to prevent regression (#15028) (c66e953)

🧪 Tests

  • fix console logs not appearing on vitest (#15008) (e3879bf)
  • ensure vitest vscode extension env variables match CI (#15009) (f6248f9)
  • migrate from jest to vitest eslint plugin, remove remaining jest references (#14997) (418375c)

🏡 Chores

  • adds comment in image component (#14663) (6459ebc)
  • bump nodemailer to 7.0.12 (security) (#15062) (aa61b31)
  • narrow down files affected by vitest lint rules (#15000) (b97a063)
  • claude: fix typo in claude skills access control advanced file (#15060) (5cbdca1)
  • deps: bump dnd-kit (#15083) (07c36a3)

🤝 Contributors

  • Alessio Gravili (@AlessioGr)
  • Sean Zubrickas (@zubricks)
  • Vincent Vu (@rubixvi)
  • Paul (@paulpopus)
  • Jessica Rynkar (@jessrynkar)
  • Jonathan Elmgren (@jonathanelmgren)
  • Patrikbjoh (@Patrikbjoh)
  • Anders Semb Hermansen (@andershermansen)
  • Riley Langbein (@rilrom)
  • Elliot DeNolf (@denolfe)
Browse All ReleasesView on GitHub