Before we start, it's worth quickly understanding the difference between a GUI-based CMS and a code-based CMS. For this example, we're using identical methods of fetching data (API based) and discussing both benefits.
A GUI-based CMS
This type of CMS means you use a drag-and-drop editor to create a schema (the forms that make up the CMS the client edits). This has the lowest skill floor because it's easy to build with and makes up the majority market share.
They're all much of a muchness, but if you want our hot-take: they're not very good for anything more than a repeatable blog post. As soon as you want to do complex validation: E.g "I can only publish events that are in the future", they pretty much fall apart.
To compound this, there are a good few GUI-based CMSs on the market that have a lot of market share due to ongoing marketing efforts and influencer schemes but haven't really invested in improving their core product. So you can easily get suckered into using a sub-par CMS.
That being said, I will reiterate - THEY ARE GOOD FOR JUST BUILDING BASIC BLOGS.
A code-based CMS
Instead of a drag-and-drop CMS, you're manually setting up fields and descriptions using a code editor. This type of CMS is much more complicated to set up initially and requires further reading and understanding of the entire concept of structured content.
By the very nature of them being "code-based cms", they are more flexible. However, they can be built in less intuitive ways to edit. This means that, typically, you will want to ensure whoever is building a code-based CMS is experienced with understanding data structure as the threshold to get things wrong can be much higher.
Which one is Sanity?
Sanity is a code-based CMS. Why is that important? Well, here's a list of things we struggled to do on basically any GUI-based CMS and a brief description of why it's actually important for a client
Align the data from the CMS with the data on the website
The reason this matters is because as your data structure grows, the way you preview your site, the way you develop for it and the way that google interprets the site requires a significant amount of time if your data isn't paired via URL
Referencing data in an intelligent and transformative way
Okay, now you've got your data; you want to display it in a smart way. For example, maybe you only want to surface a certain subsect of blog posts to render.
E.g. "I want to create a field that only surfaces blog posts related to the current category I'm in"
For anybody that's ever tried adding icons to a CMS before, it's horrific. Imagine if you could extend the functionality of the CMS and create a simplified icon picker whilst retaining performance. It's possible.
Why do you always use it?
So we've explained the features above, but that isn't a solid enough reason to advise using the tool every time you take on a website/webapp build that hinges around a composable content cloud.
Well here's a good enough reason. I think you're getting shortchanged whenever you're taking on a CMS that isn't focused on the long term.
Websites are expensive; they generally start from approximately £7k+ but will likely be in the five-figure range. So if I were going to pay 5, figures I'd want to have my moneys worth, and not half-ass it and choose a CMS that ultimately is easier to learn just to create something I'm going to swap out five months down the line.
There's a good reason Sanity is near enough at the top of the leader and market presence.
What framework do you recommend to pair with it?
If you are looking at building a website right now, I would wholeheartedly advise using Next.js. Because it's:
- Backed by Vercel
- Unofficially/officially supported by Google
- It's fast as hell
- It's basically React but for websites
- Because it's React it can use all React libraries
- There's ton's of React libraries
- First party support of React Server Components
(this will be the industry standard soon)
There's far more than just what we've listed above. But in short, if Nike, Amazon, Tiktok, Netflix and a bunch of others here actively use and contribute... It's probably a good platform too.