Utopia Tech
Engineering5 min read

The Cloudflare Blog – Brought to you by EmDash

You likely noticed the recent redesign of the Cloudflare Blog. We added dark mode, modernized the look and feel, and made a lot of other small improvements along the way. What you might not have noticed – well, except for those who are more terminally online – is that the redesign was part of a much bigger migration project. On Wednesday, August 12, we moved the blog to EmDash

UT

Utopia Tech

August 24, 2026 · 5 min read

Share

You likely noticed the recent redesign of the Cloudflare Blog. We added dark mode, modernized the look and feel, and made a lot of other small improvements along the way. What you might not have noticed – well, except for those who are more terminally online – is that the redesign was part of a much bigger migration project.

On Wednesday, August 12, we moved the blog to EmDash , a content management system (CMS) built especially to work on Astro and with Cloudflare. We’ll take you into the migration story – what we learned and how EmDash got better – as well as into the benefits we’re already seeing from a new platform. We are Customer Zero At Cloudflare, Cloudflare itself is Customer Zero.

This means that we use our products. And – in use – we make them better for ourselves and our customers. This is a very real cultural value at Cloudflare.

The burden of proof is on you if you want to use an external vendor. Why can’t that team support you, what gaps are there, why can’t those gaps be filled, and are those “gaps” true requirements? This preference is even enshrined in our internal engineering standards, known as our Codex.

We don’t just build products for others; we build them to run Cloudflare itself. We are our own first, most demanding customer. We validate scale, security, and usability on our own massive infrastructure before a paying customer ever touches the product.

If a product breaks, it breaks us first. This forces us to fix issues immediately, ensuring that by the time a feature reaches the enterprise, it has already survived the harshest production environment on earth. With the launch of EmDash and some limitations with our current CMS vendor, we knew that we’d likely be the Customer Zero for EmDash internally at Cloudflare.

Customer Zero in Action When we began our initial migration conversations, we started with two main questions: Does EmDash work for us? Can EmDash scale? Does the platform work?

Our first question was the most broad, does EmDash work for us ? This is something you’d want to know broadly about any new platform, but especially one that’s pre-1. 0.

To answer this question, we ran through a bunch of common user flows, such as: Publishing and unpublishing a post Authoring a new post Scheduling a post Adding media items By and large, EmDash held up pretty well to these usability tests. The gaps we found were generally related to: The sheer scale of the Cloudflare Blog ( media , content entity search , and bylines ) Nuances around localization , SEO , and Content Security Policies (CSPs) Usability features for the admin editor – especially ones that might delay the publishing of a post – such as easier findability for custom HTML blocks , bugs in the in-entity content editor , and keeping the formatting toolbar in view for longer posts .

The biggest oversight we found was around scheduled posts , which didn’t work until EmDash version 0. 19. 0.

This gap was understandable given the early version of EmDash, but it was also definitely something we didn’t want to be finding out after the scheduled time for a post. Can EmDash scale? Our biggest concerns were whether our proposed EmDash setup could handle the traffic we saw on the Cloudflare Blog.

The traffic pattern to our blog is incredibly varied. Normal load sits in the neighborhood of 75 requests per second (RPS), but also spikes up to over 5,000 RPS. Some of these spikes line up with the publishing times of new posts, meaning those posts went viral and attracted a lot of attention.

Others happen during all points of the day and night, which likely means folks are sending some extra traffic our way, just to see what happens. Performance also matters for our systems (and our readers). Cloudflare is a web performance company, after all, so the speed at which a page loads becomes incredibly important.

With those two concerns in mind, we built out some scenarios using k6 , an open-source performance testing tool: Ramp : Where we gradually increase requests up to triple the prod baseline and then cool down. Breakpoint : Where we ramp from 0 to 100 RPS over 10 minutes, stopping when something breaks. Burst : Where we throw an immediate traffic load of 7,000 RPS and see what happens.

For each of those scenarios, we evaluated: Availability: Failure when more than 0. 01% of HTTP requests lead to 5xx errors, meaning the application couldn’t handle the traffic. Latency : P95 latency : Failure when more than 5% of responses exceed 500ms.

P99 latency : Failure when more than 1% of responses exceed 1000ms. Armed with these tests – and a lot of internal discussion and data points – we came to our production architecture: EmDash, running on a Cloudflare Worker Running behind the new Workers Cache (we believe as the first major site to do so) Using the new EmDash object cache built on Workers KV, which the EmDash team built specifically for our use case.

Using Cloudflare’s new, first-party Hyperdrive integration with PlanetScale . The multiple layers of caching we put in place play a key role in making the blog both fast and resilient. In the diagram below, they are ordered from top to bottom by proximity to the user: With this setup, we’re typically serving 99.

5% of static files from a cache and 70% of requests from a cache, improving frontend performance and decreasing load on the database. Once we had that architecture in place, we could start thinking about the frontend redesign as well. Frontend redesign Beyond updating the backend architecture, the migration offered us the perfect opportunity to bring the blog's interface into alignment with Cloudflare’s updated visual language.

We rebuilt the frontend experience using patterns established by the Kumo design system , creating visual and structural consistency between the Cloudflare homepage, dashboard, and marketing sites. The result is a cohesive reading experience that feels like a natural extension of the broader Cloudflare ecosystem.

Originally published at blog.cloudflare.com

Share
▸ Want a deeper look?

Talk to an architect about applying this to your stack.

60-minute technical evaluation, no obligation. We'll map the ideas in this article to your environment.

Skip to main content