Payload CMS Release: 3.15.0

Tag Name: v3.15.0

Release Date: 1/7/2025

Payload CMS LogoPayload CMS

Payload CMS is a modern, self-hosted headless content management system built with TypeScript, Node.js, and MongoDB. It's designed specifically for developers who want full control over their content management system while maintaining a powerful admin interface for content editors.

TL;DR

Payload CMS v3.15.0 brings significant improvements with new features like sub-task support in workflows, query parameter pass-through for document views, and preference reset functionality. This release includes important bug fixes for PostgreSQL migrations, UI improvements, and enhanced TypeScript support. It also addresses issues with the rich text editor, relationship fields, and storage adapters, making the CMS more robust and developer-friendly.

Highlight of the Release

    • Added support for running sub-tasks from within tasks for more complex workflow automation
    • Improved UI with preference reset functionality and better handling of relationship fields
    • Fixed PostgreSQL migration issues with proper schema name handling
    • Enhanced TypeScript support with better type definitions and strict mode compatibility
    • Added warning when deploying to Vercel without proper storage adapters configured

Migration Guide

Upgrading from v3.14.0 to v3.15.0

This release doesn't contain breaking changes, so upgrading should be straightforward:

  1. Update your Payload dependencies:

    npm install @payloadcms/[email protected]
    # Update any other Payload packages you're using
    npm install @payloadcms/[email protected] @payloadcms/[email protected]
    
  2. If you're using PostgreSQL:

    • The release includes fixes for PostgreSQL migrations, particularly for non-default schemas
    • If you experienced issues with migrations in previous versions, this update should resolve them
  3. If you're deploying to Vercel:

    • Be aware that the CMS now warns if you have upload collections without storage adapters
    • Consider implementing a proper storage adapter like @payloadcms/plugin-cloud-storage
  4. For TypeScript users:

    • The release includes improved type definitions, particularly for strict mode
    • If you were using workarounds for type issues, you may be able to remove them now

Upgrade Recommendations

This release is recommended for all users as it contains numerous bug fixes and quality-of-life improvements without introducing breaking changes.

Priority: Medium

  • For PostgreSQL users: High priority if you've experienced migration issues
  • For Vercel deployments: Medium-high priority for the improved storage adapter warnings
  • For TypeScript developers: Medium priority for improved type definitions

The upgrade process should be straightforward with minimal risk, as this is primarily a maintenance and enhancement release.

Bug Fixes

Database Fixes

  • Fixed PostgreSQL migration issues by adding missing schema name and quotes to SQL statements
  • Improved handling of undefined schema name fallbacks in relationships migration
  • Fixed issues with localized arrays and blocks by generating new IDs to prevent errors in PostgreSQL

UI Improvements

  • Fixed relationship fields not updating correctly when collection is changed in drawer dropdown
  • Ensured list drawer does not change underlying step navigation
  • Fixed issue where sorting would reset column preferences
  • Properly reflects hook changes in UI after document updates
  • Fixed drawer component styling with missing closing bracket

Rich Text Editor Fixes

  • Fixed formatted inline code resulting in incorrect markdown export
  • Made rich text div container optional for better component reuse
  • Fixed issue with opening inline block drawer on mount
  • Improved JSX converter function type to support block types in strict mode

Other Fixes

  • Fixed handling of withoutEnlargement for undefined height or width in image resizing
  • Added proper handling of path in server field component prop types
  • Fixed Vercel Blob storage adapter to return 404 when file is not found instead of 500
  • Ensured .env and .env.example file modifications occur before git initialization in CPA
  • Extended type all to the locale type definition in request objects
  • Improved safety of findConfig to handle undefined paths

New Features

Task Enhancements

  • Added support for running sub-tasks from within tasks, allowing for more complex workflow automation
  • Sub-tasks are properly tracked in job logs with parent-child relationships

Query Parameter Support

  • Document view now passes through query parameters to find operations
  • Makes query parameters accessible in hooks, enabling features like custom branch selectors

Preference Management

  • Added support for resetting user preferences via the admin UI
  • New button in the account view allows users to reset preferences without database access

Vercel Deployment Warning

  • Added warning when deploying to Vercel with upload collections missing storage adapters
  • Helps prevent common deployment issues with file uploads

Security Updates

No significant security fixes were included in this release.

Performance Improvements

Type System Improvements

  • Enhanced TypeScript support with better type definitions
  • Added support for strict mode in JSX converter functions
  • Exported RunInlineTaskFunction type for better developer experience

UI Performance

  • Improved handling of column preferences and sorting to prevent unnecessary resets
  • Better management of form state to properly reflect server-side changes

React Compatibility

  • Loosened React peer dependencies in live-preview-react package to support React v16.8.0 or later
  • Removed instances of React.forwardRef in templates and examples, simplifying component types

Impact Summary

