
TL;DR
Cloudflare moved cdnjs, the open-source CDN behind ~12% of the web, entirely onto Workers, Workflows, R2, and Queues. The migration raised two platform limits for everyone. Here is what changed and why it matters.
As of June 23, 2026, cdnjs runs exclusively on Cloudflare's Developer Platform. Cloudflare announced the completion of the migration on July 30, and the numbers behind it are worth a second read: cdnjs serves an average of 108,000 requests per second, 9 billion per day, across 330+ data centers, with a 98.6% cache hit rate. It is used on roughly 12% of all websites and holds a 48.3% share of the JavaScript CDN market.
cdnjs is the free, open-source CDN for JavaScript and CSS libraries. Instead of bundling jQuery, Bootstrap, or Lodash yourself, you drop a script tag pointing at cdnjs.cloudflare.com. Ryan Kirkman and Thomas Davis built it in 2011, Cloudflare started hosting it months later, and took over maintenance in 2019.
The serving side has been on Cloudflare for years. In 2020, Cloudflare moved file delivery onto Workers and KV with Brotli and gzip pre-compression. The publishing side was the holdout: the pipeline that watches npm and GitHub for new versions, downloads tarballs, minifies, and compresses files stayed on GCP, because Workers lacked long-running orchestration primitives at the time.
The old pipeline was a chain of GCP Cloud Functions, a git-sync VM, and the GitHub repository as source of truth. It had five structural pain points:
The rebuilt pipeline is the interesting part, because it is a template for anyone running multi-hour ingestion jobs on Workers:
From the archive
Jul 31, 2026 • 7 min read
Jul 31, 2026 • 9 min read
Jul 31, 2026 • 7 min read
Jul 31, 2026 • 6 min read
The migration surfaced two hard limits, and instead of just working around them, Cloudflare raised them:
There is also a cautionary tale in the migration history. Cloudflare had tried this once before and rolled back: re-processing old packages produced files that did not byte-match what KV was serving, because minifiers and compressors are not fully deterministic across versions. For a CDN where users pin SRI hashes in their HTML, that is a serving break. So the team migrated existing content as-is instead of regenerating it, trading a reprocessing problem for a copy problem.
Three things stand out for developers.
First, the boundary between "edge serving" and "long-running pipeline" has effectively dissolved. A year ago, this workload would have required a VM or a cloud functions chain. Today it runs on the same primitives Cloudflare sells to everyone: Workers, Workflows, R2, KV, Queues, Containers, and Durable Objects. The failure-recovery model of Workflows - resume from the last successful step - is exactly what ingestion pipelines need, and it is the same durable-execution idea now spreading across platforms. If you are evaluating durable execution for your own stack, compare how Cloudflare handles state resumption against Vercel's programming model.
Second, cdnjs is now a supply-chain surface worth paying attention to. Every file ships with an SRI hash, versions are immutable, and the project is open source. Cloudflare notes it is still verifying that all historically stored hashes match reality, because the old system had bugs. In a world where AI agents install dependencies on autopilot, an immutable, hash-verified mirror is meaningful infrastructure - the same trust-boundary problem that showed up in the TanStack npm compromise and in hallucinated package names.
Third, the LLM angle is real: when ChatGPT, Claude, or Cursor scaffold a quick HTML demo, they reach for cdnjs because their training data is full of it. The URL pattern is consistent and versions are immutable, which makes it the rare dependency a model can produce without hallucinating. That means every AI-scaffolded demo in the next few years inherits this migration's correctness.
This is a dogfooding post, and it is unusually candid for one. Cloudflare names the failures (the rolled-back migration, the byte-mismatch trap, the hashes that need auditing), shows the exact limits it had to lift, and retires a 1.1TB repository it relied on for a decade. The "what's next" section is also refreshing: serving browser-native ES modules from cdnjs is now possible to consider, which was not true a year ago. For anyone building on Cloudflare's platform or comparing it to the distributed-systems work coming out of the same network, the cdnjs migration is the most complete proof of what the platform can actually carry.
Read next
The new wrangler deploy --temporary flag creates ephemeral Cloudflare accounts for AI agents. 60-minute deployments, no OAuth, no browser - just deploy and claim later.
8 min readCloudflare Research introduces Meerkat, a distributed consensus service using QuePaxa that eliminates leader elections and timeouts across their 330+ global data centers.
7 min readTernlight ships a ternary-quantized sentence encoder at 7 MB that runs semantic search at 5ms per embedding - entirely client-side via WASM, no API calls required. Here is how it works, what HN thinks, and where browser-side embeddings make sense.
6 min readTechnical content at the intersection of AI and development. Building with AI agents, Claude Code, and modern dev tools - then showing you exactly how it works.
CDN, DNS, DDoS protection, and edge computing. Free tier handles most needs. This site uses Cloudflare for DNS and analy...
View ToolHeroku-style PaaS. Deploy web services, background workers, cron jobs, and managed Postgres from Git. Free tier for stat...
View ToolDeployment platform behind Next.js. Git push to deploy. Edge functions, image optimization, analytics. Free tier is gene...
View ToolReactive backend - database, server functions, real-time sync, cron jobs, file storage. All TypeScript. This site's ba...
View ToolSpawn isolated workers with independent context windows.
Claude CodePre-approve tools before a skill executes so it runs without prompts.
Claude CodeFires when an MCP server requests input from the user.
Claude Code
Cloudflare Research introduces Meerkat, a distributed consensus service using QuePaxa that eliminates leader elections a...

The new wrangler deploy --temporary flag creates ephemeral Cloudflare accounts for AI agents. 60-minute deployments, no...

A practical look at the operational Postgres guide that hit the HN front page - what it gets right, what the community p...

A new distributed inference system pools GPU resources across multiple machines and exposes them through a single OpenAI...

Cloudflare announces native support for the x402 HTTP payment protocol, letting developers charge for API calls and web...

A new project proposes a graphical shell layer for SSH that turns remote servers into browsable desktops. The HN discuss...

New tutorials, open-source projects, and deep dives on coding agents - delivered weekly.