Deno v2.5.0stable Released Sep 10, 2025
โš ๏ธ Breaking Change Impact Score: 7/10

Deno v2.5.0 โ€” Release Notes & Engineering Impact

Source available โ€” automated, not human-reviewed

Component: deno ยท Channel: stable. Automated analysis, not a compatibility certification. How this works.

Analysis updated: 2026-11-01.

Breaking-change evidence from the source

  • - feat(BREAKING/fmt): prompt or require `deno fmt .` when providing no files and
Read the original context โ†—
Source flags breaking changes โ€” review applicability
๐Ÿ“„ .MD
โšก Executive Summary (TL;DR)

Deno v2.5.0. Source highlight: feat(BREAKING/fmt): prompt or require `deno fmt .` when providing no files and

Who Does This Impact? (Role-Based Analysis)

๐Ÿ’ป Software Engineers & Devs

Check the source notes against the package and APIs you use before upgrading.

๐Ÿ“Š Product & Engineering Leads

Use the documented changes to assess relevance to your product; release frequency alone is not a quality measure.

โš™๏ธ DevOps & Security

Verify the target version, runtime requirements and rollback procedure in the official documentation.

โš ๏ธ Breaking Changes & Deprecations (1)

  • - feat(BREAKING/fmt): prompt or require `deno fmt .` when providing no files and

