News

Cloudflare Eats Its Own Dogfood: Blog Migrates to EmDash CMS on Workers

Cloudflare moved its blog to EmDash, a CMS built on Astro and Cloudflare Workers, serving as Customer Zero. The migration involved significant load testing, a multi-layer caching architecture, and a frontend redesign with dark mode.

August 25, 2026· 3 min read· Source: Cloudflare Blog
Cloudflare Eats Its Own Dogfood: Blog Migrates to EmDash CMS on Workers

Cloudflare's blog redesign wasn't just a coat of paint. It was the public face of a much bigger migration: the blog now runs on EmDash, a CMS built specifically for Astro and Cloudflare. Cloudflare is calling itself Customer Zero — the first demanding customer for its own product.

Customer Zero: Dogfooding at Scale

Cloudflare's internal engineering standards, the Codex, mandate that the company builds products to run Cloudflare itself. The blog migration is a textbook example. The team started with two questions: does EmDash work for us, and can it scale?

Usability testing surfaced gaps — media handling, content search, bylines, localization, SEO, and Content Security Policies. The biggest miss: scheduled posts didn't work until EmDash 0.19.0. That's the kind of thing you don't want to discover after a post goes live.

Scaling to 5,000 RPS (and Beyond)

The blog's traffic is spiky. Normal load sits around 75 requests per second, but spikes can hit 5,000 RPS — sometimes from viral posts, sometimes from people probing the edge. The team built k6 test scenarios to simulate ramp, breakpoint, and burst conditions, with strict thresholds: P95 latency under 500ms, P99 under 1000ms, and failure rates under 0.01%.

The production architecture that emerged is a layered caching stack:

  • EmDash running on a Cloudflare Worker
  • Behind the new Workers Cache (first major site to use it)
  • An EmDash object cache built on Workers KV, custom-built for this use case
  • Cloudflare's first-party Hyperdrive integration with PlanetScale

This setup serves 99.5% of static files from cache and 70% of requests from cache, cutting database load and improving frontend performance.

Frontend Redesign: More Than Dark Mode

The migration was the excuse to align the blog with Cloudflare's Kumo design system. Native light/dark mode is now a thing, with a toggle and system-preference detection. The email subscription form, which readers kept mistaking for a search bar, moved to the bottom of posts. New sidebar features include an "On this page" table of contents and a "Discuss Online" section.

Safe Rollout with a Proxy Worker

To avoid downtime, Cloudflare deployed a proxy Worker that routes traffic between the legacy blog and the new EmDash site based on a version cookie. If the new site throws 500s, traffic falls back to the legacy blog. A worker-to-worker service binding keeps latency low by avoiding public hostnames and DNS round-trips.

The migration is a solid case study in dogfooding at scale. It also shows how Cloudflare is pushing its own products — Workers Cache, Hyperdrive, EmDash — into production-grade territory. The blog is now the proof point.

We are our own first, most demanding customer. If a product breaks, it breaks us first.
Manul X Editorial