The Response object supports streaming via the standard body property, which returns a ReadableStream<Uint8Array>. This allows you to process large responses incrementally.
import { fetch } from 'wreq-js';const response = await fetch('https://example.com/large-file', { browser: 'chrome_142',});const stream = response.body;if (stream) { const reader = stream.getReader(); while (true) { const { done, value } = await reader.read(); if (done) break; console.log(`Received ${value.byteLength} bytes`); }}
If you want progress before you start consuming response.body, use onRequestEvent.
This gives you visibility into request start, headers, and native body download progress.
const response = await fetch('https://example.com/file.zip', { browser: 'chrome_142', onRequestEvent(event) { switch (event.type) { case 'request_start': console.log('connecting'); break; case 'request_sent': console.log('waiting for response'); break; case 'response_headers': console.log('status:', event.status); console.log('length:', event.contentLength); break; case 'body_progress': if (event.contentLength) { const pct = ((event.downloadedBytes ?? 0) / event.contentLength) * 100; console.log(`downloaded ${pct.toFixed(1)}%`); } break; case 'body_complete': console.log('download complete'); break; } },});console.log(await response.arrayBuffer());