Skip to content

Commit e6fae30

Browse files
authored
Remove XHR support from Flight (#26827)
We currently support passing an XHR request to Flight for broader compat and possibly better perf than `fetch()`. However, it's a little tricky because ideally the RSC protocol is really meant to support binary data too. XHR does support binary but it doesn't support it while also streaming. We could maybe support this only when you know it's going to be only text streams but it has some limitations in how we can encode separators if we can't use binary. Nobody is really asking for this so we might as well delete it.
1 parent f181ba8 commit e6fae30

File tree

2 files changed

+0
-34
lines changed

2 files changed

+0
-34
lines changed

fixtures/flight-browser/index.html

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -73,12 +73,6 @@ <h1>Flight Example</h1>
7373
let data = ReactServerDOMClient.createFromFetch(
7474
fetch(url)
7575
);
76-
// The client also supports XHR streaming.
77-
// var xhr = new XMLHttpRequest();
78-
// xhr.open('GET', url);
79-
// let data = ReactServerDOMClient.createFromXHR(xhr);
80-
// xhr.send();
81-
8276
renderResult(data);
8377
}
8478

packages/react-server-dom-webpack/src/ReactFlightDOMClientBrowser.js

Lines changed: 0 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@ import {
1717
createResponse,
1818
getRoot,
1919
reportGlobalError,
20-
processStringChunk,
2120
processBinaryChunk,
2221
close,
2322
} from 'react-client/src/ReactFlightClient';
@@ -92,32 +91,6 @@ function createFromFetch<T>(
9291
return getRoot(response);
9392
}
9493

95-
function createFromXHR<T>(
96-
request: XMLHttpRequest,
97-
options?: Options,
98-
): Thenable<T> {
99-
const response: FlightResponse = createResponseFromOptions(options);
100-
let processedLength = 0;
101-
function progress(e: ProgressEvent): void {
102-
const chunk = request.responseText;
103-
processStringChunk(response, chunk, processedLength);
104-
processedLength = chunk.length;
105-
}
106-
function load(e: ProgressEvent): void {
107-
progress(e);
108-
close(response);
109-
}
110-
function error(e: ProgressEvent): void {
111-
reportGlobalError(response, new TypeError('Network error'));
112-
}
113-
request.addEventListener('progress', progress);
114-
request.addEventListener('load', load);
115-
request.addEventListener('error', error);
116-
request.addEventListener('abort', error);
117-
request.addEventListener('timeout', error);
118-
return getRoot(response);
119-
}
120-
12194
function encodeReply(
12295
value: ReactServerValue,
12396
): Promise<
@@ -129,7 +102,6 @@ function encodeReply(
129102
}
130103

131104
export {
132-
createFromXHR,
133105
createFromFetch,
134106
createFromReadableStream,
135107
encodeReply,

0 commit comments

Comments
 (0)