Skip to content
leeveel
← Index
Nº 007 · Mar 30 · 7 min read#backend

The case for un-frameworking your CMS

We've shipped four custom CMSes this year. Here's when not to.

by John P.

++++

We've shipped four custom CMSes in the past eighteen months. Each replaced a hosted CMS that the client had outgrown, or a "headless" one whose admin UI nobody could stand to use. We're not here to tell you that's the right call by default — it usually isn't. But when it is, it's very right.

The cost of framework-free CMS is real. You're writing your own admin UI, your own image pipeline, your own draft/publish flow, your own role permissions. You don't escape that work — you choose where it lives. Outsourcing it to Sanity or Contentful is a legitimate trade. So is bringing it in-house.

What you get from owning it: an editor that fits the editor. Field types tuned to the actual content. No plugin marketplace, no version migrations, no surprise breaking changes the week before a launch. The clients who needed this most were the ones whose content team's daily workflow was specific enough that a generic CMS had been quietly costing them an hour a day.

When NOT to do this: a small content team, a generic blog, or any team that says "we just want to start writing tomorrow." Use Strapi or Ghost or Sanity. We mean it. Custom CMS is a three-week investment that pays back over five years. If your time horizon is shorter, the math doesn't work.

The math above is real, drawn from two of our clients on the same year. One stayed on a hosted CMS — the line that grows with team size, plugins, and seat count. The other moved to a custom CMS in month four, paid the spike, and then watched the line go flat. By month 14 they were even. By year three the gap is the difference between a quiet quarterly review and a yearly "do we keep paying for this?" meeting.

The hidden cost of hosted that nobody mentions: editor patience. Every quarter the platform adds three features the team didn't ask for and removes one they did. The editor learns to ignore half the interface. Multiply that by every editor on the content team, every month, and the productivity drag dwarfs whatever the subscription looks like on the invoice.

The hidden cost of custom that nobody mentions: it's your problem when something breaks. We've been paged at 9pm by a junior editor who hit a race condition in our draft/publish flow that a generic CMS would have hidden behind a queue. We fixed it the next morning. A hosted CMS would have hidden the bug for a year and then surfaced it in a major version bump. Pick which kind of debugging you want.