Media
Sandro Wegmann
April 28, 2025
Media

Newsletter 6 | 28.04.2025
Payload’s been cooking up tons of new features lately — maybe even too many for one newsletter (yes, another one’s coming soon 👀).

Query Presets

Since v3.31.0, Admin panel users can now save column + filter combos as presets. This makes it a lot easier to manage pre-defined filters. e.g. to only show video files in the media collection.
Before that, it was only possible to hard code specific filters using custom components and the “baseListFilter” option. Now, every editor can create and share presets!
To enable query presets, set the “enableQueryPresets: true” flag in any collection config. We’ve created a deep-dive video showcasing all features and going through config options:
It feels like Payload is catching up to the convenience features that CMSs like Contentful or Strapi offer out of the box, which is great to see!

MongoDB Performance improvements

Payload recently introduced “join” fields — virtual fields that show which documents link to a given document. Super useful, but they came with a performance cost.
For small collections with one join field, everything was fine. But in larger collections (5k+ docs, multiple joins), performance took a hit.
Version v3.26.0 fixed this — so if you're running into performance issues, definitely update and see if it helps.

Compilation speed improvements

In v3.28.0, you can now opt out of bundling server-only dependencies during development — which can significantly improve compile times (in some cases, even cut them in half). If you're starting a fresh Payload project, this is included by default. But if you're upgrading an existing one, it's worth adding the flag manually and giving it a try.
-export default withPayload(nextConfig)
+export default withPayload(nextConfig, { devBundleServerPackages: false })
Combine this with the --turbo flag to speed up your local development server (Change the “dev” script in package.json to this:)
 "dev": "cross-env NODE_OPTIONS=--no-deprecation next dev --turbo",

Plugin import export

Payload has started working on a very interesting official plugin. The Import-Export plugin!
This will allow users to import and export CSV and JSON files (+ more in the future). Currently, only the export is available, but this is already very useful. You can choose the export format, a limit, export all documents or just the ones matching current filters, and even choose the columns to be exported. Payload automatically creates an “export” collection, where exported files are stored. Try it out by running:
pnpm install @payloadcms/plugin-import-export
Then, add this to your payload config
importExportPlugin({
      collections: ['users'],
      overrideExportCollection: (collection) => {
        collection.admin.group = 'System'
        collection.upload.staticDir = path.resolve(dirname, 'uploads')
        return collection
      },
      disableJobsQueue: true, // Force export to be synchronous
    }),

Large file uploads on Vercel

Finally! Payload now supports client side uploads to work around the 4.5mb file size limits on serverless platforms like Vercel. This works for all existing official storage adapters (S3, Vercel Blob, Google Cloud Storage, Uploadthing, Azure Blob). Files are uploaded through signed URLs directly from the client to the bucket.
The setup is fairly easy:
  1. set the “clientUploads” flag to true in the s3 plugin config
  2. Whitelist your apps URL(s) in the CORS Settings of the bucket, at least for the PUT method. Watch out: some S3 storage providers (like Hetzner) do not support upload through pre-signed URLs with CORS requirements at the time of writing.
We’re grateful for any constructive feedback, so please fill out this feedback form or reach out to info@10xmedia.de
AAP Newsletter