JavaScript Runtimes: Deno

Join the AI Workshop to learn more about AI and how it can be applied to web development. Next cohort February 1st, 2026

The AI-first Web Development BOOTCAMP cohort starts February 24th, 2026. 10 weeks of intensive training and hands-on projects.


If you are familiar with Node.js, the popular server-side JavaScript ecosystem, then Deno is just like Node. Except deeply improved in many ways.

Here’s what makes Deno special:

  • It is based on modern features of the JavaScript language
  • It has an extensive standard library
  • It has TypeScript at its core (you don’t have to separately compile TypeScript, Deno does it automatically)
  • It embraces ES modules
  • It has no package manager
  • It has first-class await
  • It has a built-in testing facility
  • It aims to be browser-compatible (provides built-in fetch and the global window object)

Why Deno?

Deno was announced by Node.js original creator Ryan Dahl at JSConf EU. Watch the YouTube video of the talk - it’s very interesting.

Every project manager must take decisions. Ryan regretted some early decisions in Node. Also, technology evolves, and today JavaScript is a totally different language than what it was back in 2009 when Node started. Think about the modern ES6/2016/2017 features.

Node.js is awesome and will continue to be the de facto standard in the JavaScript world. But Deno can afford to have everything written with modern technologies, since there’s no backward compatibility to maintain.

Should you learn Deno?

If you are starting out with server-side JS and you don’t know Node yet, I’d start with Node.

But if you love TypeScript, don’t depend on a gazillion npm packages in your projects and you want to use await anywhere, Deno might be what you’re looking for.

First-class TypeScript support

Deno is written in Rust and TypeScript. Running TypeScript code with Deno does not require a compilation step - Deno does that automatically for you.

You are not forced to write in TypeScript, but the fact the core of Deno is written in TypeScript is huge:

  • An increasingly big percentage of JavaScript programmers love TypeScript
  • The tools you use can infer many information about software written in TypeScript
  • Editors like VS Code can provide type checking and advanced IntelliSense features as you write code

Similarities and differences with Node.js

Similarities:

  • Both are developed upon the V8 Chromium Engine
  • Both are great for developing server-side with JavaScript

Differences:

  • Node is written in C++ and JavaScript. Deno is written in Rust and TypeScript.
  • Node has an official package manager called npm. Deno does not, and instead lets you import any ES Module from URLs.
  • Node uses the CommonJS syntax for importing packages. Deno uses ES Modules, the official way.
  • Deno uses modern ECMAScript features in all its API and standard library, while Node.js uses a callbacks-based standard library.
  • Deno offers a sandbox security layer through permissions. A program can only access the permissions set to the executable as flags by the user.

No package manager

Having no package manager and having to rely on URLs to host and import packages has pros and cons. It’s very flexible - you can create packages without publishing them on a repository like npm.

The Deno website provides code hosting (and distribution through URLs) to 3rd party packages: https://deno.land/x/

Install Deno

The easiest way is to use Homebrew:

brew install deno

Once installed, you have access to the deno command. Here’s the help:

deno --help

The Deno commands

Key subcommands:

  • bundle bundle module and dependencies of a project into single file
  • cache cache the dependencies
  • doc show documentation for a module
  • eval evaluate a piece of code, e.g. deno eval "console.log(1 + 2)"
  • fmt a built-in code formatter (similar to gofmt in Go)
  • repl Read-Eval-Print-Loop (the default)
  • run run a program given a filename or url to the module
  • test run tests
  • upgrade upgrade deno to the newest version

You can run deno <subcommand> --help for specific help.

Your first Deno app

You can run a command from any URL. Deno downloads the program, compiles it and runs it:

deno run https://deno.land/std/examples/welcome.ts

If you run the program again, it’s cached and doesn’t need to download again. Force a reload with --reload:

deno run --reload https://deno.land/std/examples/welcome.ts

Deno sandbox

Deno is a sandbox by default. Programs cannot access:

  • The file system
  • The network
  • The environment variables
  • Run subprocesses

You allow access by passing flags like --allow-read, --allow-write, --allow-net, --allow-env, --allow-run. Or --allow-all (or -A) to disable all security.

Formatting code

Deno has a built-in code formatter. Run deno fmt to format all files in the current directory, or deno fmt file.ts for a specific file.

The standard library

The Deno standard library is available at https://deno.land/std. It includes:

  • archive tar archive utilities
  • async async utilities
  • bytes helpers to manipulate bytes slices
  • datetime date/time parsing
  • encoding encoding/decoding for various formats
  • flags parse command-line flags
  • fmt formatting and printing
  • fs file system API
  • hash crypto library
  • http HTTP server
  • io I/O library
  • log logging utilities
  • mime support for multipart data
  • node Node.js compatibility layer
  • path path manipulation
  • ws websockets

Using third-party packages

You can import modules directly from URLs:

import { Client } from 'https://deno.land/x/postgres@v0.11.3/mod.ts'

Or from npm:

import chalk from 'npm:chalk@5'

Find out more

The Deno official website is https://deno.land

The API documentation is available at https://doc.deno.land

awesome-deno: https://github.com/denolib/awesome-deno

Lessons in this unit:

0: Introduction
1: ▶︎ Deno
2: WebAssembly