An honest review of Strapi

I’ve been trying to use Strapi for the past few days and from what I’ve been through, its been a terrible experience.

First off, when trying to get started, one would use a blog/guide right? Well that’s what I’ve decided to use too, and that is where the other side of this “leading open-source headless CMS” started to show. Here is a link to the blog that I’ve decided to use since I am familiar with Next.js. First off, keep in mind that in big letters it says “This article was updated to Strapi v4.”. “Good” - I though to myself, this is the version of Strapi I’m using, so everything should work nicely. Oh boy was I wrong, if you scroll down just a bit to the “Creating a new Strapi application” section, the first thing you see in the docker-compose.yml is version: '3'. “Oh no, why would that be?” - I said, since It was my first time using docker and I had no experience with it. Okay, maybe its just the docker-compose.yml version number? No, it’s litteraly the version 3 of Strapi, and as I found out later, there isn’t even a docker image for Strapi V4. I am not going to talk about the article writer using NextAuth v3 when the latest version is v4, because I think you get my point by now.

Secondly, and maybe the worst thing about Strapi is the documentation.
For 3 days (3!!!), I have been trying to extend the functionality of the users-permissions plugin by adding a new route and a custom controller. Now, it is a common thing to change user data after the user account was created, and that’s exactly what I’ve been trying to do. If you look at the documentation there is nothing about creating custom controllers for a core plugin (you can see how to create a new route in the Plugins extension section of the docs). I think by now you understand is an absolute mess, and I don’t understand how Strapi could be used by Nasa or IBM, as stated on the homepage.

I am not trying to be rude or ungrateful to the Strapi team, but just trying to shed some light on the caveats for new users wanting to create a project with Strapi.


Similar experiece for me over the last few days, infact I think I was probably working from the same guide you mention. I’ve also encountered a few other issues from the docs, although in fairness there was a warning stating they weren’t updated to V4. I’m planning to contribute and update them if I get a bit of spare time. Docs aside I’m loving Strapi, building out APIs is amazing. I guess the docs, guides etc. are in a bit of a transition phase right now. I’m surprised there isn’t an official docker V4 though.

Management wants v4 because it looks shiny & strapi communicates that v3 will no longer supported.
Development delays update until atleast migration guides or some migration tutorials are ready.

Management pressure intensifies.
Development realizes: v4 is nowhere close to the state of v3.

Stop advertising bullshit that does not work, srsly.
In functionality so far v4 is a step back.

Nope that is incorrect.
version: 3 is telling docker-compose what version to use Compose file versions and upgrading | Docker Documentation
If you want to use docker you can use my tool
npx @strapi-community/dockerize and make your own dockerfile.

There is no official V4 image for Strapi btw.
Instead of extend it use policies

But I think for the team it’s a great feedback indeed for possible optimizations on docs etc.

That’s what I did in the end :slight_smile: thanks :+1:t2:

Is it just me or the forum is dead?
I think everything is now happening in Discord. Although finding any answer there is… oh well…

I want to share my experience too.
For the last 2 weeks I’ve been coding a multi-language website that has a list of locations with some info, users can sign in to add locations to the “want to go list”. My journey learning and using strapi has been miserable, and I’m an experienced software engineer. Many strapi “features” are “bugs” to my eyes, and I’ve opened maybe 5 tickets in this week’s because Strapi v4 simply does not work, period. You’re super limited and all their blog posts are either outdated, using bad code standards or missing important points.

Example of broken things that doesn’t let me continue using strapi:

  • Translations of content types have different IDs and slugs. So if I have a location in two languages and a user adds it to “want to go” list, then switches to another language, it will not be in the list because it’s a different entry. And according to strapi, this is expected behavior.
  • Usernames are not unique. In you sign in with google, and then with github, and you have the same username, it will be duplicated in your strapi instance, and those users won’t be merged. Also expected behavior according to strapi.
  • If you create an entity and relate it to a user. When a user is registered you can’t create a new entry and link it to the user.
  • Data transfer between local and prod is broken when you have many files.
  • There’s no easy way to automate the deployments of the strapi instance with GitHub Actions, I couldn’t manage to do it.
  • The API response is full of stupid attributes and data objects.
  • GraphQL is extremely slow
  • Poor typescript support
  • Strapi doesn’t have a proper internal test suit, because I experienced updates that broke my instance.
    I could keep going…

If you’re reading this, my advice is to not use Strapi because it is not what it looks like. If you have non-CRUD operations or authentication, you’ll have to enter the hell of strapi’s middlewares and be extremely frustrated.

I’m sorry if my opinion offends the strapi team, but developers need to know that strapi is not suitable for real-life applications.