denoland avatar

Deno Release Notes & Changelog

denoland/deno

The latest Deno release is v2.9.8, published on .

A modern runtime for JavaScript and TypeScript.

108,814 starsRustv2.9.8
denotypescriptjavascriptrust

Deno release notes

Deno v2.9.8

Latest
Official release notes

2.9.8 / 2026.10.21

  • fix(compile): check read permission for dynamically imported local files (#36925)
  • fix(completions): complete script paths for bare deno run in zsh (#36976)
  • fix(core): keep op contexts alive until the isolate is disposed (#37026)
  • fix(coverage): skip the V8 code cache while collecting coverage (#36901)
  • fix(ext/fetch): bump hyper-util to 0.1.21 and hyper to 1.11.1 to cancel idle interval when pool empties (#36968)
  • fix(ext/napi): check napi_create_dataview bounds for overflow (#36962)
  • fix(ext/napi): ignore the callback return value while an exception is pending (#36942)

2.9.7 / 2026.09.16

  • fix(audit): honor configured CA stores (#36728)
  • fix(cache): make HTTP authority paths unambiguous (#36356)
  • fix(cli): accept all valid sys permission descriptors (#36753)
  • fix(cli): don't duplicate passthrough args for deno deploy/sandbox (#36722)
  • fix(cli): generate valid bash completions (#36736)
  • fix(cli): preserve double dash before the entrypoint (#36835)
  • fix(cli): restore optional-value semantics for deno bundle --sourcemap (#36723)
  • fix(completions): keep the dash on short flags in zsh completions (#36720)

2.9.6 / 2026.08.27

  • feat(compressible): add support for 'text/x-component' content type (#36450)
  • feat(desktop): clipboard api (#35750)
  • feat(desktop): support checked, icon, and tooltip on menu items (#36649)
  • fix(bundle): isolate esbuild downloads from workspace registries (#36467)
  • fix(cache): combine duplicate headers for Vary matching (#36476)
  • fix(cli_parser): remove orphaned sync-types parser
  • fix(core): cap adaptive buffer initial allocations (#36432)
  • fix(core): make Unix pipe fd ownership explicit (#36353)
  • fix(core): make user timer waker state thread-safe (#36495)

2.9.5 / 2026.08.06

  • feat(add): --unscoped flag to alias packages by their unscoped name (#36319)
  • feat(task): add --members flag to run tasks in workspace members only (#35748)
  • feat: add Blob/Body textStream() (#35616)
  • feat: add experimental QuickJS backend (#36194)
  • fix(bundle): avoid esbuild protocol deadlock (#36427)
  • fix(bundle): respect runtime file permissions (#36107)
  • fix(cjs): use loader sources for recursive analysis (#36111)
  • fix(cli): escape control characters in external metadata (#36198)
  • fix(core): don't resolve internal module imports with the user's import map (#36303)

2.9.4 / 2026.07.23

  • feat(desktop): enable --hmr for React Router (#35900)
  • feat(ext/node): add a byteLength/length parameter to Buffer.indexOf/lastIndexOf/includes (#35872)
  • feat(ext/node): support raw chacha20 cipher in crypto.createCipheriv (#36016)
  • feat: upgrade V8 to 150.2.0 (#36098)
  • fix(add): support --minimum-dependency-age flag in deno add/remove (#36099)
  • fix(cache): store Web Cache under origin data (#36145)
  • fix(canvas): require FFI permission for native window handles (#36080)
  • fix(clean): reject symlinked node_modules cleanup roots (#36190)

2.9.3 / 2026.07.15

  • feat(cli): deno add --no-save and --save-optional (#36039)
  • feat(cli): add --min-dep-age alias (#35914)
  • feat(compile): support aarch64-pc-windows-msvc target (#36004)
  • feat(ext/fetch): add http2MaxHeaderListSize option to Deno.createHttpClient (#33194)
  • fix(bundle): preserve raw imports in watch mode (#36040)
  • fix(canvas): don't hold SurfaceData mut borrow over window resize (#35993)
  • fix(config): reject out-of-range minimum dependency ages (#36051)
  • fix(core): block user ext imports after resolution (#36012)
  • fix(core): deactivate idle TTY write handles (#35886)

2.9.2 / 2026.07.08

  • feat(desktop): autodetect React Router framework (#35557)
  • feat(desktop): enable --hmr for Vite and Nuxt (#35851)
  • feat(desktop): run HMR by framework dev server (#35722)
  • feat(desktop): window opacity and transparency APIs (#35646)
  • feat(desktop): wire --exclude-unused-npm through to compile (#35740)
  • feat(ext/node): implement v8.setHeapSnapshotNearHeapLimit (#35694)
  • feat(ext/telemetry): honor OTEL_ATTRIBUTE_VALUE_LENGTH_LIMIT (#35068)
  • feat(inspector): start inspector server on SIGUSR1 (#35738)
  • feat(node): implement getTestContext() in node:test (#35678)

2.9.1 / 2026.07.01

  • feat(check): add --desktop flag to type-check for deno desktop (#35644)
  • feat(desktop): register deep-link URL schemes at bundle time (#35466)
  • feat: update laufey to 0.5.0 (#35663)
  • fix(bundle): emit CSSStyleSheet for CSS raw imports (#35598)
  • fix(cache): skip checksums for cached 404 entries (#35526)
  • fix(config): don't strip workspace-member includes from deploy config (#34788)
  • fix(core): apply deferred fast-call op upgrade to the captured bootstrap clone (#35630)
  • fix(core): prevent shared-buffer timer expiry race from losing timers (#35312)

2.9.0 / 2026.06.25

Read more: http://deno.com/blog/v2.9

  • feat(bundle): add --declaration flag to generate rolled-up .d.ts files (#33838)
  • feat(cli): add deno link and deno unlink subcommands (#34359)
  • feat(cli): add deno watch subcommand (#35301)
  • feat(cli): add deno list subcommand to list declared dependencies (#34972)
  • feat(cli): auto-migrate pnpm-workspace.yaml on resolution failure (#34993)
  • feat(cli): provide a node on PATH when Node.js is not installed (#34969)
  • feat(compile): persist Web Storage/KV in a per-app data directory (#34618)
  • feat(coverage): add configurable coverage thresholds (#35056)

2.8.3 / 2026.06.11

  • feat(cli): suggest DENO_TLS_CA_STORE on untrusted TLS certificate (#34756)
  • feat(cli): support --env-file in dependency and registry subcommands (#34843)
  • feat(compile): support watch mode (#34860)
  • feat(config): support globs in links (#34849)
  • feat(ext/crypto): implement SubtleCrypto.supports() static method (#34903)
  • feat(ext/crypto): support ML-DSA JWK import/export (#34914)
  • feat(ext/fetch): support priority in RequestInit (#34716)
  • feat(ext/node): auto-instrument node:http2 with OpenTelemetry (#34510)
  • feat(ext/node): notify control socket when node:http server starts serving (#34949)

Looking for an older version? The full Deno changelog is on the official denoland/deno releases page.

How to get notified of new Deno releases

Stay updated when Deno ships a new version. With GitWatchman, you can monitor denoland/deno and receive the full release notes by email, Slack, Discord or Telegram whenever a new version is published.

  1. Sign in with your GitHub or Google account at gitwatchman.com
  2. Add denoland/deno to your monitored repositories
  3. Get an alert with the release notes for every new version

You can also subscribe to the RSS feed for Deno releases (see our GitHub release RSS guide), follow Deno pre-releases and betas, or compare the best GitHub release trackers.

Related projects to track

Get notified of new Deno releases

One alert per release with the full notes, by email, Slack, Discord or Telegram. Free for up to 5 repositories.

Track Deno for free