mrkeyoor.com_
Sat 26 Sept 17:20 UTC
Webevaluationupdated 26 Aug 2026

deno review

Deno is a runtime for JavaScript, TypeScript, and WebAssembly, built on V8, Rust, and Tokio. It runs web servers and scripts with TypeScript support built in, while permission flags make access to the network and other host resources explicit.

+31stars / 7d
Verdict

Our Deno source build and test run each exceeded a 900-second cap, so installing the released runtime is easy but working on its 664.9 MB source tree is not. Choose Deno for a new TypeScript service when Web APIs, built-in tools, and explicit permissions suit the team. Move an existing Node application only after its dependencies, lifecycle hooks, and HTTP behavior pass against a pinned release.

We ran it

Lab card: what happened when we ran denoScreenshot of deno (deno.com)
Install✓ · 90s1205 packages
Build✗ timed out · 900s
Tests✗ timed out · 900s3 passed · 0 failed of 3 (cargo test)
Repo189363 files~6,139,296 lines of source · 664.9 MB · 11 CI workflows · tests dir

Answers from our run

Does deno build from source?

Dependencies installed in 90 seconds (1205 packages), and the build failed. We cloned commit 293074f into a clean Debian container with 3 CPUs and no project-specific setup.

Do deno's tests pass?

Yes: 3 of 3 passed when we ran the project's own test command (cargo test). Some failures need services or credentials a bare container does not have.

Who should not use deno?

Teams that need exact Node.js behavior in every test hook: issue #36670 reports that process.on('exit') and beforeExit handlers do not run under deno test in Deno 2.9.5.

What are the alternatives to deno?

Node.js, Bun. Our Deno source build and test run each exceeded a 900-second cap, so installing the released runtime is easy but working on its 664.

Setup3/5Binary setup is simple; source build exceeded 900 seconds
Docs5/5Clear install, first server, references, and contributor links
Community5/5August 26 push and busy issue and PR activity
Maturity4/5Established runtime with compatibility behavior to retest

Discussed on

  1. hnDeno 1.6 supports compiling TypeScript to a single executable657 points
  2. hnDeno has made its PyPI distribution official74 points
  3. hnDeno – A secure TypeScript runtime on V825 points
  4. hnDeno: A secure TypeScript runtime on V819 points
  5. hnDeno v0.1.0, rewritten in rust8 points

Who it’s for

TypeScript developers who want to run source files without assembling a separate compiler workflow.
Web teams that prefer standard Web APIs and explicit runtime permissions.
Node.js developers willing to test package compatibility before moving an existing service.
Tool authors who want runtime, task, test, formatting, and package commands in one installation.

Who it’s NOT for

Teams that need exact Node.js behavior in every test hook: issue #36670 reports that process.on('exit') and beforeExit handlers do not run under deno test in Deno 2.9.5.
HTTP/1.1 services that cannot test or pin around release regressions: issue #36657 documented connection closure with larger request bodies in Deno 2.8.3 through 2.9.5, although the report is now closed.
Contributors looking for a quick source build on modest CI: our 664.9 MB checkout did not finish either build or test within separate 900-second limits.
Developers who do not want generated state beside their project: issue #36376 reports .deno/ appearing after type-sync and check workflows without a documented relocation or opt-out.

Setup reality

Our commit 293074f checkout contained 189,363 files, about 6,139,296 source lines, and used 664.9 MB. Installation succeeded in 90 seconds with 1,205 packages. The build hit the 900-second limit, and the tests also timed out at 900 seconds after reporting 3 passed and 0 failed out of 3.

Using a released binary is much lighter than building this repository. The README provides shell, PowerShell, Homebrew, Chocolatey, WinGet, and Scoop routes. Its first server needs one file plus deno run --allow-net, with no account or hosted service.

Permissions are runtime configuration: scripts that need files, networking, processes, or environment data need matching grants. Node compatibility changes frequently enough that an application migration still needs tests against a pinned Deno release.

Deno 2.9.5 gives TypeScript a direct runtime path

Deno runs JavaScript, TypeScript, and WebAssembly on V8, with Rust and Tokio underneath. The README's first program is a complete HTTP server using Deno.serve; one command starts it with the explicit --allow-net permission. There is no separate transpiler command in that route. For a new TypeScript service, that removes setup work before the first request can be served.

Permissions remain visible after the demo. A production command must grant the network, file, process, or environment access the program uses. That is useful for downloaded scripts and internal automation because access is not silently assumed. It also means deployment manifests need the correct flags, and a missing grant can be an operational error rather than an application bug.

