v3.67.0
payloadcms/payloadv3.67.0Dec 5, 2025by denolfe
AI Summary
Adds groupBy support to query presets and reworks guest cart access control in the e-commerce plugin.
Key Highlights
- GroupBy support now saved and restored in query presets.
- Guest carts enabled with reworked access config in e-commerce plugin.
- Fixes for missing hooks and upload admin types.
Breaking Changes
- plugin-ecommerce: add ability to enable guest carts with reworked access config
New Features
- GroupBy support to query presets
- Guest carts with reworked access config
- Fix missing beforeInput and afterInput properties in UploadAdmin
- Fix missing afterOperation and beforeOperation hook calls
- Fix sanitized versions type
- Fix multi-tenant getGlobalViewRedirect exports
- Fix autosave not queued while background process is in flight
Full Release Notes
## [v3.67.0](https://github.com/payloadcms/payload/compare/v3.66.0...v3.67.0) (2025-12-05)
### 🚀 Features
* add groupBy support to query presets ([#14808](https://github.com/payloadcms/payload/issues/14808)) ([2b7aa7a](https://github.com/payloadcms/payload/commit/2b7aa7a))
* **plugin-ecommerce:** add ability to enable guest carts with reworked access config ([#14565](https://github.com/payloadcms/payload/issues/14565)) ([90c92f4](https://github.com/payloadcms/payload/commit/90c92f4))
---
**GroupBy Support for Query Presets** - Query presets now save and restore `groupBy` state when switching between presets. Previously, groupBy settings would persist across preset switches and weren't saved as part of the preset configuration. [#14808](https://github.com/payloadcms/payload/pull/14808)
<img width="711" height="684" alt="Preset creation with group-by added" src="https://github.com/user-attachments/assets/5fe6ee88-6ed7-40f6-b190-df6b2e89460c" />
---
**Guest Carts (plugin-ecommerce)** - Enable guest users to create and manage carts without authentication. Carts created by guests are secured with a generated secret stored in local storage. Configure with `allowGuestCarts` (enabled by default). Also adds `isLoading` status to all hooks for conditional UI state.
[#14565](https://github.com/payloadcms/payload/pull/14565)
```ts
// Before
ecommercePlugin({
access: {
adminOnly,
adminOnlyFieldAccess,
adminOrCustomerOwner,
adminOrPublishedStatus,
customerOnlyFieldAccess,
}
})
// After
ecommercePlugin({
access: {
adminOnlyFieldAccess,
adminOrPublishedStatus,
customerOnlyFieldAccess,
isAdmin,
isDocumentOwner,
}
})
```
🐛 Bug Fixes
- add missing beforeInput and afterInput properties to UploadAdmin type (https://github.com/payloadcms/payload/issues/14775) (https://github.com/payloadcms/payload/commit/22a0255)
- add missing afterOperation and beforeOperation hook calls (https://github.com/payloadcms/payload/issues/14778) (https://github.com/payloadcms/payload/commit/e9cd2a5)
- sanitized versions type was incorrect (https://github.com/payloadcms/payload/issues/14810) (https://github.com/payloadcms/payload/commit/51c951f)
- plugin-multi-tenant: moves getGlobalViewRedirect from utilities to rsc exports (https://github.com/payloadcms/payload/issues/14817) (https://github.com/payloadcms/payload/commit/1340818)
- ui: autosave not queued while background process is in flight (https://github.com/payloadcms/payload/issues/14805) (https://github.com/payloadcms/payload/commit/14f042f)
- ui: ensure block error css only gets applied to the affected block (https://github.com/payloadcms/payload/issues/14826) (https://github.com/payloadcms/payload/commit/7520140)
- ui: missing translation support in SelectMany component (https://github.com/payloadcms/payload/issues/14819) (https://github.com/payloadcms/payload/commit/8fa91a5)
⚡ Performance
- cpa: use AST for templates (https://github.com/payloadcms/payload/issues/14648) (https://github.com/payloadcms/payload/commit/bad6680)
⚙️ CI
- clean up bug report template for auto-labeling (https://github.com/payloadcms/payload/commit/ebee8e1)
🏡 Chores
- claude: add coding patterns and best practices section (https://github.com/payloadcms/payload/issues/14829) (https://github.com/payloadcms/payload/commit/c5d8e68)
- deps: bump @types/react and @types/react-dom to 19.2.1 (https://github.com/payloadcms/payload/issues/14815) (https://github.com/payloadcms/payload/commit/d56796b)
- deps: bump next to 15.4.8 in root and test dirs (https://github.com/payloadcms/payload/issues/14811) (https://github.com/payloadcms/payload/commit/1c3417d)
⚠️ BREAKING CHANGES
- plugin-ecommerce: add ability to enable guest carts with reworked access config (https://github.com/payloadcms/payload/issues/14565) (https://github.com/payloadcms/payload/commit/90c92f4)
This PR introduce a breaking change into the plugin as it was necessary
in order to provide more secure guest carts.
🤝 Contributors
- Paul (@paulpopus)
- Jake (@jacobsfletch)
- Jessica Rynkar (@jessrynkar)
- Elliot DeNolf (@denolfe)
- Patrik (@PatrikKozak)
- Jarrod Flesch (@JarrodMFlesch)
- Jens Becker (@jhb-dev)