Experience with CraftCMS 3


  • 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.


Choosing the unknown

Love podcasts or audiobooks? Learn on the go with our new app.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store
József Koller

József Koller

Choosing the unknown

More from Medium

Firebase upgrade from v8 to v9

Umbrella Project Elevator Pitch

Magento2: Image resize not working › Desssigner.in › Aryan Srivastava

How TomTom Maps APIs Enable Just-in-Time Construction Material Delivery