What the hell is a decoupled CMS?
I recently wrote a blog post about headless CMS, where I run through what a traditional CMS is, and how a headless CMS differs from that. You can find it here.
While the article serves as a quick breakdown of what a headless CMS is, it doesn't talk about integrating a frontend, or presentation layer, alongside that backend/content layer. It's something I wanted to touch on separately, as teeeechnically, that combination is what I'd consider to be a decoupled CMS.
So, what is a decoupled CMS?
A decoupled CMS separates (or decouples) the backend and frontend of a website – there's one system that's responsible for content and storage, and another system (or systems) that are responsible for collating that data and displaying it to the end user.
These systems are housed sepearately – content is created and edited in the backend, and is then delivered to the frontend via an API. The frontend might use a library like Vue or React, which is perfect for coupling component-driven development with reusable content.
Although the backend and frontend function independently, the two systems are tightly woven, and are able to function as one.
This differs from a traditional CMS in the sense that a traditional CMS stores all content, images and code alike in a database, with the frontend and backend components being heavily integrated and intertwined with one another.
How does a decoupled CMS differ from headless CMS?
The terms decoupled and headless CMS are used interchangeably, and while there is a bit of overlap between the two, they're not exactly the same.
A truly headless CMS doesn't have a front-end system or include a presentation layer – it's purely a content-driven, API-first system, which you can read more about here.
The advantage of a headless CMS is that there are no limitations – you're not tied to any restrictions that come with baking in a frontend solution, or with a traditional CMS. And while a decoupled CMS comes with less restrictions than a tradtional CMS, once a frontend solution is implemented, there is a certain amount of maintenance required to keep things optimised and compatible.