For the last 5+ years, I have been an independent frontend architect focussed on improving site speed and scalability for various high-traffic websites. Back in mid-2021, I re-architected the Next.js frontend at one of my clients. At the same time, this client was having issues with their in-house CMS. Despite me being a frontend heavy guy, they trusted me to build their CMS solution. This meant determining whether we build something custom in-house or select a customizable headless CMS framework. It also involved in me selecting the right CMS framework and then leading the CMS implementation.
That experience introduced me to Strapi and provided me the experience to implement Strapi customizations. Since then, I have worked with multiple teams to cater to similar CMS specific requirements.
As a result, I now continue to work on frontend performance and scalability for some teams while also implementing complicated CMS customization requirements at other places!
When selecting a CMS framework, the single biggest point of contention is the following:
Is this thing going to be able to cater to my current and future requirements? Would it ever lead me into a dead end?
While there’s no simple answer to this, I often request teams to identify their absolutely non-negotiable requirements from the perspective of all the involved stakeholders (devs, content team, marketing team, etc). And then, evaluate the CMS capabilities against those requirements.
In my experience, I have found Strapi:
During all my Strapi implementations, I have come across 2-3 requirements from teams that I found to be absolutely not doable with Strapi.
I have also interacted with some teams where all their requirements are absolutely non-negotiable (eg: how they would like to navigate around the Admin UI, how the media upload form UI should look like, etc). I recommend such teams to build an in-house CMS.
Here’s the list of posts I have written from my experiences on customizing Strapi. I’m hoping it will help others evaluate if Strapi can be customized to cater to their requirements:
I originally wrote this post based on my first experience with Strapi. In it, I listed how I found various Strapi customizations easy or complicated to implement.
Strapi and similar headless CMS frameworks need to be as customizable as they can be. But, having a large number of customizable options also causes a lot of confusion (what to chose when?). This post attempts to address this specific issue.
Modifying the Admin UI for Strapi’s core plugins is fairly complicated. I used this post to describe how something like that can still be achieved.