# Streams Demos

Append child WritableStream
  Piping through a series of transforms to a custom writable stream that appends children to the DOM.
Streaming element
  Using custom element to stream into a given DOM location.
Streaming element with backpressure
  A variation on the streaming element demo that adds backpressure to the element's writable stream, decreasing jank.
Streaming fetch() call with a progress bar | (Source Code)
  A call to the fetch() api that uses the ReadableStream on the response body to fill a progress bar.
Streaming response from a service worker that instantly populates the DOM | (Source Code)
  A book search app that caches responses from an API and streams them to the DOM, allowing for offline streaming responses and making use of the browser's streaming HTML parser.
Progress indicators with Service Workers and Fetch | (Source Code)
  Streams intercept Service Worker `FetchEvent` and `fetch()` statements to show progress indicators. See browser support notes.
Grayscale a PNG | (Source Code)
  A PNG is retrieved via fetch(), and the response body is piped through a TransformStream to convert the PNG data to black and white.
Unpack chunks of a PNG | (Source Code)
  A PNG is fetched as a ReadableStream, then `pipeThrough()` is used to transform the stream of Uint8Arrays to a stream of PNG chunks.

Feel free to submit more demos by sending a pull request to the whatwg/streams repository!