Asynchronously iterable streamsBaseline · Newly available
Asynchronous iteration of a stream allows you to use for await … of loops to iterate through a stream's incoming data.
Works in the latest version of every major browser, but older devices may not support it yet. Baseline since Sep 14, 2026.
Browser support
DesktopChrome
1–123Not supported
124+Supportedsince Apr 16, 2024
Current: 155Edge
12–123Not supported
124+Supportedsince Apr 18, 2024
Current: 154Firefox
1–109Not supported
110+Supportedsince Feb 14, 2023
Current: 157Safari
1–26.6Not supported
27+Supportedsince Sep 14, 2026
Current: 27MobileChrome Android
18–123Not supported
124+Supportedsince Apr 16, 2024
Current: 155Firefox Android
4–109Not supported
110+Supportedsince Feb 14, 2023
Current: 157Safari iOS
1–26.6Not supported
27+Supportedsince Sep 14, 2026
Current: 27How to use
Every current browser supports this, but it only became Baseline on Sep 14, 2026. Use it as a progressive enhancement, or keep a fallback if you support older devices.
Example
Full syntax and examples are on MDN: asyncIterator.
Feature detection
JS · check before using
if ("ReadableStream" in globalThis && "@@asyncIterator" in ReadableStream.prototype) {
// ReadableStream.@@asyncIterator is available
}Documentation (MDN)
Specification
Sub-features
Support for each part of the feature (2). The overall table above shows when the whole feature works.
| Sub-feature | Chrome | Edge | Firefox | Safari | Chrome Android | Firefox Android | Safari iOS |
|---|---|---|---|---|---|---|---|
| ReadableStream.@@asyncIterator | 124 | 124 | 110 | 27 | 124 | 110 | 27 |
| ReadableStream.values | 124 | 124 | 110 | 27 | 124 | 110 | 27 |