knit.dev
Published in

knit.dev

What’s the best Headless CMS?

Finding a balance between developer and content creator priorities

Introduction

At Knit, we’re often asked by startups to create websites with distinctive UIs, custom data models, and payments processing which allow startup founders (usually non-technical) to generate and edit content on the fly. In some cases, clients have outgrown an existing Wordpress solution. In other cases, the startup is simply looking for a way to create text and media driven pages for their users. Rolling a custom content management system from scratch in an environment saturated with out-of-the box solutions for these types of scenarios is usually overkill.

The headless CMS aims to provide “backend” tools necessary to support these types of sites built with modern frontends like React + NextJS or Vue + NuxtJS. However, it can be difficult to select a headless CMS technology (among more than 20!) that marries the needs of developers with those of content creators.

The Goldilocks problem with Headless CMS

In evaluating headless CMS technologies for our startup partners, we’ve found most include far too many features for the typical use case. While this might seem like an advantage, an overabundance of features in a headless CMS can result in poor or lagging documentation and/or sloppy implementation.

Headless CMSs are often marketed more towards content creators, though it’s usually left to developers to make the decision (or at least outline best options) at the end of the day.

What Content Creators Care (And Don’t Care) About

Startups looking to build a content creation platform typically have few requirements that relate to the majority of headless CMS functionality. Usually they’re focused on a single content model (i.e. a Post) with well defined fields for display on screen. It’s rare for a client to ask “Hey, can I customize this website with many variations of unbounded content?”

Here are some core headless CMS features from a content creator perspective:

  1. Easy to use editing interface
  2. Tags and SEO
  3. Guardrails against publishing potentially malformed content
  4. Roles (admin, editor)
  5. CDN (draft and publish)
  6. Preview interface
  7. Pricing

What content creators don’t want:

  1. A fully featured database editor
  2. Abstract content relations, confusing terminology
  3. Multiple ways of doing the same task

What Developers Care (And Don’t Care) About

Developer concerns are oriented around productivity. We want modern patterns and tight deployment integrations.

Developers are looking for:

  1. Clean and clear documentation
  2. High-quality API (preferably GraphQL) with robust filtering scheme
  3. Easy (relational) data modeling
  4. Conditional field logic
  5. Integration with CI/CD pipeline
  6. Extendable boilerplate examples

And the features we don’t really care about:

  1. Opinionated UI helpers
  2. Support across a vast array of development stacks
  3. Plugins (we don’t want to be locked into CMS-specific DSLs)
  4. User over-customization of content, unique slices/template types

What We’ve Tried

With the requirements described above in mind, here are 3 headless CMS solutions we’ve used to build full stack applications so far.

Storyblok

Pros:

  1. Strong integration with NuxtJS and NextJS
  2. Preview interface is the best we’ve seen
  3. Clear draft/publish states
  4. Customizable field types

Cons:

  1. Legacy code leads to API inconsistencies (UIDs != IDs)
  2. REST API means lower data specificity (overfetching)
  3. Poor documentation
  4. Price
  5. Limited support for payments integration

Final Score: 7/10

Prismic

Pros:

  1. Editing interface is modern and easy to use
  2. Universal Tags
  3. Inline content previews
  4. Responsive in-editor filtering

Cons:

  1. API uses proprietary Prismic patterns (“inspired by”, but not to spec with GraphQL)
  2. Slice Machine feature for custom types confusing for developers and content creators
  3. Confusing publish pipeline
  4. Poor support for common relational associations (e.g. one-to-many)

Final Score: 6/10

GraphCMS

Pros:

  1. Amazing GraphQL API
  2. GraphQL sandbox
  3. Editing interface is modern and easy to use (similar to Prismic)
  4. Data modeling is fast and intuitive, with incredible support for associations
  5. Universal Tags

Cons:

  1. Limited preview functionality
  2. Only supports GraphQL, could be a challenge for existing frontend systems

Final Score: 9/10

Other Options

Alternative headless CMSs we’ve looked at:

  1. Contentful is the industry leader, but pricy and feature-heavy
  2. Sanity.io is focused on the developer experience, but has a lot of new development paradigms not expressed in other headless CMSs
  3. Netlify CMS hails from a company we love, but their headless CMS is a bit barebones
  4. Strapi is something we would have considered, but GraphCMS was more attractive with its clear commitment to GraphQL

Final Thoughts

GraphCMS is the best headless CMS we’ve used so far. It’s not perfect, but seems to be focused on the right set of concerns to address both content creator and developer needs.

In the future, we’ll continue to evaluate the available options out there for what might suit each client’s unique needs.

--

--

--

Using the latest technologies to create the platforms of tomorrow. Design, build, deploy, and scale

Recommended from Medium

Help4Covid — Platform for Covid Resources

Actual footage of different kinds of Gradle Configurations

Convex: An Apprentice’s Perspective

Crazy Laravel Livewire made me easy to build my E-Commerce (Admin Panel and API) [Part 3]

Python Web Applications

Time zone for Software Developers

First Post (or is it called a story?) on Medium

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
Jeremy Tong

Jeremy Tong

Founder of Knit.Dev, Startup-Focused Software Developer

More from Medium

Building a Web Page Editor with Craft.js: Getting Set Up

i18n in Next js without sub-path or domain routing.

Create a web editor using Monaco editor, React and Node + Webpack and Typescript … How hard can it…

Best open-source headless CMS Platforms