Web Streams Polyfill provides JavaScript implementations of the Web Streams APIs based on the WHATWG spec reference implementation. It can be used as a ponyfill (adds stream classes without replacing globals) or as a polyfill (replaces native stream globals) to enable Web Streams in ES5/ES2015+ environments, including via Node modules or script tags.
Project status
- Actively maintained, with a very recent upstream push on 2026-06-11 and the latest published updates being v4.3.0 (2026-05-15).
- Apparent update cadence is not constant, but it has been relatively active recently, with v4.3.0 (May 2026) following v4.2.0 (Aug 2025), about 9 months apart, and earlier releases also occurring on a multi-month to annual-ish rhythm.
AI summary generated
Recent updates
v4.3.0
v4.3.0 focuses on performance optimizations for streams. It adds fast paths so `defaultReader.read()` and `byobReader.read(view)` can immediately return an already-resolved promise when buffered chunks are available, and updates `pipeTo()` to batch-read all currently-available chunks while still respecting backpressure.
v4.2.0
v4.2.0 updates the library to align with WHATWG Streams spec snapshot 080852c. Beyond the documented spec alignment, the release includes substantial TypeScript typing changes around ReadableStream reader APIs and BYOB (Bring-Your-Own-Buffer) view types, plus tooling and workspace configuration updates.
BreakingFeaturesv4.1.0
v4.1.0 aligns the polyfill with a newer WHATWG Streams spec revision. It fixes ReadableStream async iterator promise ordering for both next() and return(), and includes some controller typing improvements. The code diff also shows additional type and internal refactors beyond what the release notes mention.
v4.0.0
v4.0.0 significantly restructures how web-streams-polyfill is published and consumed, using Node package subpath exports and switching the ES2018 variant to the ES2015-based build. It also updates the ReadableStream.from() implementation to avoid relying on async generator downleveling for ES5, and it minifies the published JavaScript to reduce download size.
Breakingv3.3.3
v3.3.3 is a small update focused on aligning the ReadableStream typings with TypeScript's AsyncIterable<R> expectations. The diff shows both type declaration changes and a runtime/internal change related to how the async iterator symbol is resolved and wired.
v3.3.2
Release v3.3.2 is described as a bug fix for a bad npm publish. The code diff included in this comparison shows only metadata changes (version number updates) and a changelog entry, with no functional code changes visible.
v3.3.1
v3.3.1 primarily restores compatibility changes that were likely too aggressive in v3.3.0. It reverts the package Node engine requirement and restores TypeScript 3.5 and below support by changing how type declaration files are generated and published.
v3.3.0
v3.3.0 expands ReadableStream capabilities (notably ReadableStream.from, plus BYOB reader enhancements like a min option) and aligns behavior with a newer WHATWG Streams spec commit. It also adds support for AbortSignal.reason during pipe abortion and improves internal handling to avoid Bluebird-related warnings.
Featuresv4.0.0-beta.3
v4.0.0-beta.3 mainly aligns the polyfill with a newer WHATWG Streams spec snapshot and includes a fix for ReadableStream.pipeTo() in the abort/preventCancel=true scenario. The code diff shows additional internal behavioral changes around reader lock release and BYOB pending read handling that are not described in the release notes.
v4.0.0-beta.2
v4.0.0-beta.2 primarily updates the polyfill to interoperate with native Web Streams in scenarios involving piping, and improves compatibility with older Node packaging and Promise handling. The release notes mention pipeTo/pipeThrough support with native WritableStream, package export fallbacks, and suppressing Bluebird warning noise.
Features