· via Cloudflare blog
Cloudflare rebuilt its blog on EmDash and Astro, caching 70% of requests
Cloudflare says its blog redesign was part of a migration to EmDash, a pre-1.0 CMS built for Astro and Cloudflare Workers, with layered caching now serving 70% of requests from cache.

What happened
Cloudflare has pulled back the curtain on the recent redesign of its blog, and the visual refresh turns out to be the visible half of a much larger project. According to a post on the Cloudflare blog, the site was migrated on Wednesday, August 12 to EmDash, a content management system built specifically to run on Astro and work with Cloudflare's platform.
The redesign added dark mode, modernised the look and feel, and fixed assorted long-standing quirks. The migration underneath it is the more consequential part: a new production architecture built around Cloudflare Workers and several layers of caching. The post's own title, "The Cloudflare Blog – Brought to you by EmDash", borrows the phrasing of media sponsorship, presenting the new CMS in the style of an advertiser backing the publication.
Customer Zero, applied to a CMS
Cloudflare describes a cultural norm it calls being "Customer Zero": it runs its own products internally before anyone else, and its internal engineering standards, known as the Codex, put the burden of proof on any team that wants to bring in an outside vendor. With EmDash still pre-1.0 and its existing CMS vendor showing limitations, the blog team became the new system's first and most demanding customer.
The evaluation came down to two questions: whether EmDash worked for their workflow, and whether it could handle the blog's traffic.
Finding the gaps
Cloudflare walked through common editorial flows, including publishing and unpublishing, authoring, scheduling posts, and adding media. Overall the CMS handled these reasonably well, but the team documented gaps in three areas: the sheer scale of the Cloudflare Blog, covering media handling, content entity search, and bylines; nuances around localisation, SEO, and Content Security Policies; and admin-editor usability, such as how easily custom HTML blocks can be found, bugs in the in-entity content editor, and keeping the formatting toolbar in view on longer posts.
The biggest miss was scheduled publishing, which did not work until EmDash version 0.19.0. Understandable for an early-stage product, the team notes, but exactly the kind of thing you would rather discover before a post's scheduled time passes rather than after.
Load testing before launch
Traffic to the blog varies enormously. Cloudflare reports a normal load of around 75 requests per second, with spikes above 5,000 RPS. Some spikes line up with viral posts; others arrive at all hours of the day and night, which the team suspects is people sending extra traffic just to see what happens. Since Cloudflare sells web performance, page-load speed was treated as non-negotiable.
The team built three scenarios with k6, an open-source load testing tool: a Ramp that climbs to triple the production baseline and then cools down; a Breakpoint that goes from zero to 100 RPS over ten minutes, stopping when something breaks; and a Burst that applies an immediate 7,000 RPS for one minute, with thousands of virtual users allocated. The pass thresholds were strict. Failure was triggered if more than 0.01% of requests returned 5xx errors, if more than 5% of responses exceeded 500 ms at P95, or if more than 1% exceeded 1,000 ms at P99.
The resulting production stack runs EmDash on a Cloudflare Worker, in front of the new Workers Cache, which Cloudflare believes makes the blog the first major site to use it. An EmDash object cache built on Workers KV was created by the EmDash team specifically for this deployment, and a first-party Hyperdrive integration connects to PlanetScale for the database. The payoff, per the post: typically 99.5% of static files and 70% of all requests are served from cache, which speeds up the frontend and reduces load on the database.
The redesign itself
On top of the new backend, the frontend was rebuilt using patterns from Cloudflare's Kumo design system, so the blog now matches the company's homepage, dashboard, and marketing sites. The headline feature is native light and dark modes, a long-standing reader request, tied to system preferences alongside an explicit toggle. Accessibility guidelines were met across both themes, and the palette and code syntax highlighting adapt to either without losing legibility.
Two usability fixes stand out. The email subscription form used to sit in the top-right corner, where readers frequently typed search queries into it by mistake; it now lives in a dedicated call-to-action at the end of each post. Interior pages also gained sidebars: an "On this page" table of contents on the right that tracks reading progress through longer technical posts, and a "Discuss Online" section on the left for sharing articles and joining conversations.
Why it matters
The Cloudflare Blog is one of the most widely read developer-facing publications on the web, which makes this less a design story than a public reference implementation. A pre-1.0 CMS was dropped into a production property with wildly spiky traffic, and the gaps in scheduling, localisation, CSP handling, and editor usability were fixed under fire before outside customers ever encountered them. The architecture is also a live showcase of Cloudflare's newer primitives, with Workers Cache, Workers KV, and Hyperdrive doing real work and the cache-hit numbers to prove it. Finally, the "Brought to you by EmDash" framing shows the company using its own high-traffic publication as a testbed not only for infrastructure, but for how sponsorship-style presentation might look on a site like this.
- #cloudflare
- #cms
- #astro
- #web-performance
- #emdash