When it comes to CMS, the modern market has already stepped so much that the choice is becoming increasingly difficult. There are so many options for each individual case that it makes your head spin.

We, in Mad Devs, to be more precise our site has been working with one well-known CMS for a long time. But lately, our team occasionally encounters some problems which make the process of working with content on the site heavier. Therefore, it was decided to test and study another CMS - Strapi.

Spoiler - a complete move to a new system never happened. But here is this material, which will tell you about what we faced and what you need to know before working with Strapi.

How the selection process took place?

To begin with, the main criterion was that the CMS was open source and headless, as it met the needs of our unique site structure. We had several meetings and discussions, after which the team was able to determine a list of more specific requirements that would meet the needs of every professional who works with the Mad Devs site.

Requirements for the new CMS:

  • Ability to use сustom blocks;
  • Redirect settings;
  • Ability to use repurposing resources (media files);
  • Large community;
  • Ability to use Meta Tags, Markup;
  • Ability to back up data;
  • Distributed access to individual parts (components settings), preferably with the preservation of editing history.
  • Page mapping;
  • Different URLs - Each page should have its own path;
  • UI creation pages (assemblies), especially when searching for (components, resources);
  • Possibility to edit components library (deletion, editing), reuse of components.
  • Developed API (direct access to the database - requests, direct access to resources stored in the internal structure;
  • Easy work with the context blocks (creating, editing, deleting);
  • Possibility to deploy Headless CRM as a premise.

This helped us identify a list of potential candidates among all the CMS that would meet these requirements.

We have identified the following list of potential working solutions for our project that are on the market:

  1. Strapi
  2. Headless WordPress

After researching, we discovered what was decisive in our choice.

With the help of the JAMstack, Strapi provides a set of backend functionalities for apps and websites that are built using JavaScript, API, and prerendered Markup. It can work with various databases and frameworks such as Nuxt, Next.js, and Gatsby. So it allows Strapi to be one of the most flexible and adaptable headless CMS on the market.

Let's take a closer look at this CMS.

What is Strapi

Strapi is a headless, fully customizable open-source CMS. It's written in 100% Javascript. This makes it one of the most user-friendly for front-end developers. Strapi is based on a plugin system and is a flexible CMS whose admin panel and API are extensible. Every part of this system is customizable according to your use case. Strapi also has a built-in user system for detailed management of what administrators and end users have to access to.


  • Open source project.
  • The system is deployed locally on the company's own server to ensure data security.
  • CMS can be customized and scaled through a system of plugins.
  • There are many built-in features: a convenient administrative panel, authentication and access control, tools for working with content, an API generator, and more.
  • The system has a lot of variants of use. It can be used for static websites, mobile applications, corporate resources, and e-commerce.

Strapi TechStack:



Node JS

Node JS

Strapi is used to create ultra-fast modern websites and mobile applications. The increased productivity is achieved by using Headless CMS in conjunction with a static website generator and maintenance via CDN.

This month Strapi got 50K GitHub stars and became one of the top 150 most popular repositories among the 28 million public on GitHub.

Several organizations have already used Strapi to create and manage their websites, blogs, and mobile applications: IBM, Walmart, Societe Generale, etc.

We also found a similar case while researching.

Specific example of migrating to Strapi

One of the leading fixed Internet providers and mobile communications in Ukraine, Kyivstar has over 26 million subscribers. It also has over 1 million fixed broadband users. In 2019, the company migrated its main website and app to a modern, more performant stack using Strapi.

The company chose to use Strapi due to its large community and ability to be deployed locally. It also provides a powerful page builder tool that can be used to customize its own page design.

The old version of the website had over 6,000 pages, and in 9 months, Kiyvstar migrated over 1000 to the platform and used it for 80% of the traffic.

To make the changes to the website work seamlessly, they created a proxy setting in the framework that allows redirecting the users to the new page. This method ensures that the links stay the same, but it also allows control of where the page opens. After creating a new page, then they turn off the proxy setting and leave the old one as is. This is a configuration system that allows the team to manage the changes to the website.

One of the company's features is a personal cabinet that allows users to manage their services. Before, it was built using various legacy CMSs. They migrated all of the website's components to the new platform.

As a result, they got:

  • The company's website and app are both well-designed and perform well. Over 10 million people visit the company's website every month, and the pages load fast with the help of the Strapi stack.
  • The ability to create and publish landing pages using components and previews has sped up the time it takes to market. This is because content managers can now take advantage of the platform's built-in capabilities.
  • The team is happy with the ability to customize the platform, as it eliminates the need for them to change a CMS every year. Also, since it's a flexible framework, they can easily add new features and improve the website's performance.

Taking all the above into account, we at Mad Devs started testing. The plan for writing the code base was made, and at the same time, the server with this CMS was deployed for the test release of a single page. As a sample page was chosen: https://maddevs.io/transportation/.

The work was conducted in several directions: 

  • refactoring the architecture of our project
  •  creating functionality to work with the new CMS
  • configuring and creating all the necessary entities in Strapi to meet our needs. 

During the move to the new CMS Strapi, we've revealed some shortcomings, which slowed down the process of moving to this CMS, as well as encountered some inconsistencies with our expectations.

What disadvantages does Strapi have for our case project?

So, we tried to test Strapi for our project because we were interested in increasing the performance of our website. But we faced some disadvantages for us that may be insignificant for other projects. But it is better to find out about the limitations of Strapi's functionality beforehand and then decide whether to start your own website on it or migrate an existing one, as we wanted to do.

Let's list the things we encountered.

1. No changing history

Strapi has no built-in history of changes to a particular document/page. You need to install additional plugins.

2. No component/slice previews

There are no previews for components. All components are marked with icons. With our number of different components, this becomes problematic on the content manager side.

3. Components containing images cause failures of the entire CMS

During the development of components for Strapi, we faced the fact that components containing images cause failures throughout the CMS. The error is easily repeated We've tested several versions of Strapi, and the problem was different but still persistent.

4. No separation of staging and production servers, CI/CD, and database

You will need to manually configure the process of migration from the staging database to the production database, and at the same time, you will need to solve the issue with the migration of files.

5. Installing additional plugins

Many simple actions require the installation of additional plugins. For example, you can't return all of a page's content on demand. Strapi only outputs what subcomponents are used on that page. And to solve this, you need a plugin. Moreover, installed plugins are not updated with CMS updates.

6. A large number of issues

It's worth looking at the current number of issues on Strapi's GitHub page first. There may be some challenges, although this CMS has very good potential.

Faced with these problems, we decided to conduct additional research to understand what are the most common problems developers and other companies have with Strapi.

  • It's not easy to migrate data to Strapi.
    One of the main issues with using Strapi is its lack of support for migration between environments. When creating a new entity, its permissions plugins default to not allowing access to all of your roles. However, this doesn't prevent the data from being stored in the database. Instead, you can grant access to each role to the entity's individual controllers through their UI.
    When you deploy changes or additions to a new environment, you need to either manually apply the permissions for all of the controllers or create a custom data migration solution.
  • It doesn't support TypeScript out of the box.
    The only way to use TypeScript with Strapi is through an external package, which will convert existing models to the new code. This is not an option for smaller projects, but if you're planning on building large content systems using it, you should consider using the package before starting. A replacement for this issue can be found in the npm repositories. Since the source code is already online, you can easily write your own extension for any language.
  • It’s not fully open-source.
    It's recommended to use a Pro version of the software, which includes additional features such as support for custom plugins and professional email access. Specifically, the Gold Enterprise Edition of the platform includes various advanced features, such as a Customer Success Manager, custom roles, and support with SLAs.
  • It always has to be updated.
    Due to its constantly evolving nature, it's important that you keep an eye on the updates for the latest version of Strapi. Unfortunately, this is not ideal for developers who prefer to have stable software, as it can be very inconvenient. Yes, it’s good for the ecosystem to have continuous updates, but they can be a bit off-putting for those who use large content repositories. Some of these updates introduce new breaking changes that can make it hard to maintain a production system without end-to-end testing.

To sum up 

Strapi as a CMS gets a lot of good reviews and certainly has its attractive merits. However, its functionality hasn't suited the needs of our site and our team, the site performance has grown insignificantly, and the time to fill in the content has increased significantly. But during the work on the new CMS, we found a lot of subtleties that we hadn't thought of in our project. 

We hope that thanks to this material, you can save a lot of your time if you're looking for a new CMS and your needs are the same as ours.

Svelte vs React

Svelte vs. React: Which to Choose for Your Project?

Svelte vs. React: Which to Choose for...

Svelte vs. React: Which to Choose for Your Project?

JavaScript frameworks have revolutionized the landscape of web development and equipped developers with powerful tools and standardized methodologies...

Building a simple before-after comparison slider with Vue

Building a Simple Before-After Comparison Slider with...

Building a Simple Before-After...

Building a Simple Before-After Comparison Slider with Vue.js v2

Comparing the state of any object before and after changes has always been the best tool to demonstrate the difference clearly. So here we make a...

How to configure Apollo GraphQL in Nuxt application.

How to Configure Apollo GraphQL in Nuxt Application

How to Configure Apollo GraphQL in...

How to Configure Apollo GraphQL in Nuxt Application

Good time of the day, friends!Today I want to show you how to set up Apollo GraphQl in a Nuxt application, where nuxt will take care of both client...