A developer who spent years building on Deno has switched back to Node, and he is not sorry about it. His story, titled “Friendship ended with Deno, now Node is my best friend,” made waves on Hacker News today. The tale is a personal one, but it carries a broader message about where JavaScript development has gone.
The Long Goodbye
The writer’s relationship with Deno ended badly. He lists three reasons for the split:
- A broken ZSH integration that lasted weeks
- JSR’s aggressive 429 (Too Many Requests) limits
- Bugs that made Deno choke on concurrent HTTP requests
He describes the situation as “basically stuff that made it borderline unusable.” The final straw came when Deno Land Inc. stopped innovating years ago. The writer says Node has caught up and surpassed Deno in places.
Why Node Won Again
The writer returned to Node for a SvelteKit client project. He found that the runtime had improved dramatically since he last used it. Modern ECMAScript sugar is fully supported, and the old annoying APIs have been replaced or modernised. He never has to see require() again.
He also noticed that the package management landscape has shifted. NVM, the official way to manage Node and NPM, involves piping an internet script straight to bash. The writer prefers FNM, which he says handles version switching better. For stability on client projects, he rolls bleeding-edge but sticks to tested versions.
The Malware Problem
The writer moved to PNPM to avoid getting immediately pwned. He jokes that the “M” in NPM stands for “malware.” He set up a pnpm-workspace.yaml file to delay updates, with settings like minimumReleaseAge: 1440 and trustPolicy: no-downgrade.
He initially tried setting the minimum release age to one month, reasoning that Microsoft takes that long to remove reported malware. That caused dependency issues, so he settled on one day. He calls it long enough to let “some other sucker” beta-test the next Shai’Hulud.
TypeScript and the Microsoft Question
Node can now run TypeScript without throwing tantrums. But the writer cannot publish TypeScript packages to NPM. The restriction is philosophical rather than technical. TypeScript is a Microsoft product, and opening that floodgate would pollute the entire ecosystem.
The writer uses Tsdown to bundle his TypeScript, with only two additional dotfiles. He deletes Deno’s configuration files like deno.json along the way. He is hosting his own Forgejo instance because Microsoft wrecked GitHub, and NPM limitations mean his packages have lost provenance.
Migrating the Website
The writer’s final test was moving his static site generator from Deno to Node. Not many Node versions ago, this would have required a major refactor. Today, with Node v26.10.0, he found surprisingly little work to do.
He replaced Deno’s file system API with node:fs, which he says is vastly improved from what he remembers. He swapped Deno.serve for Hono’s node adapter, a wrapper around node:http. After the migration, he saw 15% faster builds.
What Remains
The writer’s codebase still favours idiomatic Deno. He suspects he is leaving performance on the table by not using other built-in Node APIs. That is something to explore later. He also replaced Deno’s @std/path with node:path, a straight import swap.
The story ends with a joke: “So if I were to TL;DR in the middle: Node got a glow-up, wow!”
The Verdict
The writer’s conclusion is blunt. Deno failed when it allowed the Silicon Valley Circus to define success. The company went from an innovative runtime to a boring startup with unappealing products. Half the employees were laid off, and what remains tweets AI fantasies and vibe-codes Temu Cloudflare.
There is no reason to use the Deno runtime today. The writer’s packages are no longer visible, though old versions remain installable. He deleted his account on request.
It was fun early on, but now it is time to say goodbye.
| Step | Action |
|---|---|
| 1 | Uninstall Deno |
| 2 | Install Node via FNM |
| 3 | Switch to PNPM |
| 4 | Use Tsdown for TypeScript bundling |
| 5 | Migrate static site generator |
| 6 | Delete old Deno config files |
The writer’s journey from Deno to Node is a personal tale of software choices, with a dash of corporate grumbling about Microsoft and GitHub, told with a dry wit that keeps the reader engaged.
Source material: “Friendship ended with Deno, now Node is my best friend,” dbushell.com.
Get the Notebook.
The day's best stories and every fresh verdict, in plain English, in your inbox by seven. One email a day, no more.

