KeystoneJS logo
Payload logo

From KeystoneJS to Payload

We are the KeystoneJS to Payload migration experts

Last verified:



Challenges with KeystoneJS

Key pain points

The biggest challenge with KeystoneJS is that it hands you all the responsibility that a managed CMS would normally handle. Deployment is entirely on you, and the documentation around production hosting, Docker configuration, and scaling is thin. We've seen teams struggle to go from a smooth local development experience to a reliable production setup, especially if they don't have dedicated DevOps support. The admin UI Docker image alone can balloon to over a gigabyte, which is a headache for containerised deployments.

The community around Keystone is significantly smaller than competitors like Strapi or Payload. That means fewer tutorials, fewer plugins, and slower answers when you hit an edge case. The ecosystem of ready-made integrations is almost non-existent, so you'll be building most things from scratch. For an agency working on client projects with deadlines, that time cost adds up quickly.

Content editors also tend to have a harder time with Keystone compared to more polished alternatives. The admin UI is functional but feels utilitarian, and non-technical users often need more onboarding than you'd expect. There's no visual editing, no preview infrastructure, and no real content workflow features like drafts, publishing schedules, or approval chains without building them yourself. If your client's content team needs a CMS they can pick up and run with, Keystone usually isn't the answer.

Help me migrate


Deployment complexity in KeystoneJS

Deployment complexity

Self-hosting is the only option, and the docs don't hold your hand. Getting Keystone into production requires real infrastructure knowledge, and the large Docker image sizes make it worse.

Small community in KeystoneJS

Small community and ecosystem

Compared to Strapi or even Payload, the community is much smaller. Fewer plugins, fewer tutorials, and slower support when things go wrong.

No built-in content workflows in KeystoneJS

No built-in content workflows

There are no turnkey drafts, scheduled publishing, or approval chains. Keystone provides field primitives that can be assembled into publishing workflows, but you need to wire them up yourself.

Dated admin UI in KeystoneJS

Admin UI feels dated

The admin panel is functional but lacks the polish and UX of modern CMS interfaces. Non-technical editors often find it confusing and need more training.

No visual editing in KeystoneJS

No visual editing or live preview

There's no way for editors to see content in context before publishing. You'd need to build your own preview infrastructure, which is a significant engineering effort.

Scaling challenges in KeystoneJS

Scaling requires significant effort

Running Keystone under high traffic means managing session stores, reverse proxies, and server resources yourself. It doesn't scale as smoothly as cloud-native CMS alternatives.



Benefits of Payload

Key advantages

Payload is genuinely strong tech. It’s fast, open-source, developer-first, and perfect if you want full control over your content model. The Next.js integration is smooth, the admin UI is clean, and it’s one of the more flexible modern CMS options if your team prefers to build things exactly the way you want them.

Just know that if you want actual features like visual editing, Vercel Blob storage, image handling, etc, you’ll be paying extra for the privilege. If you’re considering Payload or thinking about migrating into (or out of) it, reach out to us. We can help you figure out whether it’s the right stack or guide you toward a cleaner, saner (Sanity) setup.

Start my migration


Integration with Next.js applications

Integration with Next.js applications

Payload works natively with Next.js, giving you clean data fetching and a smooth development flow. It removes the usual CMS friction so you can build fast, modern frontends without hacks.

Fully customizable

Fully customizable

Everything is configured in code, which means you can tailor the CMS to your exact use case. You define the logic, workflows, and behaviour.

Supports custom data models

Supports custom data models

You can design any content structure your project needs, from simple documents to complex relational models. This gives you full control over how content is organised and delivered.

Intuitive admin UI

Intuitive admin UI

Payload’s admin panel is simple, clean, and fast. Editors can create, update, and manage content without training or digging through confusing menus.

Custom plugins and APIs

Custom plugins and APIs

You can extend Payload however you like. Build custom fields, integrate external services, or add your own API routes. Perfect for teams that need deeper project-specific functionality.

Built-in authentication

Built-in authentication

Payload comes with user auth, roles, and access control baked in. No external auth service needed, and you can customise permissions to match your editorial workflow.





Common questions

KeystoneJS to Payload migration FAQs

Answers to the most common questions about KeystoneJS to Payload migration

What makes migrating from KeystoneJS difficult?
KeystoneJS stores data through Prisma, so the database layer is well-structured and easy to export. The harder part is replacing everything Keystone doesn't give you. Most Keystone projects have custom-built preview systems, publishing workflows, and access control logic that are tightly coupled to the Node.js backend. Rebuilding those features in a new CMS takes planning. We typically budget 4 to 8 weeks for a Keystone migration depending on how much custom infrastructure the team has built around it.
Why do teams move away from KeystoneJS?
Deployment complexity is the number one reason. Teams love Keystone during local development, then hit a wall getting it reliably into production. The Docker images can balloon past a gigabyte, the docs don't cover production hosting well, and there's no managed hosting option. The small community compounds this problem. When you hit an edge case, there are fewer people who've solved it before. Content editors also struggle with the admin UI, which lacks visual editing, live preview, and built-in publishing workflows that competing platforms ship by default.
How do we extract our content from KeystoneJS?
Since Keystone uses Prisma ORM, your content lives in standard PostgreSQL, MySQL, or SQLite tables with clean schemas. You can export directly from the database using SQL dumps or Prisma's query API. The content model is defined in your TypeScript codebase, so mapping fields to a new CMS is straightforward. We write automated scripts that handle the data transformation, including resolving relationships between lists and migrating file references. For a project with 20 to 50 Keystone lists, extraction and transformation usually takes 1 to 2 weeks.
How hard is it to migrate away from Payload CMS?
Payload stores content in MongoDB or Postgres, so extracting your data is straightforward compared to proprietary platforms. The real work is restructuring your content model for the target CMS and rebuilding any custom access control logic you've written. We typically complete Payload migrations in 3 to 6 weeks depending on how much custom backend logic is involved. The code-first nature of Payload means most of the content model is well-documented in your own codebase, which actually makes migration planning easier.
What are the main reasons teams leave Payload?
The most common reasons we hear are infrastructure fatigue and ecosystem gaps. Payload requires you to manage your own database, hosting, auth, and scaling. Teams that chose Payload for its developer flexibility eventually realise they're spending more time on DevOps than on content features. The Figma acquisition in 2024 also shifted priorities, and some teams feel the platform's direction became less predictable. Visual editing and live preview still require significant custom engineering compared to platforms that ship them natively.
What does a Payload to Sanity migration cost?
For a typical content site with 200 to 1,000 documents, we estimate 4 to 6 weeks of work. The bulk of effort goes into rebuilding the admin experience and frontend integration, not the data transfer itself. Payload's MongoDB exports are clean, so content migration scripts run reliably. The cost depends heavily on how much custom auth logic and access control you've built, since that needs to be rebuilt in the target platform's permission system. We scope every migration individually after reviewing your Payload config.


Get in touch

Fill out the form below and we'll get back to you