Choosing the right CMS is essential if you want to build a website with longevity. Making the wrong choice could result in a site that lacks the flex to grow and adapt; frustrating your team and ultimately becoming a complete headache.
For a long time, we were loud and proud advocates of Craft CMS as it fit our clients’ needs perfectly. But as time moves on, so does our idea of what makes a good CMS. And for Function & Form, that means rejecting classic server side websites in favour of modern, progressive web apps, which require a new type of CMS...
For those unfamiliar with the term, ‘headless’ is the practice of decoupling a back end system such as a CMS from the website itself. This is usually done by populating a Javascript-based website with content fetched from the CMS via API. The result? Increased interactivity and a more dynamic browsing experience because you’re no longer relying on the server to generate the website's HTML – it all happens in the browser in real time. Pretty cool right? You don't really need to know the technicalities of this but if interested, here's an article on the subject.
There are many headless CMS examples on the market, such as Hygraph, Contentful and Strapi and in true Function & Form style we set out to test them all to ensure we were bringing our clients the best in the market. We developed a scoring system that looked at the following criteria:
- Flexibility
- Content manager experience
- Developer experience
- Reliability
- Hosting
- Support
- Pricing
When examining all of the above, Sanity came out as the clear winner for us. But we’re nothing if not honest, and although we’re thrilled with the results it’s bringing our clients’, we’ve written a no-holds-barred Sanity CMS review below to share our experience of the strengths and weaknesses of this dynamic content platform.
Update - 24/10/23:
Since posting this review, members from the lead development team at Sanity, and even the Co-Founder, have responded to me, showing a real commitment to solving some of the pain points I mention in this article. They also seemed to truly value the feedback which I think is fantastic. Thank you Sanity – I continue to be a strong supporter of what you are doing and I look forward to seeing how it grows and improves.
Sanity CMS
Unlike other CMS, Sanity is not specifically designed for websites. It’s content agnostic, meaning it’s designed to host, manage and serve content in any way, for any purpose, whether that’s for digital signage, software, elearning tools or websites. The core philosophy is that by structuring your content as data it’s no longer limited to a single purpose, and you open up the possibilities of its usage as your business grows.
Here's an example:
Let's say you have a website which starts out as a SaaS marketing platform. The website will likely have a list of features, product descriptions and pricing structures. With an old CMS you may have structured your content by website pages. While this may seem logical, you're limiting your content potential, since this structure only makes sense for that particular website. With a modern methodology using Sanity, you structure content so that it can be used for much more than just a website – for example, pricing could also be injected into the software itself for upgrade widgets, or product descriptions and USPs can be used for other digital marketing collateral such as email or digital signage — this results in guaranteed consistency, business-wide, by centralising your content to a single source.
How flexible is Sanity CMS?
Sanity is a React based JavaScript framework that enables developers to build out an extensive schema of content types which you can customise and manage in the Sanity Studio web application. This means Sanity has an infinite amount of flexibility which makes it incredibly powerful. However, this doesn’t mean it’s free from issues. Truthfully, we’ve found that it takes us more time as an agency to set up our default requirements for use with web than with a CMS like Wordpress, which would have off the shelf plugins, such as:
- SEO tools
- Managing 301 and 302 redirects
- Generating a website sitemap
A few years down the line, having now built quite a few Sanity sites, we’ve created multiple repurposable components to meet these requirements with the added benefit of being able to build them exactly as we want them. This means, now that we’ve undertaken this bit of extra work upfront, we’re actually in a far better position than we would have been using off the shelf plugins. Flexibility is Sanity's biggest strength and gives our clients a futureproof platform that truly evolves, adapts and grows with them.
Overall score for flexibility: 80/100
The Content Managers Experience
While I'll say usability is somewhat down to the developer’s ability to think logically and their understanding of UX best practices, there are some inherent UX issues with Sanity itself which cannot be ignored.
Speaking candidly, my impression is that Sanity has put developer experience over end-user experience. And considering it's the end user (the client) who is most likely footing the bill, this is a problem. Some key features we've gotten used to using in other CMS like Craft, Sanity does seem to lack. Here are the main issues I’ve come across in terms of usability:
- Content cannot be imported via CSVs without a developer — a common example of this need, is to upload redirects as a CSV file in bulk. Feature request on GitHub here.
- Warnings in the CMS are not user friendly and only show ‘coded snippets’, which can be confusing for content managers. This is particularly annoying to me as I firmly believe the CMS should be designed for non-technical users. Feature request on Github here.
- Image uploads cannot be broken up into folders/directories. This means you’re left with a disordered dump of all assets ever uploaded ever and if your sites are big as some of ours, this results in thousands. This is actually my biggest frustration with Sanity and I am a bit surprised it's been overlooked. In most other CMS, image fields can be configured so that they automatically upload images to a specific directory based on variables. This way you could use things like section ID or url slug to create directories with. For example, an image path might look like /clients/advatek/hero-image.jpg. Feature request with more detailed explanation here.
In general, I still believe Sanity’s benefits outweigh its shortcomings, but I am hopeful these changes will be made as they are significant. As both a developer and UX designer, these issues are particularly apparent to me. So for me, the Content Manager experience is where Sanity needs to put the most work in to stay ahead of the market.
Overall score for content management experience: 50/100
How user friendly is the developer experience?
As you may have guessed, the developer experience is unparalleled. Unlike other CMS which have to be set up via a GUI (Graphical User Interface) which is slow, Sanity can be rapidly configured with very straightforward JSON-based schema files. The main benefit of this is that schema files can be cherry-picked from previous projects and simply placed into new ones, making repurposing super simple. It also means the schema configuration can be maintained in a Git repository, ensuring versioning is easy to maintain.From a developers perspective, Sanity is an absolute dream.
The empowerment Sanity gives our developers, is ultimately passed on to our clients by tailoring a CMS to their needs much more easily than we could with a standard CMS like Craft or Wordpress. This is especially beneficial as clients grow and evolve.
Overall score for developer experience: 95/100
How reliable is Sanity CMS?
We’ve been working with Sanity for a couple of years now and so far we’ve been impressed with the reliability. We haven't experienced any noticeable down time and considering Sanity has been adopted by some major enterprise level organisations (which seems to be their primary target market), I’m pretty confident that their servers are well maintained.
Obviously it’s hard to say this with total conviction until we’ve worked with Sanity for more time, but my gut feeling is that they’re here to stay. We’re also familiar with many fellow agencies who have adopted Sanity as their CMS of choice and the numbers seem to be increasing at pace.
Overall score for reliability: 90/100
How well does Sanity’s hosting perform?
One of the biggest reasons we adopted Sanity was to remove the need for maintaining backend servers ourselves, which you have to do with CMS like Wordpress or Craft CMS.
Sanity has fantastic hosting out of the box, which is really easy to deploy via the command line. It performs incredibly well and we’ve found that since switching to Sanity, all our sites now perform 97% and above in lighthouse page speed scores. It goes without saying that this is a big win for our clients.
The only issue I’ve found in this space is that you can’t add your own domain to the CMS studio or asset CDN while using their hosting. This isn’t a major problem, but it is a little disappointing considering many clients expect to be able to have their CMS hosted under a subdomain of their organisation. I have heard recently that V3 Sanity does support embedding the studio into your site, but by the sound of it this means it needs to be embedded to the front end and seems a bit hacky. Full disclosure — I haven’t looked into this extensively yet.
Overall score for hosting: 80/100
How helpful is Sanity Support?
Sanity’s documentation is very well structured and nine times out of ten covers all we need in terms of support. However, when we do have a specific request, Sanity has fallen short. They currently rely on Slack for support requests with no ticketing system. What’s even more frustrating about this is even business tier customers, paying $949 a month, are subject to the same system. Yes, I typed that correctly — $949 a month. Personally, I think that’s extremely expensive and if I was paying that much, I’d expect a 24 hour team of support reps plus a dedicated account manager, not just a slack channel.
So far most of my support queries in Slack have gone unnoticed due to the volume of messages they receive. As a result, I gave up on their Slack channel long ago. Sanity's lack of dedicated ticketed support is pretty hard to ignore. With our previous CMS, which was $150 per year, we had dedicated email support; people who always responded within 24 hours and were incredibly helpful. Sanity does, have a Github repository for submitting bugs and feature requests but unfortunately, most of the feature requests and bugs we’ve submitted so far, as of writing this, have been unanswered or unsolved.
Here are a few examples:
- Items disappear from Array fields, only when viewed via a tab, since upgrading to latest Sanity studio #4687
- Frequent occurrences of published documents being wiped, with no historical versions retained #4404
- Order of array list items frequently switches arrangement/order after publish #4500
- Nested list items do not match the structure in the editor, and instead drop to a new parent list item when returned as portable text #4542
- Unknown field warning lacks readable information from reference fields, for content editor to fix and apply when structural changes are made #4585
- Modal interfaces often don't work or respond to any interaction, requiring a full refresh for them to work #4596
- Import and export data via CSV within the GUI (without any developer experience needed) #4660
- Ability to set sub directory file paths on image or file fields to keep the media browser clean and contextualised to each field #3871
- Unable to use enter key to confirm document deletion, in confirmation modal #4972
- Ability for clients (end users) who are not developers to bulk edit or delete documents #4971
Although this lack of support for low to mid level requests is frustrating, in Sanity’s defence I will say that whenever I’ve seen someone post a high-priority bug in Slack they do seem to act on it quickly. I personally haven't experienced any of these myself which is why I can’t comment on it first-hand.
Overall, my impression is Sanity does respond well to urgent or straightforward issues, but for anything else, you may have to wait a long time without paying thousands of dollars* per month.
* I have no idea specifically how much as they say you have to contact them to get enterprise pricing. But considering that the tier below is nearly $1,000 a month without dedicated support, I expect enterprise will be drastically more.
Overall score for customer support: 40/100
How competitive is Sanity's pricing structure?
Sanity’s pricing structure is hard to get your head around. For single user, small projects it’s free. Conveniently, this can be enough for some of our smaller clients. The next level up is $99 per month, which feels pretty standard for a CMS with hosting (this is the level where the majority of our clients sit).
So far, so normal. However, after this things get a little mind-boggling. To unlock some pretty standard features, you need to pay a whopping $949 per month. Yes… a month, not a year, which to me feels like an astronomical price jump. And believe it or not, the monthly fee of $949 still doesn't include all features I'd expect out of the box; not even a hosting SLA — meaning even for that price, Sanity still doesn't agree to meet a minimum hosting uptime.
Although Sanity’s pricing model feels pretty crazy, the $99 per month tier works for the needs of 99% of our clients, and therefore works for us. But we have just had to accept that some key features are unobtainable. But it does seem they are missing some key mid tier pricing options.
Overall score for pricing: 50/100
What’s the verdict?
In my opinion there are certainly a few things that Sanity really needs to work on. But for us, when compared to alternatives on the market, Sanity’s pros really do outweigh its cons. And as it’s relatively new, I’m optimistic that they’ll take user feedback on board and make improvements in support, pricing and CMS user experience.
There’s no such thing as a perfect world, or CMS, but Sanity certainly works for us. And while we’ll always keep a lookout for new and improved CMS, we’re happy to recommend Sanity to our valued clients.