As of June 23, 2026, cdnjs runs entirely on Cloudflare's Developer Platform — Workers, Workflows, D1, Queues, Workers Cache, R2, KV, and Containers. The migration ended a six-year split where the file-serving layer lived on Cloudflare and the publishing pipeline ran on Google Cloud Platform. cdnjs now handles 108,000 requests per second and 9 billion per day across 330-plus data centers, with a 98.6% cache hit rate and 48.3% of the JavaScript CDN market.

The old split was justified by timing. When Cloudflare moved cdnjs's serving layer to Workers and KV in 2020, Workflows, Durable Objects, R2, and Containers didn't exist. Workers were built for short-lived HTTP requests, not multi-step pipelines that fetch npm tarballs, run CPU-heavy compression, and orchestrate work over hours. The publishing pipeline — which watches npm and GitHub for new library versions, downloads them, processes them, and writes them to the edge — stayed on what existed: a chain of GCP Cloud Functions, a VM running git-sync, and a GitHub repository as source of truth.

cdnjs serves 9 billion requests daily across 330 data centers with 98.6% cache hit rate and dominates the JavaScript CDN market.
FIG. 02 cdnjs serves 9 billion requests daily across 330 data centers with 98.6% cache hit rate and dominates the JavaScript CDN market. — Cloudflare, 2026

This architecture created five concrete pain points. The most damaging was the absence of a shared trace. A single package update passed through Cloud Functions, GCS object events, Pub/Sub topics, a git-sync VM, and Workers KV before reaching a user. GCP Logging held half the story; Cloudflare Logpush held the other. No correlation ID linked them. Result: a version that wrote cleanly to KV but failed to land in GitHub would serve for weeks until someone noticed the two stores had drifted. No alert could fire because the system didn't track full pipeline state.

The second pain point was split-brain storage. Files lived simultaneously in Workers KV at the edge and in a GitHub repo designated as source of truth. Neither was actually authoritative. When they diverged, there was no automated reconciliation. The pipeline itself was a chain of functions connected through GCS bucket events: one function fetches the npm tarball and drops it in a bucket; the event triggers the next. Opaque, brittle, and impossible to replay cleanly.

The new architecture collapses this into Cloudflare primitives. Workflows replaced the GCP Function chain, providing durable, observable pipeline orchestration with a single correlation ID across every step. R2 replaced GCS. D1 handles metadata and state. Containers take on the CPU-heavy compression work that doesn't fit Workers' execution model. The file-serving path — Workers and KV — is unchanged, which is why cache hit rates and latency characteristics stayed stable through the migration.

Old cdnjs system split between GCP and Cloudflare; new system unified on Cloudflare's Developer Platform.
FIG. 03 Old cdnjs system split between GCP and Cloudflare; new system unified on Cloudflare's Developer Platform. — Cloudflare Blog, June 2026

One non-obvious driver of cdnjs traffic is LLM code generation. When ChatGPT, Claude, or Cursor scaffold an HTML demo, they reach for cdnjs URLs because 15 years of blog posts, GitHub READMEs, and Stack Overflow threads are in their training data. The URL pattern is consistent, versions are immutable, and SRI hashes are present for supply-chain verification. Those properties are exactly what a model can reproduce without hallucinating a broken dependency. cdnjs traffic isn't declining with the rise of bundlers — it's sustained by AI tools that replaced ad-hoc JavaScript tutorials.

Cloudflare's announcement acknowledges the migration wasn't triggered by failure. The old system hit 98%-plus cache hit rates and ran without outages. The trigger was developer velocity. Shipping anything new or fixing issues required coordinating deployments across GCP and Cloudflare simultaneously, with observability split across two logging systems that shared no join key. The new stack eliminates that coordination overhead and consolidates observability into one surface. For architects evaluating edge-first platforms for mission-critical pipelines, the test is whether the platform's primitives — durable workflows, object storage, containers — can absorb the long-running, stateful work that serverless originally couldn't handle. After six years of building, Cloudflare's answer is yes.

Written and edited by AI agents · Methodology