On October 9, Deno announced it's joining Cloudflare. It hit 1,200+ points on Hacker News within hours. The headline sounds like a win. The fine print is a funeral.
The actual terms
From Deno's own post:
- Deno runtime: supported for one more year, with monthly releases for bug fixes and security updates. After that, "we will end our development of the Deno runtime." It stays open source, and they "welcome others who want to continue its development."
- Deno Deploy: shuts down after six months. Cloudflare is offering migration support to paying customers moving to Workers.
- JSR (the TypeScript-first registry): keeps running, with infra moving under Cloudflare.
-
rusty_v8: still supported, with work toward integrating it into
workerd. - Deal terms: not disclosed.
As one HN commenter put it: "Deno development effectively shut down via a Cloudflare acquihire" is the honest headline.
Why this happened: celld
In August, the Deno team shipped celld, an open-source, self-hostable implementation of the Durable Objects model from Cloudflare Workers. In hindsight, that was a demo reel aimed at exactly one buyer.
Now celld gets merged into workerd, Cloudflare's open-source Workers runtime. Per Simon Willison's writeup, the goal is to make workerd self-hosting "a first-class supported way to build and run apps using the Workers programming model." Ryan Dahl and Bert Belder lead that effort.
Dahl's own reasoning is blunt: Deno "is not solving big problems. It has been sucked into the gravity well of node compatibility, which forces it to behave exactly as Node does." What he's excited about instead is a server model built on object storage rather than file systems and networks, plus Durable Objects for agent harnesses: cheap serverless execution, persistent state, WebSockets, and a high-level JS interface.
Read that again. The creator of Node, and then Deno, is saying the runtime-as-product thesis lost.
The part nobody wants to say out loud
Deno's pitch was "Node done right": secure by default, TypeScript native, web-standard APIs. Then it spent years adding npm compatibility to survive, and became the thing it was reacting against. As HN user sholladay wrote, the surface area "went from beautifully simple to very bloated."
Meanwhile Node absorbed the best ideas. Willison notes Node shipped a permissions model in v20 (April 2023), though without Deno's per-host network filtering. That's the real legacy: Deno made Node better, then got squeezed out by it.
It's a pattern, not a one-off
Dev tooling is consolidating into a handful of platform owners. An HN commenter's running tally (unverified by me, so treat it as community-sourced): Bun to Anthropic, Astral/uv to OpenAI, Astro and VoidZero to Cloudflare, NuxtLabs to Vercel. If your toolchain is an independent VC-funded startup, you're one acquihire away from a sunset notice.
What to do on Monday
1. Using Deno Deploy? You have six months. Don't wait for the last month.
2. Using the Deno runtime locally or in CI? You have a year of patches. That's not an emergency, but it's a migration you now have to schedule.
3. Audit your Deno-specific surface. The portable stuff is easy. The Deno.* APIs are not:
# how locked-in are you?
rg -n "Deno\." --glob '!node_modules' | wc -l
rg -n "from \"jsr:|from 'jsr:|npm:|https://deno.land" --glob '!node_modules'
4. Pick a destination.
- Mostly web-standard
fetchhandlers? Workers is the path of least resistance. The handler shape is nearly identical:
// Deno Deploy
Deno.serve((req) => new Response("hello"));
// Cloudflare Workers
export default {
async fetch(req: Request): Promise<Response> {
return new Response("hello");
},
};
- Need a plain server runtime and no vendor tie? Node, which now has native TypeScript stripping and a permissions flag, is a far better fallback than it was in 2020.
- Want to bet on the community fork? It's open source, but "someone else picks it up" is a hope, not a plan. Don't build production on it.
5. JSR users: keep going. It continues under Cloudflare, and it works with Node and other runtimes, not just Deno.
My take
The sad part is real: Deno's permission model and its early design were the best thing to happen to server-side JS since Node. The honest part is also real: a runtime that must behave exactly like Node has no reason to exist next to Node.
The interesting bet is celld inside workerd. If Cloudflare actually makes the Workers programming model self-hostable, that's a real answer to the lock-in complaint, and the open question is how complete it'll be. Watch the workerd repo, not the press releases.
Until then: assume nothing you depend on lasts longer than its funding. Pin versions, keep your runtime-specific code behind a thin adapter, and write your handlers against web standards. You'll be annoyingly portable, and portability is the only insurance this industry offers.
Sources: Deno's announcement, Simon Willison, Hacker News thread.
Top comments (0)