- regenerates the lockfile - upgrades pnpm from v8 to v9.7.0 minimum - ensures playwright does not import payload config. Even after our importmap revamp that made the payload config server-only / node-safe, I was getting these `Error: Invariant: AsyncLocalStorage accessed in runtime where it is not available` errors in combination with pnpm v9 and lockfile regeneration. This does not happen with pnpm v8, however I'm still blaming playwright for this, as this does not happen in dev and we've had this specific error with playwright in the past when we were importing the payload config. Perhaps it's related to both playwright and the future Next.js process importing the same config file, and not related to the config file containing client-side React code. Making sure playwright doesn't import the config fixed it (it was importing it through the import map generation). The import map generation is now run in a separate process, and playwright simply waits for it - One positive thing: this pr fixes a bunch of typescript errors with react-select components. We got those errors because react-select types are not compatible with react 19. lockfile regeneration fixed that (not related to pnpm v9) - probably because we were installing mismatching react versions (I saw both `fb9a90fa48-20240614` and `06d0b89e-20240801` in our lockfile). I have thus removed the caret for react and react-dom in our package.json - now it's consistent
Explore the Docs · Community Help · Try Live Demo · Roadmap · View G2 Reviews
Important
🎉 Payload 2.0 is now available! Read more in the announcement post.
Benefits over a regular CMS
- Don’t hit some third-party SaaS API, hit your own API
- Use your own database and own your data
- It's just Express - do what you want outside of Payload
- No need to learn how Payload works - if you know JS, you know Payload
- No vendor lock-in
- Avoid microservices hell - get everything (even auth) in one place
- Never touch ancient WP code again
- Build faster, never hit a roadblock
- Both admin and backend are 100% extensible
☁️ Deploy instantly with Payload Cloud.
Create a cloud account, connect your GitHub, and deploy in minutes.
🚀 Get started by self-hosting completely free, forever.
Before beginning to work with Payload, make sure you have all of the required software.
npx create-payload-app@latest
Alternatively, it only takes about five minutes to create an app from scratch.
🖱️ One-click templates
Jumpstart your next project by starting with a pre-made template. These are production-ready, end-to-end solutions designed to get you to market as fast as possible.
🛒 E-Commerce
Eliminate the need to combine Shopify and a CMS, and instead do it all with Payload + Stripe. Comes with a beautiful, fully functional front-end complete with shopping cart, checkout, orders, and much more.
🌐 Website
Build any kind of website, blog, or portfolio from small to enterprise. Comes with a beautiful, fully functional front-end complete with posts, projects, comments, and much more.
We're constantly adding more templates to our Templates Directory. If you maintain your own template, consider adding the payload-template topic to your GitHub repository for others to find.
✨ Features
- Completely free and open-source
- GraphQL, REST, and Local APIs
- Easily customizable ReactJS Admin
- Fully self-hosted
- Extensible Authentication
- Local file storage & upload
- Version History and Drafts
- Field-based Localization
- Block-based Layout Builder
- Extensible SlateJS rich text editor
- Array field type
- Field conditional logic
- Extremely granular Access Control
- Document and field-level hooks for every action Payload provides
- Built with Typescript & very Typescript-friendly
- Intensely fast API
- Highly secure thanks to HTTP-only cookies, CSRF protection, and more
🗒️ Documentation
Check out the Payload website to find in-depth documentation for everything that Payload offers.
Migrating from v1 to v2? Check out the 2.0 Release Notes on how to do it.
🙋 Contributing
If you want to add contributions to this repository, please follow the instructions in contributing.md.
📚 Examples
The Examples Directory is a great resource for learning how to setup Payload in a variety of different ways, but you can also find great examples in our blog and throughout our social media.
🔌 Plugins
Payload is highly extensible and allows you to install or distribute plugins that add or remove functionality. There are both officially-supported and community-supported plugins available. If you maintain your own plugin, consider adding the payload-plugin topic to your GitHub repository for others to find.
🚨 Need help?
There are lots of good conversations and resources in our Github Discussions board and our Discord Server. If you're struggling with something, chances are, someone's already solved what you're up against. 👇

