“That's it! I'm done with Webflow! It's been nothing but a nightmare. We're moving to a headless CMS, and we're doing it now. No more wasting time!”... is what could have easily been heard about two months ago in our office, after (yet again) discussing whether to make a move to a headless CMS for our company website or not.
In reality, the discussion was much longer and much more boring to sum up here. But what is true, is that for the past few months we have been working hard to revamp our website after growing frustrated with Webflow, and we finally launched it! So, after completing this strenuous path, we decided to share the journey insights with you.
A short history of what we tried and why it was time to move on.
So, as evident from the title, we of course used Webflow, but we also tried out WordPress, as well as hard coding our website using React and considered a few other alternatives. However, each of these options was in some way too limiting for our needs.
Hard coded website
- Took too long to set up.
- Difficult to edit content.
- Can’t outsource the editing work to a non-technical team.
Webflow
- Limited by the selected theme.
- It requires more technical understanding than expected - when editing the content, you can easily change something on one page that changes the layout, or some other design aspects on other pages as well. This was at least in part a problem with the theme we were using, but Webflow did not help either.
- There are some live preview issues.
- Localization was not built-in until very recently.
- The customization is very hard and a lot of things were taken out of our hands (performance, fine-grained SEO, lazy loading, etc.).
WordPress
- Performance is subpar.
- Localization issues in the headless version.
- Bottom line: If you are using WordPress as a template it works fine but as a headless CMS it mostly sucks because of subpar API support.
We also considered Squarespace, Wix and Framer, and although it is possible to use them as headless CMS, they are also quite limiting. So we decided to find a suitable headless CMS, meaning we could use Next.js (our beloved framework) for frontend development and develop a completely custom website, but still have a content management system, which allows a relatively simple input and editing of content.
What we were looking for:
Based on our experience we decided to go for a suitable headless CMS for managing the content of a Next.js-based landing page, allowing full customization and seamless integration. Other requirements we had were also support of custom sections or components that emulate a purposely primitive website builder, rich text editor support, user-friendly admin interface, SEO support, multi-user support, media hosting and easy backups and restoring.
We conducted quite an extensive research when it came to choosing the right solution for us. As this was long enough for a whole separate blog post, we decided to post it here:
![zerodays](https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Forganization%2Fprofile_image%2F8603%2F70b6113f-d2d4-4468-993c-ca9a42e965b0.png)
![](https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1416019%2Fe6b057e6-a1c4-43a8-b6c4-5dec4d978016.jpeg)
The Hunt for a Perfect Headless CMS
Žiga Patačko Koderman for zerodays ・ Jul 3
The solution
In the end, we (web)landed on Payload because of its superb integration with Next.js - our technology of choice for web development.
This approach allows us to:
- Have absolute control over performance.
- Play around with SEO and analytics on a lower level than with other solutions.
- Have a great experience for the content editors.
- Build a tailored website including great animations and easter eggs.
- Use our favorite libraries and tools along the way (Framer Motion, Tailwind CSS, shadcn/ui among others - take a look at our Next.js template on GitHub).
The results speak for themselves.
So far, we are loving it, but what we love even more is the new website, built by our team of talented developers. Check it out!
Here are also some before and after shots, so you can compare the improvement for yourself:
Landing page before:
Landing page after:
About Us page before:
About Us page after:
Visualization of our development process before:
Visualization of our development process after:
Services page before:
Services page after:
Contact form before:
Contact form after:
Top comments (29)
Site looks good, but you may want to re-check your scores?
You may have run the desktop checks by mistake (desktop checks are pointless, any site can get 90+ for speed). Run the mobile tests instead. 💗
You were right - and thanks for reaching out to us. We've gone through the webpage and speed it up a bit.
It was mostly about built-time optimizations and tweaking some configs (mostly Sentry, we still have some issues on that side of things - see sentry-javascript#4712.
Now the score is around 75 on mobile and 100 on desktop - still not great, but respectable.
Will update the blog accordingly. Here are the links to the reports: mobile and desktop.
My impression is that reports can vary by location/your own network. I think there are tools that can run similar reports from standardized locations.
Yes, it is quite finicky. But it is at least some sort of an indication. On the other hand, you must not optimize just for the score here but for your actual users of the website.
Thanks for the feedback, good point, working on it! 🎯😄
Good website but I am just curious why you were going with the NextJS? Is it because devs are familiar with it, because it is popular or there are some other arguments?
This is content-heavy website and I don't see why not using Astro for it. It also integrates just fine with PayloadCMS.
Astro is great, no doubt. It is just that we have an entire dev pipeline set up around NextJS. Do you use Astro at your end? Would you recommend we try it out?
I find your reasoning valid - if you have the whole pipeline already done, why reinventing the wheel.
I use both Astro and Next, depending if the project is more content-heavy or more app-like (Astro for content, Next for app).
On the last Astro project I did, I used the island component architecture, its ridiculous how easy it is. You basically have Astro components (it looks like html template where you can pass props) that are static and you can just inject react/solid/svelte/vue/whatever components that are dynamic. Use nanostores with local storage for global state if you need it and that's it. SEO is also easy to setup. Like Next it also has dynamic routing (ex: products/[product].astro).
For data you can use JSON, Markdown, headless CMS, pocketbase, firebase... you get the picture.
On that project Lighthouse is 100, gtmetrix is 100% A grade over all statistics, time to first paint is under 200ms, around 600ms to fully functional page. I am talking about marketing website with lots of products, images and product specifications, adding products to cart, contact form that receives products from cart, inline validation and whatnot.
I recommend you to try it on some small side project to check it out to see if it fits your usual use cases.
Will do, Astro seems to tick quite a lot of checkboxes :)
Im interested in that Astro knowledge @pozda did you learn everything through docs + building? Ty!
@eddsaura - That's the way I learn/try new things, so yeah, a lot of documentation reading, building what I need and fidgeting with already available themes on Astro's website - this provides accelerated understanding on different patterns and setups.
Astro islands and nanostores are very easy to understand from the documentation.
I agree, that would be interesting.
Wow, this website is so modern. I like it!
Let's goooo!
Great case, Payload CMS rocks
Thank you for sharing your story! I suppose there are many companies going through this rabbithole...
Great experience! Thanks for sharing!
Try opening the page on slow connection. The first page view has some flickering which you might want to remove.
Huh, thanks for reporting it. Will check. There is still a few things we need to iron out
Fixed! Thanks for telling us
Nice looking site and I liked reading your thought process. There seem to be some color contrast issues, so you could boost your accessibility by fixing those.
Saludos crack. La verdad, se ve genial tu website. Me gusta mucho el estilo y la diagramación.
Pero tengo que estar en desacuerdo con lo que hablas de rendimiento en Wordpress. Las métricas que generan tu website, tranquilamente se pueden llevar al 98%-100% (Desktop y Mobile) en PageSpeed creando el mismo website en Wordpress haciendo uso de correctas prácticas de construcción.
Y esto es utilizando un hosting económico compartido.
Con un hosting de mejor calidad, Cloudflare y WordPress. Se puede lograr websites con un rendimiento por debajo de 1.5s en MOBILE.
Solo es cuestión de conocer las buenas prácticas de construcción dentro de la herramienta.
Saludos!
I mean, it's so good looking I would let it load.
Is there a loading screen example of before and after?
This looks amazing, well done!
not gonna lie, Ziga, the website is so sleek and feels intuitive 😀. I'm curious though—your team seems like the kind I would love to work with.
What would it take to join you?
I'm curious about whether you considered just a standard CMS vs. headless?
Standard CMS would lock us into a whatever frontend technology it uses. We wanted to stick to what we know best, which is Next.js. And Payload simply won 😁 you can read more in this blog, though it only considers headless ones.
Do you have any specific CMS in mind?
To be honest - I like the old page better (sorry)
Wait nevermind, the site looks better than the screenshots
I agree, that would be interesting.
Nice article. But there's a scrolling issue on my end. Sometimes the page cannot be scrolled with mouse's scroll, and it works fine with touchpad's scroll.
Huh, thanks for reporting - will check
Some comments may only be visible to logged-in visitors. Sign in to view all comments.