# Deno v2.9.6 - Product: Deno (https://whatsnew.fyi/product/deno) - Vendor: Deno - Date: 2026-08-27 - Version: v2.9.6 - Original notes: https://github.com/denoland/deno/releases/tag/v2.9.6 - Permalink: https://whatsnew.fyi/product/deno/releases/v2.9.6 What's New is an index, not a publisher: every entry below links to the vendor's own release notes, which are the authoritative source. Entries are labelled where they are hand-curated sample data, pre-releases, or drawn from a secondary source such as a developer blog. Reuse: the summaries, labels and curation here are © What's New. Quote freely with attribution and a link back; wholesale republication of the corpus is not permitted — terms: https://whatsnew.fyi/terms. The vendors' own release notes remain their publishers'. --- - **added** — Add support for 'text/x-component' content type in compressible - **added** — Add clipboard API for desktop - **added** — Support checked, icon, and tooltip on desktop menu items - **fixed** — Isolate esbuild downloads from workspace registries - **fixed** — Combine duplicate headers for Vary matching in cache - **fixed** — Remove orphaned sync-types parser - **fixed** — Cap adaptive buffer initial allocations in core - **fixed** — Make Unix pipe fd ownership explicit in core - **fixed** — Make user timer waker state thread-safe in core - **fixed** — Compare a range against a line in V8's units for coverage - **fixed** — Preserve RSA-OAEP label bytes in crypto - **fixed** — Keep dots in the app name when resolving the runtime library in desktop - **fixed** — Keep the macOS bundle signature valid unless an update is applied in desktop - **fixed** — Never block the JS thread on the error-report dialog in desktop - **fixed** — Propagate deno.json version and license into packaged installers in desktop - **fixed** — Run Vite-based HMR dev servers inside the desktop runtime - **fixed** — Transport binding args and results as DesktopValue so Uint8Array survives in desktop - **fixed** — Enforce permissions for proxy transports in ext/fetch - **fixed** — Only retry transport errors on pooled connections in ext/fetch - **fixed** — Raise default HTTP/2 SETTINGS_MAX_HEADER_LIST_SIZE to 256KB in ext/fetch ###### 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) - fix(coverage): compare a range against a line in V8's units (#36613) - fix(crypto): preserve RSA-OAEP label bytes (#36441) - fix(desktop): keep dots in the app name when resolving the runtime library (#36006) - fix(desktop): keep the macOS bundle signature valid unless an update is applied (#36574) - fix(desktop): never block the JS thread on the error-report dialog (#36575) - fix(desktop): propagate deno.json version and license into packaged installers (#36577) - fix(desktop): run Vite-based HMR dev servers inside the desktop runtime (#36488) - fix(desktop): transport binding args and results as DesktopValue so Uint8Array survives (#36573) - fix(ext/fetch): enforce permissions for proxy transports (#36217) - fix(ext/fetch): only retry transport errors on pooled connections (#36415) - fix(ext/fetch): raise default HTTP/2 SETTINGS_MAX_HEADER_LIST_SIZE to 256KB (#36558) - fix(ext/http): keep request body readable after response is sent (#36629) - fix(ext/http): route invalid async responses to onError (#36437) - fix(ext/napi): don't invoke napi_wrap finalizer twice at teardown (#36556) - fix(ext/napi): run JS-calling finalizers safely, NULL string result, and Float16Array (#36572) - fix(ext/napi): surface OS error and path on addon load failure (#36630) - fix(ext/napi): track pending finalizers by identity (#36551) - fix(ext/napi): wake the event loop at the next uv_timer deadline (#36559) - fix(ext/net): skip unsupported DNS records in ANY queries (#36650) - fix(ext/node): accept string ports in dns.lookupService (#36546) - fix(ext/node): build the proxied request target with the URL parser (#36557) - fix(ext/node): do not resume client TLS sessions unless requested (#36592) - fix(ext/node): fix perf_hooks detail.req.url proxied path duplication (#36407) - fix(ext/node): handle readv short reads (#36211) - fix(ext/node): require sys permission for inspector.open (#36465) - fix(ext/node_sqlite): invalidate sessions on database close (#36633) - fix(ext/tls): avoid panic for mismatched client certificate and key (#36457) - fix(ext/web): clean up abort handlers when listeners are removed (#36226) - fix(ext/web): close transfer MessagePort when a transferred readable is cancelled (#36270) - fix(ext/web): snapshot SharedArrayBuffer input in TextDecoder.decode() (#36611) - fix(fetch): require an initial multipart boundary (#36470) - fix(ffi): validate struct return buffers (#36373) - fix(fmt): honor .editorconfig when formatting from stdin (#36267) - fix(fs): require write permission for creating opens (#36497) - fix(fs): use a private FsFile constructor token (#36439) - fix(glob): retain valid gitignore rules after parse errors (#36478) - fix(http): preserve keep-alive after reading request body (#36690) - fix(http): truncate streaming responses to content length (#36496) - fix(lsp): restrict registry completion endpoint schemes (#36477) - fix(node): check reads during require resolution (#36461) - fix(node): match domain uncaught exception handling (#36475) - fix(node): preserve v8 deserializer view offsets (#36460) - fix(node): validate Brotli encoder operations (#36530) - fix(node): validate raw outgoing HTTP headers (#36471) - fix(node/crypto): preserve binary key export passphrases (#36443) - fix(node_crypto): apply RFC 7748 scalar decoding for X448 (#3646 _[Truncated at 4000 characters — full notes: https://github.com/denoland/deno/releases/tag/v2.9.6]_