โœจ New Features & Capabilities (6)

  • feat(BREAKING/fmt): prompt or require `deno fmt .` when providing no files and
  • feat(bundle): runtime API for deno bundle (#29949)
  • feat(bundle): support html entrypoint (#29856)
  • feat(cli): reload environment variables with `--watch` and `--env-file`
  • feat(ext/fetch): Parse unix socket and vsock proxies from env var (#30377)
  • feat(ext/node): add sqlite-type symbol for DatabaseSync (#30511)

๐Ÿ”ง Bug Fixes & Patches (6)

  • fix(bundle): avoid cloning parsed source, restore owned transpile assertion
  • fix(bundle): do not error on fallible dynamic imports/requires (#30522)
  • fix(bundle): don't error when using npm package without bin as entrypoint
  • fix(bundle): properly display error on invalid config in watch mode (#30621)
  • fix(cache): cache and uninstall are package manager subcommands (#30613)
  • fix(check): don't ignore ambient declarations for existent files (#30591)
๐Ÿ“„ View Raw Release Notes (Original Developer Log)
### 2.5.0 / 2025.09.10 - feat(BREAKING/fmt): prompt or require `deno fmt .` when providing no files and no config files discovered (#30623) - feat(bundle): runtime API for deno bundle (#29949) - feat(bundle): support html entrypoint (#29856) - feat(cli): reload environment variables with `--watch` and `--env-file` (#30197) - feat(ext/fetch): Parse unix socket and vsock proxies from env var (#30377) - feat(ext/node): add sqlite-type symbol for DatabaseSync (#30511) - feat(ext/process): add collector utilities to `ChildProcess.stdout` & `ChildProcess.stderr` (#30552) - feat(fmt): apply object spacing to import/export lines (#30371) - feat(install): refresh install report (#30615) - feat(install): update warning for npm package build scripts (#30527) - feat(lint): no-import-prefix workspace rule (#30598) - feat(lint): no-unversioned-import rule (#30609) - feat(node): implement async hooks for nextTick TickObject tracking (#30578) - feat(npm): support `bundleDependencies` in npm dependencies (#30521) - feat(test): Add setup and teardown APIs to `Deno.test` API (#30504) - feat(unstable): WebSocket headers field (#30321) - feat(unstable): use Node.js `setTimeout` and `setInterval` (#29993) - feat: TypeScript 5.9.2 (#30601) - feat: V8 14.0.0 (#30629) - feat: `deno run` with no arguments prints list of available tasks (#30592) - feat: add `tcpBacklog` arg to `Deno.listen{Tls}` and `Deno.serve` (#30541) - feat: allow disable hostname verification in TLS (#30409) - feat: permission audit log (#30575) - feat: permissions in the config file (#30330) - fix(bundle): avoid cloning parsed source, restore owned transpile assertion (#30624) - fix(bundle): do not error on fallible dynamic imports/requires (#30522) - fix(bundle): don't error when using npm package without bin as entrypoint (#30523) - fix(bundle): properly display error on invalid config in watch mode (#30621) - fix(cache): cache and uninstall are package manager subcommands (#30613) - fix(check): don't ignore ambient declarations for existent files (#30591) - fix(check): support "compilerOptions.rootDirs" in tsconfig (#30495) - fix(check): support "moduleResolution": "bundler" in compiler options (#30603) - fix(cli): support data urls in preload by not splitting on comma. (#30544) - fix(cli/run): resolve conflict when dir has same name as a task (#29538) - fix(dts): align crypto.getRandomValues in lib.deno_crypto.d.ts with lib.dom.d.ts and lib.webworker.d.ts (#30647) - fix(dts): specify the underlying buffer type in more places (#30640) - fix(ext/fetch): only uppercase known methods (#30290) - fix(ext/node): Readable adapter cancel semantics (#30526) - fix(ext/node): `crypto.hkdfSync` returns wrong result for non-Uint8Array TypedArray inputs (#30463) - fix(ext/node): `fs.exists` and `fs.existsSync` compatibility (#30507) - fix(ext/node): `fs.mkdtemp` and `fs.mkdtempSync` compatibility (#30602) - fix(ext/node): `fs.path`' `makelong` and `resolve` compatibility (#30503) - fix(ext/node): fix hang induced by maxSockets bounds (#30622) - fix(ext/node): fs.symlink and fs.symlinkSync compatibility (#30555) - fix(ext/node): handle `null` keypair in tls connect (#30516) - fix(ext/node): http.server.listen to handle signal option (#30515) - fix(ext/node): ignore Node.js' `--experimental-*` flags when spawning child process (#26351) - fix(ext/node): implement http.res.setHeaders (#30586) - fix(ext/node): path.normalize compatibility (#30537) - fix(ext/node): path.relative compatibility (#30566) - fix(ext/node): readline line separators (#30630) - fix(ext/node): set socket.authorized to true for https request (#30641) - fix(ext/node): support JS underlying stream in TLS (#30465) - fix(ext/webgpu): add illegal constructor errors (#30500) - fix(init): eliminate flickering progress bar (#30496) - fix(init): use temp `node_modules` folders for `deno init --npm ...` (#30492) - fix(install): don't try to re-symlink binaries in node_modules if the symlink is correct (#30546) - fix(install): force refresh if cannot find version (#30483) - fix(install): print install report on `add`, `cache`, and all `install` variants, move scripts and deprecation warnings after the report (#30549) - fix(install/cache): better discovery for config file based on entrypoint (#30608) - fix(lsp): auto-import dep entries from workspace member import maps (#30667) - fix(lsp): goto-type-definition for builtin on startup (#30499) - fix(lsp): import rewrites in moved file (#30628) - fix(napi): buffer finalizer is nullable (#30514) - fix(node): improve directory import error suggestion (#30619) - fix(node): regression where Node fs APIs required elevated permissions on Windows (#30535) - fix(node_resolver): incorrect resolution of `require("..")` (#30524) - fix(npm): do not error on failure to write warned script file (#30479) - fix(publish): unfurl import.meta.resolve calls (#30663) - fix(tests): Switch from --nocapture to --no-capture (#30638) - fix(types): specify `ArrayBuffer` as a backing buffer type for `Response.body` and `Response.bytes` (#30435) - fix(types): specify `ArrayBuffer` as a backing buffer type for `TextEncoder.encode()` (#30434) - fix(unstable): make QuicListener yield QuicIncoming (#30150) - fix(unstable): support unstable-raw-imports when prewarmed (#30530) - fix: add another space after warning symbol (#30482) - fix: do not have duplicate progress bars for post install scripts (#30489) - fix: pass npm process state when spawning script in npm package via Node APIs (#30490) - fix: upgrade to swc_ecma_parser 23 (#30564)