coderef

Explicit resource managementLimited availability

The using and await using declarations and the dispose and asyncDispose symbols manage the lifecycle of resources such as file handles and streams. The DisposableStack and AsyncDisposableStack objects can group, dispose, and coordinate dependencies between multiple disposable resources.

Not yet supported in all major browsers — check the table and provide a fallback.

Browser support

DesktopChrome
1–133Not supported
134+Supportedsince Mar 4, 2025
Current: 155
Edge
12–133Not supported
134+Supportedsince Mar 6, 2025
Current: 154
Firefox
1–140Not supported
141+Supportedsince Jul 22, 2025
Current: 157
Safari
✕Not supportedup to 27
Current: 27
MobileChrome Android
18–133Not supported
134+Supportedsince Mar 4, 2025
Current: 155
Firefox Android
4–140Not supported
141+Supportedsince Jul 22, 2025
Current: 157
Safari iOS
✕Not supportedup to 27
Current: 27

How to use

Not supported in Safari, Safari iOS. Use feature detection below and provide a fallback (or a polyfill) for those browsers.

Example

Full syntax and examples are on MDN: AsyncDisposableStack.

Feature detection

JS · check before using
if (typeof AsyncDisposableStack !== "undefined") {
  // AsyncDisposableStack is available
}

Sub-features

Support for each part of the feature (28). The overall table above shows when the whole feature works.

Sub-featureChromeEdgeFirefoxSafariChrome AndroidFirefox AndroidSafari iOS
AsyncDisposableStack134134141✕134141✕
AsyncDisposableStack.@@asyncDispose134134141✕134141✕
AsyncDisposableStack.AsyncDisposableStack134134141✕134141✕
AsyncDisposableStack.adopt134134141✕134141✕
AsyncDisposableStack.defer134134141✕134141✕
AsyncDisposableStack.disposeAsync134134141✕134141✕
AsyncDisposableStack.disposed134134141✕134141✕
AsyncDisposableStack.move134134141✕134141✕
AsyncDisposableStack.use134134141✕134141✕
AsyncIterator.@@asyncDispose134134141✕134141✕
DisposableStack134134141✕134141✕
DisposableStack.@@dispose134134141✕134141✕
DisposableStack.DisposableStack134134141✕134141✕
DisposableStack.adopt134134141✕134141✕
DisposableStack.defer134134141✕134141✕
DisposableStack.dispose134134141✕134141✕
DisposableStack.disposed134134141✕134141✕
DisposableStack.move134134141✕134141✕
DisposableStack.use134134141✕134141✕
Iterator.@@dispose134134141✕134141✕
Show 8 more
Sub-featureChromeEdgeFirefoxSafariChrome AndroidFirefox AndroidSafari iOS
SuppressedError134134141✕134141✕
SuppressedError.SuppressedError134134141✕134141✕
SuppressedError.error134134141✕134141✕
SuppressedError.suppressed134134141✕134141✕
Symbol.asyncDispose127127141✕127141✕
Symbol.dispose125125141✕125141✕
await_using134134141✕134141✕
using134134141✕134141✕