v3.58.0
payloadcms/payloadv3.58.0Sep 30, 2025by denolfe
AI Summary
A major release introducing the Ecommerce Plugin and Template (beta), the Payload SDK for type-safe API access, and native support for Cloudflare D1 and R2 storage adapters.
Key Highlights
- Ecommerce Plugin and Template available in beta
- New Payload SDK package for type-safe REST API queries
- New Cloudflare D1 SQLite adapter
- New Cloudflare R2 storage adapter
- 1-click Cloudflare deployment template
New Features
- Ecommerce plugin and template
- Payload SDK package
- New Cloudflare D1 SQLite adapter
- New Cloudflare R2 storage adapter and template
Full Release Notes
## [v3.58.0](https://github.com/payloadcms/payload/compare/v3.57.0...v3.58.0) (2025-09-30)
## 🚀 Features
### Ecommerce plugin and template ([#8297](https://github.com/payloadcms/payload/issues/8297)) ([ef4874b](https://github.com/payloadcms/payload/commit/ef4874b))
The [Ecommerce Template](https://github.com/payloadcms/payload/tree/main/templates/ecommerce) and Plugin is now ready in beta, you can get started by running the Payload CPA command below
```
pnpx create-payload-app my-project -t ecommerce
```
Full docs are available on our [website](https://payloadcms.com/docs/ecommerce/overview)
### Payload SDK package ([#9463](https://github.com/payloadcms/payload/issues/9463)) ([92a5f07](https://github.com/payloadcms/payload/commit/92a5f07))
Allows querying Payload REST API in a fully type safe way. Has support for all necessary operations, including auth, type safe `select`, `populate`, `joins` properties and simplified file uploading. Its interface is _very_ similar to the Local API.
```ts
import { PayloadSDK } from '@payloadcms/sdk'
import type { Config } from './payload-types'
// Pass your config from generated types as generic
const sdk = new PayloadSDK<Config>({
baseURL: 'https://example.com/api',
})
// Find operation
const posts = await sdk.find({
collection: 'posts',
draft: true,
limit: 10,
locale: 'en',
page: 1,
where: { _status: { equals: 'published' } },
})
```
### New Cloudflare D1 SQLite adapter, R2 storage adapter and Cloudflare template ([#12537](https://github.com/payloadcms/payload/issues/12537)) ([99043ee](https://github.com/payloadcms/payload/commit/99043ee))
You can now deploy directly to Cloudflare using our [1-click template](https://github.com/payloadcms/payload/edit/main/templates/with-cloudflare-d1) or click the deployment button below
[](https://deploy.workers.cloudflare.com/?url=https://github.com/payloadcms/payload/tree/main/templates/with-cloudflare-d1)
### 🐛 Bug Fixes
* ensure blocks filterOptions are awaited ([#13960](https://github.com/payloadcms/payload/issues/13960)) ([41aa201](https://github.com/payloadcms/payload/commit/41aa201))
* sanitize collection labels to inherit defaults when only a partial config is provided ([#13944](https://github.com/payloadcms/payload/issues/13944)) ([1752043](https://github.com/payloadcms/payload/commit/1752043))
* avoid relying on `Function.prototype.name` to detect react components ([#13931](https://github.com/payloadcms/payload/issues/13931)) ([4652bd0](https://github.com/payloadcms/payload/commit/4652bd0))
* **next:** static live preview url corrupt after save ([#13949](https://github.com/payloadcms/payload/issues/13949)) ([3c4f8a3](https://github.com/payloadcms/payload/commit/3c4f8a3))
* **plugin-multi-tenant:** properly localize labels ([#13943](https://github.com/payloadcms/payload/issues/13943)) ([2cc34d1](https://github.com/payloadcms/payload/commit/2cc34d1))
* **richtext-lexical:** editor re-mounting on save due to json key order not being preserved in postgres ([#13962](https://github.com/payloadcms/payload/issues/13962)) ([6a2e814](https://github.com/payloadcms/payload/commit/6a2e814))
* **ui:** query preset where field not displaying array values ([#13961](https://github.com/payloadcms/payload/issues/13961)) ([9248fc4](https://github.com/payloadcms/payload/commit/9248fc4))
* **ui:** move collection description below title in document view ([#13946](https://github.com/payloadcms/payload/issues/13946)) ([ae34b6d](https://github.com/payloadcms/payload/commit/ae34b6d))
### ⚙️ CI
* add `@payloadcms/sdk` to publish list ([#13964](https://github.com/payloadcms/payload/issues/13964)) ([f9743b4](https://github.com/payloadcms/payload/commit/f9743b4))
* add cron to activity notifications [skip ci] ([#13959](https://github.com/payloadcms/payload/issues/13959)) ([6d995ff](https://github.com/payloadcms/payload/commit/6d995ff))
* proper path for activity notifications [skip ci] ([2514e4d](https://github.com/payloadcms/payload/commit/2514e4d))
* activity-notifications debug inputs ([ba33f2f](https://github.com/payloadcms/payload/commit/ba33f2f))
* github activity slack notifications ([#13955](https://github.com/payloadcms/payload/issues/13955)) ([4562df7](https://github.com/payloadcms/payload/commit/4562df7))
### 🏡 Chores
* update templates and docs links ([#13971](https://github.com/payloadcms/payload/issues/13971)) ([d7888df](https://github.com/payloadcms/payload/commit/d7888df))
* rename activity notifications workflow ([f7b1b7b](https://github.com/payloadcms/payload/commit/f7b1b7b))
* **sdk:** add README ([#13975](https://github.com/payloadcms/payload/issues/13975)) ([2e1fb57](https://github.com/payloadcms/payload/commit/2e1fb57))
### 🤝 Contributors
- Elliot DeNolf (@denolfe)
- Sasha (@r1tsuu)
- Paul (@paulpopus)
- Patrik (@PatrikKozak)
- Alessio Gravili (@AlessioGr)
- Jacob Fletcher (@jacobsfletch)
- Jarrod Flesch (@JarrodMFlesch)
- Luke Sandberg (@lukesandberg)