I’ve been working with CraftCMS (v3.1) + Craft Commerce for the last couple of months and initially I was pleased with it. You can do so many things with the system and the existing plugins that you would think that everything can be done with ease. Then I had to create few custom plugins. And oh boy, things started to go south quickly. So here’s my pros and cons for CraftCMS.
Short background: I was a Laravel (based on Symfony) developer for few years (around v5) and absolutely loved it. I had a pretty good relation with PHP back then but few years has passed and things has changed in me. I’ve got accustomed to TypeScript (NodeJS, Angular, Vue), C# (.NET Core) and DartLang so I decided to hop back on a PHP to see how it feels after few years of absence.
Note: This article might not be accurate for further versions.
- Flexible admin UI for creating semi-complex sites with only touching Twig templates. (Reminds me of ACF in Wordpress).
- Easy multisite environment management.
- Good file storage integration with cloud providers.
- Good fit for more frontend oriented project with scope that fits the available feature set.
- The documentation is acceptable if you are only going to use existing features and you don’t really have to touch anything else other than twig templates.
- If you are used to Yii stuff, it’s going to be easier for you to get started.
- There’s a pretty good Stackoverflow community for you to get help from (you’ll need it).
- It’s a paid CMS (with trial). This can be great for longevity (devs got the financial support) but limits the potential userbase. As a freelancer, this is a bigger down than a pro for me.
- Based on Yii so it’s going to be familiar for those who already knew it but will be strange for those like me who came from Symfony.
- It’s clearly not test driven and has many holes to say the least. And what about Commerce plugin? It doesn’t even have tests, but hey, it only handles money transactions, why would you test that.
- Real developer documentation? I had to manually go through thousand and thousand lines of code to find out how to do basic things because there’s almost no official documentation beyond Twig templates. The framework heavily relies on “PHP’s magic” which becomes a problem quickly without proper examples. At least have software architecture diagrams to get me started. (+ ElementIndex documentation?)
- Huge, monolit methods. Forget that you can reuse seemingly common code blocks. Crafts tends to have many hundred lines methods so if you need anything you better-off just copying it. Just check out those controllers.
- Unpredictable occurring slow responses.
- Admin package installation sounds great but most of the time it just freezes the whole thing. I tend to stick with the console counterpart.
- Inconsistent codebase. It’s clear that the code evolved through ad hoc needs. I cannot expect anything to be in the codebase without checking. You can think about basic things like updating element trees via a service.
I would gladly go with CraftCms for things that it already knows but would think twice if I had to add more complex custom features to it. The upcoming 4th major release will have some really neat features which I’m excited for.