Several follow-ups to the ES2025 iterator helpers have reached Stage 4. This is the status as of October 2026, checked against the tc39/proposals finished list, the current ECMA-262 draft, and Node 24.19.0 and 26.7.0 (both tested).
| Feature | What it does | Edition (tc39/proposals) | Node 24.19 | Node 26.7 |
|---|---|---|---|---|
Iterator.concat(...iterables) |
Yields each iterable in turn | ES2026 | no | yes |
Iterator.zip / zipKeyed |
Steps iterables in lockstep into arrays or objects | ES2027 | no | no |
Iterator.prototype.join |
Joins values into a string, like Array#join |
ES2027 | no | no |
chunks(n) / windows(n) |
Non-overlapping or sliding groups | ES2027 | no | no |
includes(value) |
SameValueZero membership test | ES2027 | no | no |
The current ECMA-262 draft contains concat, zip, zipKeyed and join. It did not yet contain chunks, windows or includes when I read it. For those three, the proposal repositories still said Stage 3 while the tc39/proposals commits record Stage 4 on 29 September 2026, so treat their final shape as slightly less settled.
Key behaviour:
concattakes iterables only. Strings and bare iterators throw aTypeError; wrap an iterator withIterator.from.ziptakes an iterable of iterables and an options bag withmode:"shortest"(default),"longest"(with optionalpadding) or"strict"(throws if lengths differ). It closes the other inputs when it stops, so infinite inputs are fine.chunksyields a shorter final group.windowsyields only full windows unless you pass"allow-partial".
Still unfinished: Iterator.range and async iterator helpers are Stage 2.
Until you can rely on these, feature-detect or use a polyfill such as core-js, or write the small generator equivalents.