Deno 2.9.5 also shows how much compatibility work comes with being a second JavaScript runtime. Its release notes include fixes for Node Web Streams, DNS, HTTP/2, file-system behavior, npm metadata, and package resolution. Teams can use npm packages, but they should read that support as an actively maintained compatibility layer rather than a promise that every Node edge case behaves identically.

What happened when we ran it

Our sandbox installed 1,205 packages in 90 seconds from commit 293074f. The checkout held 189,363 files, about 6,139,296 source lines, and 664.9 MB before the build. Those figures describe contributor setup, not the much smaller job of obtaining a released Deno binary.

The build did not finish before the 900-second limit. The separate test command also reached 900 seconds and was stopped. Its parsed result reported 3 passed and 0 failed out of 3, but that does not make the suite a pass because the process never completed. We have no basis for saying the build was close to finishing or that the remaining tests would pass.

The test log gives one useful clue without establishing a cause. Several cache tests printed ok, then file_fetcher::tests::request_error, server_error, and test_fetch_accept had each been running for more than 60 seconds. That is all the log proves. The repository has 11 CI workflow files and a tests directory, but no Dockerfile, so contributors need to follow the project build instructions rather than expect a ready container recipe.

Released installation is far easier than the 664.9 MB checkout

The README documents shell and PowerShell installers, plus Homebrew, Chocolatey, WinGet, and Scoop. Once installed, the basic server is unusually short: TypeScript is the input file, Deno.serve supplies the HTTP entry point, and one permission flag allows the port binding. The official docs then cover the runtime, Deno Deploy, the standard library, and JSR.

That experience makes Deno attractive for a fresh service or command-line tool. Release 2.9.5 added a workspace-member option for tasks and an unscoped alias option for packages, alongside many fixes. Those conveniences reduce the number of separate tools a team must choose. They do not reduce the need to test an established Node application against Deno's implementations of Node APIs and npm behavior.

Issue #36670 provides a focused example. In the reporter's Deno 2.9.5 reproduction, Node-style exit and before-exit handlers run under deno run but not under deno test. Cleanup registered through those hooks can therefore be skipped during tests. Any suite that removes temporary files or closes resources through process lifecycle handlers should exercise those cases before changing its CI runtime.

Deno 2.9.5 migrations still need release-specific tests

Issue #36657 documented an HTTP/1.1 regression across Deno 2.8.3 through 2.9.5. In the supplied reproduction, requests with bodies around 500 B and larger caused Deno.serve to close the connection even after the handler consumed the body. The issue is now closed, which changes the buying advice: verify the fix in the exact release you deploy instead of treating the report as an unresolved defect on the main branch.

Generated tooling state is a smaller but persistent concern. Issue #36376 says deno check and deno sync-types can create a project-local .deno/ directory with generated configuration and machine-specific paths. The reporter found no documented way to relocate or disable it. Teams with clean-tree checks, broad file watchers, or editor indexing may need an ignore rule while that behavior remains open.

Runtime upgrades deserve the same discipline as Node major upgrades. Deno sits below every request handler and dependency, so differences in exit hooks, connection reuse, or generated files can affect otherwise correct code. Pin the deployed version, exercise representative network traffic, run application tests, and read the release notes for the compatibility areas your code touches.

An August 26 push confirms active work, not automatic compatibility

GitHub recorded Deno's latest push on August 26, 2026. Release v2.9.5 arrived on August 6, and recently updated issues and pull requests were active on August 26. The repository showed 108,309 stars and 1,529 open issues and PRs together when fetched. That combined count includes proposed changes as well as problem reports, so it should not be read as a bug total.

The project is clearly maintained, and its documentation works well for both first-time users and contributors. The harder decision is compatibility. Deno is a sensible first choice for new TypeScript servers that fit Web APIs and can make permissions part of deployment. Node.js remains safer when an existing system depends on exact Node semantics or a package graph the team cannot afford to retest.

Alternatives

ProjectWhat it isPick it when
Node.js gh↗The established JavaScript runtime with the broadest package and deployment base.pick this instead when exact Node behavior and compatibility with an existing npm application outweigh Deno's permission model.
Bun gh↗A JavaScript runtime and toolkit with package, build, test, and execution commands.pick this instead when you want another integrated runtime and your own trials favor Bun's package or build workflow.

What people are saying

  1. [github-trending] denoland/deno

Sources

  1. Deno repository and README
  2. Deno runtime documentation
  3. Deno 2.9.5 release notes
  4. Deno test process exit handlers issue
  5. Deno HTTP keep-alive regression report
  6. Deno project-local generated types issue

More web reviews

react-native-web · vega-app · actix-web · FxEmbed · cloudflare-turnstile-examples · react-spring · the whole board →