Moving from Editor.js to Portable Text: Evolving EZ Edge into a Headless CMS

Building EZ Edge CMS started with a simple goal. I wanted a fast, lightweight Cloudflare CMS powered by Hono and HTMX.

But every CMS eventually hits the exact same wall. You need a reliable way to edit and store rich text content. For a while, I relied on Editor.js. It is a popular choice and it works somehow for basic block editing. You can type, format, and save.

However, as I continued building out EZ Edge, I realized that Editor.js was holding the project back. The data output is okay for simple web pages, but it becomes a headache when you want to parse that content across different platforms. I was exploring other options because I knew I needed something cleaner and more standardized.

That is when I decided to shift gears and embrace Portable Text.

I actually wrapped a Portable Text editor into a standalone JavaScript module called EZ Portable Text. Implementing this module did more than just improve the writing experience. It completely changed the trajectory of the entire CMS.

The Problem with Traditional Block Editors

If you want to build a simple blog, almost any rich text editor will do the job. But if you want your content to scale, the underlying data structure matters heavily.

Editor.js outputs its own specific flavor of JSON. When you try to send that data to a mobile app or a different frontend framework, you often have to write custom parsers. It works, but it feels brittle.

Portable Text solves this perfectly. Popularized by enterprise tools like Sanity, Portable Text treats content as highly structured, deeply nested JSON arrays. It does not assume your content is going to be rendered in HTML. It just provides pure, agnostic data.

I could not find a perfect lightweight module that fit my exact needs, so I built EZ Portable Text and made it the main content editor for EZ Edge.

From a Hono + HTMX Site to a True Headless CMS

Here is the most important part of this switch. Using EZ Portable Text is not just a UI upgrade. It is a fundamental architecture shift.

Before this update, EZ Edge was essentially a really cool, lightweight Hono and HTMX website builder. It was great for serving fast HTML directly from the edge.

But now that our main content is stored as strict Portable Text JSON, the doors are wide open. Because the data is so clean, we can easily expose API endpoints directly from the CMS.

This means EZ Edge now functions as a true Headless CMS.

You are no longer restricted to just the HTMX frontend. You can write your content once inside EZ Edge and expose it via an API. You can connect a mobile application, fetch data into a Next.js or Vue frontend, or feed it into a desktop app. The pure JSON payload makes it incredibly easy to render your content anywhere.

Open Source and Ready to Plug In

If you are looking for a reliable Editor.js alternative or just want to experiment with highly structured rich text in your own projects, you can check out the source code. I published the wrapper on GitHub at ez-portable-text.

Building EZ Edge CMS has been an exercise in removing bloat. By dropping heavy block editors and adopting Portable Text, we unlocked headless architecture without sacrificing the zero build times and speed of our Hono stack.

You get the power of a Headless CMS API with the simplicity of a lightweight edge deployment. That is a massive win for small developers.