What’s new in Deno
Better, faster JavaScript
Deno is a fast, open-source, fully Node-compatible JS runtime with TypeScript and everything else you need baked right in.
Faster than Node; more stable than Bun.
Built-in tools: package manager, test runner, formatter, linter, task runner, type checker, coverage tool, workspace manager, benchmarker, doc generator, jupyter kernel, compiler, desktop app builder.
$curl -fsSL https://deno.land/install.sh | shOr let your agent do it
Paste this into any coding agent.
Claude Code · Codex · Gemini CLI · OpenCode · Cursor · Pi · <your agent>
Read deno.com/agents.md and set up Deno in this project
Everything just works
TypeScript, JSX, and npm, straight from source. No tsc, no ts-node, no bundler, no config to get in the way.
server.ts
import { Hono } from "hono";
interface Book {
title: string;
year: number;
}
const books: Book[] = [{ title: "Deno", year: 2018 }];
const app = new Hono();
app.get("/books", (c) => c.json(books));
export default app;package.json
{
"name": "project-with-npm-deps",
"dependencies": {
"chalk": "^5.6.2",
"hono": "^4.12.27"
}
}

Zero-setup TypeScript and npm
Import npm packages just like you would anywhere else. Full type-checking is one deno check away.
Your Node project, without the Node problems
Deno runs Node code and understands lockfiles (even pnpm and yarn), to make any project simple to run with Deno.
Drops right in
- npm
- node_modules
- package.json
- tsconfig.json
- ESM
- JSX / TSX
- node:* imports
- CommonJS
Built-in everything
From formatting and linting to testing and package management, Deno is designed with seamless developer experience in mind. Stop configuring; start building.
$
A faster package manager
Deno supports npm workspaces, and can read npm, yarn, and pnpm lockfiles.
Pull from npm and JSR with one command, lock to a single integrity file, and resolve from a global cache instead of a per-project node_modules.
package.json
{
"workspaces": ["./api", "./web", "./core"],
"scripts": {
"dev": "deno run -A --watch main.ts",
"test": "deno test -A"
},
"dependencies": {
"hono": "hono^4"
}
}Package install: Time to install
Lower is better · warm = populated cache · cold = empty cache
Deno
598mswarm
5.3scold
Bun
766mswarm
4.9scold
npm
3.8swarm
15.8scold
18-package dependency tree · isolated caches, scripts disabled · Apple M5 · Deno 2.9 canary, npm (Node v26.5), Bun 1.4 canary
main.ts
import { BinarySearchTree } from "@std/data-structures";
import { assertEquals } from "@std/assert";
const values = [3, 10, 13, 4, 6, 7, 1, 14];
const tree = new BinarySearchTree<number>();
values.forEach((value) => tree.insert(value));
assertEquals([...tree], [1, 3, 4, 6, 7, 10, 13, 14]);Standard library included
The utilities you’d otherwise assemble from a handful of npm packages, audited, and dependency-free.
Includes modules for parsing, collections, formatting, dates, and more, maintained by the Deno team and versioned on JSR.
Granular security controls
Deno blocks file system, network, and environment access by default. Customize, layer, and audit security settings for any use case.
Filesystem access requires explicit permission(docs)
$
Three layers of defense
Access is denied by default and opened on purpose. Security from end to end, at every layer.
1Default deny
Supply-chain safety
Shut down the most common ways a dependency turns hostile.
- Postinstall scripts
- Off by default
- Opt a package in
--allow-scripts- Trusted dynamic imports
--allow-import- Audit the dependency tree
deno audit- Apply the fixes
deno audit fix- Minimum dependency age
minimumDependencyAge: "P3D"
2Scoped grants
Runtime sandbox
Scope what a single program can do, and deny-list the rest.
- Granular allow flags
--allow-net- Deny-list on top
--deny-net- Subprocess isolation
- Apply permissions to Deno child processes
- Permission stack traces
DENO_TRACE_PERMISSIONS=1- Symlink-aware checks
- Evaluated at the link
3Audits
Centralized policy & audit
Govern permissions, and keep a record of every call.
- Permission broker
DENO_PERMISSION_BROKER_PATH- Audit logs
DENO_AUDIT_PERMISSIONS
- grant
- denied / off
- opt-in
Faster than you think
Deno doesn't stop improving. If you haven't looked in a while, you might be surprised just how fast we've gotten.
Built for the real world
Deno's been carefully built on Rust since day one to optimize for performance in real-world scenarios (not just cherry-picked benchmarks).
Realworld: Requests / sec
Higher is better
Deno72,400
Bun68,200
Node44,000
Realworld: p99 latency
Lower is better
Deno1.87 ms
Bun2.80 ms
Node3.76 ms
Realworld: Peak memory
Lower is better
Bun45 MB
Deno64 MB
Node116 MB
Hello world: Requests / sec
Higher is better
Deno85,600
Bun81,900
Node56,300
Hello world: p99 latency
Lower is better
Deno1.60 ms
Bun2.29 ms
Node3.10 ms
Hello world: Peak memory
Lower is better
Bun41 MB
Deno62 MB
Node108 MB
TypeScript startup: Time to run
Lower is better
Bun14.7 ms
Deno19.6 ms
Node50.0 ms
Package install: Time (warm cache)
Lower is better
Deno598 ms
Bun766 ms
npm3,852 ms
Gzip DecompressionStream: MiB / sec
Higher is better
Deno1,329
Node1,102
Bun1,015
HTTP: 100 concurrent connections · AMD EPYC x86_64, pinned cores · oha, median of 3 runs, uncompressed · Deno.serve (Deno 2.9), Bun.serve (Bun 1.4), node:http (Node v26). Startup, install & streaming: Apple M5 · hyperfine means / in-process medians · Deno 2.9 canary, Node v26.5, Bun 1.4 canary. Results vary by workload and hardware.
See anything, understand everything
Don't just ship code; inspect it deeply at every level with native OpenTelemetry, profiling, and debugging all built-in from the start
Or run it on the platform we built for it.
Preview
And now, the desktop
Deno Desktop builds native, cross-platform desktop apps from the web stack you already know — your frontend, your TypeScript backend, one binary on the desktop. No Electron-sized bundle, no Chromium to ship, no second runtime to manage.
Better JavaScript
Install Deno in a few seconds. Bring an existing project over and see it run.




