github payloadcms/payload v3.73.0

16 hours ago

v3.73.0 (2026-01-23)

🚀 Features

Feature Details

🔥 Next.js 16 Support - Full compatibility with Next.js 16, including Turbopack HMR and build support. Requires Next.js >16.1.1-canary.35 or 16.2.0+. Templates will be updated after Next.js 16.2.0 is released. Support for cache components will follow in a future release #14456

WAL Mode Support (db-sqlite) - Enable SQLite Write-Ahead Logging for improved concurrent read/write performance. Configurable synchronous mode and journal size limit. #15278

Busy Timeout Option (db-sqlite) - Set maximum wait time in milliseconds when the database is locked, preventing SQLITE_BUSY errors in high-concurrency scenarios. #15317

Predefined Migration for blocksAsJSON (drizzle) - Migrate existing projects to use blocksAsJSON: true with a single command. Automatically updates your Payload config and generates the required migration. #15257

pnpm payload migrate:create --file @payloadcms/db-postgres/blocks-as-json

Request Handler in Live Preview Hooks (live-preview) - The useLivePreview hook (React and Vue) now accepts a requestHandler argument, allowing customization of data fetching. Useful when your frontend proxies requests or uses external middleware. #15302

Select API for MCP Tools (plugin-mcp) - Find, Create, and Update tools for Globals and Collections now support the select API, reducing token usage and aligning with Payload's existing query capabilities. #15301

Native useEffectEvent (ui) - Uses React's native useEffectEvent when available (React 19.2.0+), falling back to the existing polyfill for older versions. #15304

🐛 Bug Fixes

  • select hasMany prevent duplicate values (#15218) (f4e8990)
  • orderable fractional indexing case-sensitivity issue with PostgreSQL (#14867) (ef27ad9)
  • find distinct sort on a different field (#15233) (e95f26d)
  • conditional tabs breaking in Next.js 16 due to unstable tab id (#15270) (f5a7a00)
  • correct previousValue and value in afterChange when using seo-plugin (#15253) (b6b6bab)
  • db-mongodb: fix projection handling for relationship fields in GraphQL queries with select (#14850) (ace3447)
  • drizzle: d1 sqlite IN querying of id when any other join is present in the query (#15290) (4f5a9c2)
  • next: relationship fields with maxDepth: 0 show "Untitled - ID" in diff view (#15305) (65238c5)
  • plugin-mcp: auto-detect basePath from Payload config routes (#15189) (dbc06f6)
  • richtext-lexical: internal links render as href="#" in versions view (#15308) (ab4102c)
  • sdk: correct return types with select (#15289) (db40d7b)
  • ui: diff view columns have unequal widths for nested fields causing text misalignment (#15330) (db72a65)
  • ui: upsertPreferences did not return preferences when creating new preferences (#15321) (94d5728)
  • ui: pass the locale to reorder endpoint in orderable table (#14839) (d6bb3de)

📚 Documentation

📝 Templates

  • upgrade website template and examples tailwind to v4 (#11197) (e77f9b6)

⚙️ CI

  • prevent rate limiting in release-commenter action (#15298) (71b35fa)

🏡 Chores

  • removes never implemented readDrafts access arg on globals (#15297) (12b679f)
  • export fractional indexing utilities (#15286) (02800b0)

🤝 Contributors

Don't miss a new payload release

NewReleases is sending notifications on new releases.