Payload CMS v3.15.0 is a feature-rich maintenance release that enhances developer experience and fixes numerous bugs. The addition of sub-tasks in workflows enables more complex automation scenarios, while improvements to the UI address several pain points for content editors, particularly around relationship fields and preference management.

PostgreSQL users will benefit from critical fixes to migration scripts, especially those using non-default schemas. The improved TypeScript support enhances developer productivity with better type definitions and strict mode compatibility.

The warning system for Vercel deployments without proper storage adapters will help prevent a common deployment issue, saving developers troubleshooting time. React compatibility improvements in the live-preview package make it more versatile across different React versions.

Overall, this release represents a solid improvement to Payload's stability, usability, and developer experience without introducing breaking changes.

Full Release Notes

v3.15.0 (2025-01-07)

🚀 Features

  • allow running sub-tasks from tasks (#10373) (08fb159)
  • warn if deploying to vercel and any upload collection missing storage adapter (#10391) (22c4dee)
  • next: pass through query params from document view to find operations (#10343) (4a15b86)
  • next: adds support for resetting preferences (#10304) (1cade17)

🐛 Bug Fixes

  • extends type all to the locale type definition in req (#10399) (eadce5e)
  • increase safety of findConfig (#10400) (f629709)
  • handle withoutEnlargement for undefined height or width (#10078) (d212733)
  • allow to set maxDepth: 0 for join fields, improve join field JSDoc (#10336) (ba228dd)
  • copy to locale with localized arrays and blocks generate new IDs to prevent errors in postgres (#10292) (c7b3204)
  • adds path to server field component prop types (#10330) (e97c43e)
  • cpa: ensures .env & .env.example file modifications occur before git initialization (#10312) (3847718)
  • db-postgres: handle undefined fallback for adapter.schemaName in relationships migration (#10384) (1525cc6)
  • db-postgres: added missing quotes and schema name to sql statement in v2-v3 migration (#10322) (556b8ed)
  • email-resend: add reply_to to the API when sending emails (#10407) (c7f21fc)
  • live-preview-react: allows react peer deps of v16.8.0 or later (#10328) (f2fab39)
  • next: live preview tab did not display custom edit view components (#10412) (ef7191b)
  • richtext-lexical: make div container optional (#10383) (7fc6227)
  • richtext-lexical: formatted inline code resulted in incorrect markdown export (#10413) (827c75a)
  • richtext-lexical: modify JSXConvertersFunction type to support block types in strict mode (#10398) (d772b2b)
  • richtext-lexical: open inline block drawer on mount (#10318) (5997aa1)
  • storage-vercel-blob: return 404 when file is not found (#10327) (d68a1ea)
  • ui: drawer component missing closing bracket in style calc (#10411) (ab53aba)
  • ui: sort resets columns (#10402) (a83a430)
  • ui: make relationship fields update the collection when it is changed in the drawer dropdown (#10338) (be84ad7)
  • ui: properly reflects hook changes in ui (#10268) (3ea1d39)
  • ui: ensures list drawer does not change underlying step nav (#10339) (b44aade)

📚 Documentation

🧪 Tests

  • fixes flaky localization e2e once and for all (#10406) (5991a2e)

📝 Templates

  • fix nested docs url generation for categories (#10403) (398b609)
  • use cross-env in the plugin template to achieve compatibility with Windows (#10390) (c1abd16)
  • prevent plugin template from including nested next folder in git (#10364) (0ce7c66)
  • bump for v3.14.0 (#10324) (3d5b9f0)

⚙️ CI

  • scripts: create draft release with release script, cleanup [skip ci] (6dcf817)

🏡 Chores

  • export RunInlineTaskFunction type (#10372) (1a9fba5)
  • change base image for template base dockerfile [skip ci] (daf314c)
  • deps: bumps react-datepicker to v7.6.0 to suppress react 19 warnings (#10366) (8d24528)
  • examples: set HTML dir attribute for RTL locales #10344 (#10345) (df827c0)
  • examples: remove outdated testing example (#10370) (5ba477b)
  • examples: removes all instances of React.forwardRef (#10334) (1f4790a)
  • richtext-lexical: improve block not found error message (#10348) (09d6c60)
  • templates: unpin payload packages (#10386) (422e8e3)
  • templates: removes all instances of React.forwardRef (#10331) (47e8158)

🤝 Contributors

Statistics:

File Changed290
Line Additions4,713
Line Deletions15,373
Line Changes20,086
Total Commits47

User Affected:

  • Can now run sub-tasks from within tasks, enabling more complex workflow automation
  • Benefit from improved TypeScript support with better type definitions and strict mode compatibility
  • Receive warnings when deploying to Vercel without proper storage adapters configured
  • Can now set `maxDepth: 0` for join fields for more control over data relationships

Contributors:

denolfePatrikKozakJarrodMFleschjacobsfletchGermanJabloakhrarovsaidandershermansenr1tsuujmikrutAlessioGrbratvanovDanil0v3snachomglzZhousirupaulpopusamiraryan1996