At Skyward, we focus on developing Headless solutions, which make easy to deploy websites and web apps from a single source. And since the Headless CMS is hosted in the cloud, you don’t have to worry about keeping the CMS up-to-date (if you’ve ever maintained a Wordpress site with plugins, you’ll appreciate this).
From an SEO standpoint, using a Headless CMS gives performance benefits, as it’s able to directly pull raw data. Lastly, developers are able to mix and match the tools used, allowing your team to work with their preferred tech stack.
With a multitude of CMS to choose from, it may seem overwhelming to pick the one that's best for your needs (luckily for you, Dan Spratling wrote a helpful blog post on how to choose the right headless CMS for your needs).
But what about Prismic? It's currently a standard tool at Skyward, specifically for marketing websites. But Prismic is not a one-size-fits-all Headless CMS, and after an overview of the tool, we'll delve into its strengths, weaknesses, and nuances.
Developers’ Best Friends for Speedy Releases
Prismic is based on Custom Types and Slices — two components that I like to think of as being a Developer’s best friends for speedy releases.
You can think of a Custom Types as the structure of a page or component; it defines what data will be displayed, and controls whether or not that data structure can be used across the site or not (Single vs Repeatable types).
Slices, on the other hand, are reusable components that, once attached to a custom type, allow the end user to add content to the site without breaking the design. Slices can have multiple variations, allowing designers and developers to give end users flexibility and/or additional options while keeping the core design and structure of the component.
Once over the development learning curve, Slices allow for a speedy development flow.
While one Slice may look and function differently from another, the structure of the Slices are the same underneath the hood. From personal experience, when developing a slice, the most time-consuming step is applying the CSS.
The CMS - Designed for End Users without Previous CMS Experience
In Prismic, end users create content for their site by creating pages (Custom Types) and adding reusable components (Slices) to the page. Prismic’s intuitive design allows clients to hit the ground running with little-to-no training (especially if the development team implemented descriptive titles for content fields).
Prismic’s content editor is rich in features (and from the development side, the content editor can be configured for each field).
Users can link to other pages, and internal links can be assigned to specific custom types. For example, say one of the client’s Slices is developed to share a featured blog post, with a link directing to the full post. The developer can add a rule to the Slice’s link field that ensures end users only link to a blog post.
The CMS also comes with a media library for storing images, videos, and other assets (which is a standard CMS feature but worth mentioning).
In short, Prismic makes it easy-peasy for non-developers to create site content.
Prismic’s strengths, weaknesses, and nuances
Prismic’s development and end-user overviews in tow, let’s dive into specifics of Prismic’s strengths, weaknesses, and nuances. After all, no CMS is utterly perfect and there’s always room for improvement.
What Prismic does well
It’s always nice to start with the positives, and while not perfect, Prismic has a lot of pluses!
The ease of comprehension for end-users is a huge benefit. We can often handover to clients with minimal training, and they can pick up how Prismic works fairly easily.
Your team determines how much control to give end users. Fields can (and should) be configured so that end users can only add applicable content. Accessibility can be safeguarded by implementing constraints such as requiring only H1 tags for page titles and disallowing H1 tags everywhere else. Slices can be developed with multiple variations or themes to give the client more flexibility without breaking the design.
The Prismic team regularly enhances the platform with improvements to the developer's UX.
Pricing is very reasonable, especially for solo freelancers and small teams. They offer a free tier for 1 user, $7/month per repository for up to 3 users, $15/month for up to 7 users, and prices continue scaling up based on team size.
For teams that utilise a component-based development process, Prismic and Storybook is a winning combination.
Prismic’s staff are incredibly supportive helpful, and quick to answer questions.
What Prismic could improve
As with everything, there’s always room to grow, and Prismic isn’t excluded from this. Here are some of the things I think Prismic could do better at…
Prismic does not have a visual editor, which may be a dealbreaker depending on the project.
The CMS’ custom type (page) search functionality is abysmal. It doesn’t always show the most relevant result at the top, and while Prismic’s content relationship management has nice features, adding internal links to other Prismic pages can be tedious due to the additional effort it may take to locate a specific page.
Billing handover functionality does not exist, so if you transfer ownership to your clients at the end of projects, payment detail updates must be handled through Prismic support (or you have to trust your client to remove your card details, which is a huge security risk).
Pages and all other Custom Types are listed on the CMS dashboard. While you can filter and search based on the Custom Type or author, the results cannot be additionally sorted, and display the most recently updated items first. The lack of basic sorting functionality can cause frustration, especially for sites with many pages/Custom Types.
Like Custom Types, media in the media library is filterable, but folder organisation functionality does not exist - all media assets are contained in one folder, which isn’t ideal for projects with a large amount of assets.
Fields cannot be marked “required” in the CMS (except the UID field which is required by default). It’s possible for a page on the site to break if an end user publishes a page with an empty field, unless the developers are diligent in accounting for those types of situations.
Currently, deleting Custom Types is a manual hassle. However, this feature is in the works, and I appreciate that recent and upcoming feature releases are trackable on Prismic’s progress page.
There are a few features that come standard with other CMS that aren’t currently available in Prismic (block quotes and anchor tags are two missing basic features heavily requested since 2020).
The nuances that can get ugly
Developing standard page Custom Types and Slices is a straight-forward process.
However, as mentioned at the start of this article, Custom Types are not limited to defining the structure of pages — they also define the data structure of other components, for example a single-type contact form or repeatable-type team bio cards.
On the plus side, this lets developers structure data as they see fit for any rendered component.
But be careful!
Custom Types have little constraints on how they can be used which can lead to poorly structured data (and I say this from experience — live and learn!).
And speaking of data… fetching data from Prismic depends on the framework you choose. Most of the frameworks use direct API calls to pull the data. If you prefer to work with GraphQL, you can opt to develop with Gatsby. NextJS is provided with a nifty FetchLinks feature that allows most related data to easily be pulled into associated pages and components.
So, is Prismic right for your project?
Prismic has its place in the CMS world and is a viable option depending on the type of project.
For small to medium marketing sites, it’s a great tool to use. And, if the client has a blog, Prismic can function as both the CMS and blogging platform.
While large projects with hundreds of pages/Custom Types are possible to build, Prismic’s lackluster content organisation may outweigh the other benefits Prismic provides.
Another thing to consider is the relationship structure of your data. When related Custom Types have (especially heavily) nested data, developers may need to implement custom solutions to ensure nested data renders correctly.
Finally, before using Prismic, as yourself if it fits your client’s needs? Prismic is a great “starter” CMS — users with no previous CMS experience can start using it, usually with little-to-no help, right away.
But some clients need more robust features, and while you can get creative with feature solutions for Prismic, you’ll want to determine if it will be time well spent, as other CMS offer a larger range of standard features.
Final thoughts from a developer’s perspective
Because I’m a developer, and the perspective is mine. 😉
At Skyward, Prismic ended up as our de facto marketing site CMS for the past two years. We’ve used it on projects ranging in size from small to large, gaining insight from each to share with you (we’ve dealt with the headaches so you don’t have to!).
And while we still work with Prismic, we’ve started exploring other CMS options as well. Will we use Prismic for our next marketing site project? Well, that depends on the scope and requirements of the project.
If you have any questions or would like to know what’s the best CMS for you, please get in touch.