Wordpress, Strapi or PayloadCMS for Startup Projects?
When should your new project use Wordpress, Strapi or PayloadCMS as a content management system? What are the pros and cons of each of these CMSs?
At Kadasolutions we heavily rely on different kinds of content management systems. You might be wondering why are we using CMSs that heavily?
- Headless nature is appealing
- Most clients / users might already be familiar with working with some type of content management system.
- Authentication and authorization is built right into most CMSs. (Ex.: Admin, Editor, Reviewer, etc... roles can be configured and customized)
- We ship multi-language applications, and the translations are fully managed inside the CMS! Which gives our clients easy access to the translations and they can easily update / change the content on demand.
- Most CMSs offer a great API.
- Content is organized into a structured format which can be easily discovered, stored by our clients.
When it comes to content management systems, the choice is not easy. Currently there is an abundance of CMSs out there, each of them offer better and better features. Some of them are free and open source, some of them are paid and they cost a pretty penny, and we tried them all!
What makes a CMS "good"?
We believe that a CMS should above all be extensible. Why is extensibility so important? Well for starters you are replacing your entire "backend" with it. We should be able to extend it in any manner we see fit:
- Adding new API endpoints
- Adding new field types to existing collections
- The CMS should use existing open source solutions which can be used independently outside of the CMS (ex.: rich text editor components, or other components)
- Plugins: either community plugins or official plugins from the CMS's maintainers or plugins that we can write ourselves
- Should be easily deployable anywhere. (This most often is not the case with paid CMS providers)
- Must have a GraphQL API.
- Good Headless support
Let's have a look at the top three contenders in the CMS space one by one!
Wordpress
Wordpress is by far the oldest CMS out there. In fact most websites these days are still being powered by Wordpress. Being the oldest CMS it is not without its quirks. Lets have a look at some of the benefits and also the downsides of using Wordpress:
Pros of Wordpress
- Being one of the oldest CMSs, Wordpress, is one of the most frequently used / preferred systems out there.
- It also has a large community of users and developers.
- Wordpress also has an extremely rich ecosystem of free and paid plugins.
- Extremely flexible and composable fields.
And pretty much that's where the list ends for Wordpress. What are the downsides to using Wordpress?
Cons of Wordpress
- Old and clunky UI: not very intuitive for users
- The API used by developers when used as a Headless CMS is quite terrible (both REST API and GraphQL API)
- The database structure behind Wordpress is quite awful
- Since some plugins are maintained by the community those can also be abandoned by the community
- PHP and vanilla JavaScript is needed for extensibility
Overall Wordpress was a good CMS back in the days, but maybe the time has come to replace it with something else?
Strapi
Strapi is another CMS solution which has gained popularity over the years. Strapi shares quite a few traits with Wordpress. Let's have a look at what benefits Strapi offers:
Pros of Strapi
- More modern UI built in React
- A typical Headless CMS.
- Extensible using their Plugins API: built Admin panel plugins using React and backend plugins using Koa and Knex
- Comes with some unique fields by default ex.: Slug field which can be connected to another specific field within the given entity
- GraphQL and REST API
- Can be deployed using Docker quite easily and runs well on Cloud Run
What are the downsides of using Strapi?
Cons of Strapi
- The GraphQL and REST API responses are wrapped inside attribute and data fields, which often cause issues with GraphQL clients such as Apollo Client because of cache normalization
- Clunky plugins and build system
- More and more community plugins are being discontinued or abandoned (ex.: EditorJS Strapi plugin was just archived, Algolia Integration with Strapi plugin was also abandoned etc...)
- Dynamic Zones cannot be nested → This makes creating dynamic content quite difficult and often times leads to "field fatigue" especially since Strapi doesn't support conditional fields either
- No conditional field support: cannot create fields on a specific condition which furthers the "field fatigue" (field fatigue is when unnecessary fields appear in the entity regardless of the entity's state)
- Doesn't use field level localization, instead Strapi duplicates entire entity on a locale basis
- Uses custom rich text editor instead of Slate.JS or Lexical
PayloadCMS
The one CMS to rule them all. PayloadCMS contrary to its name is not only a CMS, but also an "Application Framework". At Kadasolutions we started adopting PayloadCMS about roughly half a year ago and it has been an amazing journey ever since! Our only regret is that we haven't done it sooner!
In our experience Payload ticks all the boxes that we have been looking for in a CMS:
Pros of PayloadCMS
- End to end type safety thanks to TypeScript
- GraphQL API
- Extensible: in all aspects: API level, Plugin level, field level
- Amazing Plugin support both from the community and official aspect
- We also expanded Payload's API with our own Translation
- Our Clients love working with Payload: it's fast, intuitive, minimal and straight to the point for them
- Easy to deploy using Docker and any platform where you can run containers (Cloud Run on GCP)
- Uses Lexical Rich Text Editor or Slate.JS whichever you prefer
Here are some of our favorite Plugins for PayloadCMS: