
Most companies migrate their blog quietly, over a weekend, and hope nobody notices. Cloudflare did it in the open, on one of the busiest corporate blogs on the internet, and on a CMS that hadn’t reached version 1.0 yet.
The platform is EmDash, an open-source, TypeScript-based CMS built on Astro that Cloudflare introduced in April as a “spiritual successor” to WordPress. On August 12, Cloudflare’s own blog went live on it. Cloudflare’s write-up is coy about what came before, referring only to the limitations of a “CMS vendor”, but coverage of the move consistently describes the old setup as WordPress. Either way, the interesting part isn’t the logo swap. It’s how you move a high-traffic site without anyone noticing something changed.
Why the blog was the perfect guinea pig
Cloudflare calls its approach “Customer Zero”: run your own products first, at real scale, before asking anyone else to. A blog fits that role unusually well. Its traffic is normally modest, around 75 requests per second, but it spikes hard when a big announcement lands, sometimes past 5,000. A platform that only handles the quiet days proves nothing. One that survives launch week proves quite a lot.
The stack reflects that. EmDash runs on Cloudflare Workers, with Workers Cache in front, an object cache built on Workers KV, and a PlanetScale database reached through Hyperdrive. The frontend is Astro, styled with Cloudflare’s own Kumo design system.
The rollout: 1%, 5%, 15%, 100%
The migration itself was deliberately boring, which is the highest compliment a migration can get. A proxy Worker sat in front of both platforms and shifted traffic gradually: 1% of visitors, then 5%, then 15%, then everyone, all on launch day. If the new system returned a server error, the proxy quietly fell back to the legacy platform, so a visitor would see a working page rather than a failure.
Before any of that, the team load-tested with k6 against strict targets: fewer than 0.01% failed requests, 95th-percentile latency under 500 milliseconds, and 99th under one second. The scenarios were a ramp to three times normal traffic, a run pushed until something broke, and a sudden burst of 7,000 requests per second.
What wasn’t ready
The honest part of the story is the gap list. Media management at scale, search across content, author bylines, localization, SEO features and compatibility with Content Security Policy headers all needed work before the blog could move over.
The most telling detail is scheduled posts, which didn’t work until EmDash 0.19.0. For a publication that times announcements to the minute, that isn’t a footnote. It’s a blocker, and it had to be fixed in the CMS itself rather than worked around. Even after launch, editors hit quirks in the editing interface and scheduling bugs during the company’s Agents Week, and those went back to the EmDash team as bug reports.
The numbers, with a caveat
Agents Week was the real stress test: 28 posts over nine days, roughly three million pageviews. Cloudflare reports the site handled up to 850 requests per second without trouble, with about 450 per second on the frontend, and that latency stayed flat where the old platform showed periodic spikes under load. Around 70% of requests were served from cache, and 99.5% of static files. Lighthouse scores improved, though Cloudflare gives no figures.
The caveat is obvious: these results come from the company that makes the platform, the infrastructure it runs on, and the CDN in front of it. They’re credible as an engineering report and less useful as an independent benchmark. What they do show is that the architecture works under real load, not that it’s the right choice for every site.
The AI angle
The migration also shipped something newer. The blog now has a Model Context Protocol server with tools like search_posts, list_posts, get_post and list_tags, so AI agents can query its content directly. EmDash also includes an MCP server for editors, at no extra cost. Whether readers’ agents will actually use a blog’s MCP endpoint is an open question, but publishing one is cheap, and it signals where Cloudflare thinks content management is heading.
Then came 1.0
The timing is worth noting. EmDash 1.0 arrived on September 28, about six weeks after the blog went live, and it adds a sandboxed plugin model: plugins run in isolated runtimes with access only to their own storage, and anything more needs explicit administrator approval. A new plugin registry, built on the AT Protocol, lets developers keep ownership of what they publish.
That sandboxing is the direct answer to WordPress’s best-known weakness, where a single vulnerable plugin can compromise an entire site. Whether EmDash can build a plugin ecosystem to rival WordPress’s is still unproven. But Cloudflare’s own blog running on it through its heaviest week of the year is a better proof point than most launch announcements manage.
Webitlio’s Setup Picks on Amazon
- Logitech MX Keys S for Mac Wireless Keyboard — Space Grey →
- Amazon Kindle Scribe 64GB with Premium Pen — Tungsten →
- Elgato Stream Deck MK.2 — 15 Macro Keys →
- Logitech MX Brio Ultra HD 4K Webcam — Graphite →
- Elgato Key Light — Professional 2800 Lumens Studio Light →
Product pricing, availability and specifications can change over time. Check the current Amazon listing for the latest information.







































