David Bushell, a UK-based web developer, recently documented his return to Node.js after extended use of Deno in a blog post titled 'Friendship ended with Deno, now Node is my best friend.' Bushell, who had been a dedicated Deno user, found himself revisiting Node.js for a client project and was surprised by how much the platform had evolved during his absence from the ecosystem.

The image shows the transition from Deno to Node.js, reflecting the article's subject of migrating from Deno to Node.js.
According to Bushell's account, Node.js has undergone substantial improvements that addressed his previous frustrations with the platform. He notes that modern ECMAScript features are now fully supported, legacy APIs have been modernized and replaced, and the ubiquitous require() statement is no longer necessary in contemporary Node.js development. For his migration of a personal static site generator, Bushell reports needing only three targeted changes: replacing Deno's file system API with node:fs, substituting Deno.serve with Hono's Node adapter (a wrapper around node:http), and swapping @std/path for node:path as a direct import replacement. Despite maintaining an idiomatic Deno coding style throughout the migration process, he was surprised to observe a 15% improvement in build performance after completing the transition to Node.js v26.10.0.
Bushell attributes his departure from Deno to several persistent usability and reliability issues that gradually eroded his confidence in the platform. He specifically cites weeks of broken ZSH integration that hampered his workflow, aggressive rate limiting (429 Too Many Requests) responses from the JSR package registry that disrupted package management, and recurring bugs that caused Deno to fail under concurrent HTTP request loads. Beyond these technical concerns, Bushell suggests more fundamentally that Deno Land Inc. ceased meaningful innovation years ago, pointing to staff layoffs and what he characterizes as a strategic shift toward 'AI fantasies and vibe-coding Temu Cloudflare' as evidence of the project's declining direction and vision. While acknowledging Deno's early appeal as an innovative JavaScript runtime, Bushell concludes his post by stating there is 'no reason to use the Deno runtime today' given Node's substantial advancements in developer experience, performance, and ecosystem maturity during his absence.