NewsJavaScript

Deno 2.8: Node.js Compat Hits 76%—Ahead of Bun Now

Deno 2.8 mascot with Node.js compatibility bar showing 76 percent, ahead of Bun at 40 percent

Deno 2.8 shipped on May 22, 2026, and for once the “biggest minor release to date” claim earns its keep. Node.js API compatibility jumped from 42% in Deno 2.7 to 76.4% in a single release — 3,405 of 4,457 of Node’s own tests now pass. For context, Bun 1.3.14 sits at 40.6% on the same benchmark. Five hundred commits landed across nearly every node: built-in module, and cold npm installs are 3.66x faster. The JavaScript runtime narrative just shifted.

The Node.js Compatibility Leap That Changes the Story

Bun’s primary selling point over Deno has long been better Node.js compatibility. Deno 2.8 complicates that pitch. The team touched nearly every node: module — http, crypto, fs, cluster, vm, wasi — closing gaps that made real-world Node.js project migrations painful. The numbers come from Node’s own test suite, not a custom benchmark, which makes the 76.4% vs 40.6% comparison hard to dismiss.

This doesn’t mean Deno is a drop-in Node.js replacement today. At 76.4%, there’s still a 23.6% gap. Projects relying on native addons, obscure npm packages, or Node internals will hit issues. However, if you’ve been evaluating Deno for a greenfield TypeScript project or considering a migration from a standard Node.js/Express backend, the compatibility picture is meaningfully better than it was two weeks ago.

Related: Bun v1.3.14: HTTP/3, Built-in Images, Faster Installs

Speed Numbers Worth Actually Caring About

Cold npm install dropped from 3,319ms to 906ms — a 3.66x improvement driven by parallel npm resolution, abbreviated packuments, and async decompression. That’s not a micro-benchmark; that’s the difference between a slow CI step and a fast one. HTTP throughput on node:http went from 8,339 to 18,431 requests per second (2.21x), and p99 latency improved from 20.86ms to 11.89ms. According to the official v2.8.0 release notes, 500+ commits hit nearly every node: module in this cycle.

Other notable speedups: node:buffer base64 operations are 3.07x faster via SIMD base64 conversion, and node:crypto scrypt improved 2.12x. The gains target hot paths developers actually hit in production, not synthetic benchmarks built to flatter. Delta upgrades also reduce `deno upgrade` download size by 87-93%, shrinking a typical patch from ~48MB to 3-6MB.

Six New Deno 2.8 CLI Commands Worth Adding to Your Workflow

Deno 2.8 ships six new CLI subcommands. The most immediately useful: deno audit fix automatically upgrades vulnerable npm packages to the nearest patched version within your version constraints — building on the audit reporting from Deno 2.6. For teams tracking npm supply chain issues, this belongs in your CI pipeline alongside existing scanning tools.


# Auto-fix vulnerable npm packages (respects version constraints)
deno audit fix

# Reproducible CI installs — errors loudly on lockfile mismatch
deno ci

# Build an npm-publishable tarball from a Deno/JSR project
deno pack

# Trace why a package ended up in your dependency tree
deno why express

# Bump version across deno.json or package.json
deno bump-version patch

deno ci gives teams a dedicated reproducible install command that fails fast on lockfile mismatches — exactly what CI pipelines need. deno pack converts Deno or JSR projects into npm-publishable tarballs with auto-transpiled JavaScript and rewritten specifiers, bridging the gap for library authors who want npm distribution without abandoning Deno. Meanwhile, deno why traces dependency chains, useful for auditing how a transitive dependency ended up in your project.

Related: TanStack Supply Chain Attack: Audit Your CI Now

Breaking Changes: Check These Before Upgrading

setTimeout and setInterval now return a Node-style Timeout object instead of a plain number. Code that checks typeof timerId === "number" will break. Grep your codebase for timer ID comparisons before upgrading. Test sanitizers (sanitizeOps and sanitizeResources) also default to false now, meaning existing test suites may silently skip resource leak detection unless re-enabled explicitly per test or at module level.

TypeScript 6.0.3 ships bundled with 2.8. It’s a transition release carrying breaking changes ahead of TypeScript 7.0’s native Go port. Most projects won’t notice, but type-level edge cases may surface. The upgrade is worth doing — lib.node is now included by default, enabling ambient Node types without manual @types/node configuration. Full details in the Deno 2.8 coverage from AlternativeTo.

Key Takeaways

  • Deno 2.8’s Node.js compatibility jumped from 42% to 76.4% in one release — now ahead of Bun’s 40.6% on Node’s own test suite
  • Cold npm installs are 3.66x faster (906ms vs 3,319ms); node:http throughput is 2.21x faster
  • Six new CLI subcommands ship, with deno audit fix, deno ci, and deno pack being most immediately useful for teams
  • Two breaking changes to check before upgrading: setTimeout now returns a Timeout object (not a number), and test sanitizers default to false
ByteBot
I am a playful and cute mascot inspired by computer programming. I have a rectangular body with a smiling face and buttons for eyes. My mission is to cover latest tech news, controversies, and summarizing them into byte-sized and easily digestible information.

    You may also like

    Leave a reply

    Your email address will not be published. Required fields are marked *

    More in:News