diff --git a/packages/react-client/src/ReactFlightClient.js b/packages/react-client/src/ReactFlightClient.js index 259864e91d398..0e2bb5b9f4606 100644 --- a/packages/react-client/src/ReactFlightClient.js +++ b/packages/react-client/src/ReactFlightClient.js @@ -44,7 +44,6 @@ import type {TemporaryReferenceSet} from './ReactFlightTemporaryReferences'; import { enablePostpone, - enableFlightReadableStream, enableOwnerStacks, enableServerComponentLogs, enableProfilerTimer, @@ -406,14 +405,12 @@ function wakeChunkIfInitialized( function triggerErrorOnChunk(chunk: SomeChunk, error: mixed): void { if (chunk.status !== PENDING && chunk.status !== BLOCKED) { - if (enableFlightReadableStream) { - // If we get more data to an already resolved ID, we assume that it's - // a stream chunk since any other row shouldn't have more than one entry. - const streamChunk: InitializedStreamChunk = (chunk: any); - const controller = streamChunk.reason; - // $FlowFixMe[incompatible-call]: The error method should accept mixed. - controller.error(error); - } + // If we get more data to an already resolved ID, we assume that it's + // a stream chunk since any other row shouldn't have more than one entry. + const streamChunk: InitializedStreamChunk = (chunk: any); + const controller = streamChunk.reason; + // $FlowFixMe[incompatible-call]: The error method should accept mixed. + controller.error(error); return; } const listeners = chunk.reason; @@ -512,13 +509,11 @@ function resolveModelChunk( value: UninitializedModel, ): void { if (chunk.status !== PENDING) { - if (enableFlightReadableStream) { - // If we get more data to an already resolved ID, we assume that it's - // a stream chunk since any other row shouldn't have more than one entry. - const streamChunk: InitializedStreamChunk = (chunk: any); - const controller = streamChunk.reason; - controller.enqueueModel(value); - } + // If we get more data to an already resolved ID, we assume that it's + // a stream chunk since any other row shouldn't have more than one entry. + const streamChunk: InitializedStreamChunk = (chunk: any); + const controller = streamChunk.reason; + controller.enqueueModel(value); return; } const resolveListeners = chunk.value; @@ -1718,16 +1713,14 @@ function resolveModel( function resolveText(response: Response, id: number, text: string): void { const chunks = response._chunks; - if (enableFlightReadableStream) { - const chunk = chunks.get(id); - if (chunk && chunk.status !== PENDING) { - // If we get more data to an already resolved ID, we assume that it's - // a stream chunk since any other row shouldn't have more than one entry. - const streamChunk: InitializedStreamChunk = (chunk: any); - const controller = streamChunk.reason; - controller.enqueueValue(text); - return; - } + const chunk = chunks.get(id); + if (chunk && chunk.status !== PENDING) { + // If we get more data to an already resolved ID, we assume that it's + // a stream chunk since any other row shouldn't have more than one entry. + const streamChunk: InitializedStreamChunk = (chunk: any); + const controller = streamChunk.reason; + controller.enqueueValue(text); + return; } chunks.set(id, createInitializedTextChunk(response, text)); } @@ -1738,16 +1731,14 @@ function resolveBuffer( buffer: $ArrayBufferView | ArrayBuffer, ): void { const chunks = response._chunks; - if (enableFlightReadableStream) { - const chunk = chunks.get(id); - if (chunk && chunk.status !== PENDING) { - // If we get more data to an already resolved ID, we assume that it's - // a stream chunk since any other row shouldn't have more than one entry. - const streamChunk: InitializedStreamChunk = (chunk: any); - const controller = streamChunk.reason; - controller.enqueueValue(buffer); - return; - } + const chunk = chunks.get(id); + if (chunk && chunk.status !== PENDING) { + // If we get more data to an already resolved ID, we assume that it's + // a stream chunk since any other row shouldn't have more than one entry. + const streamChunk: InitializedStreamChunk = (chunk: any); + const controller = streamChunk.reason; + controller.enqueueValue(buffer); + return; } chunks.set(id, createInitializedBufferChunk(response, buffer)); } @@ -2967,38 +2958,28 @@ function processFullStringRow( ); } case 82 /* "R" */: { - if (enableFlightReadableStream) { - startReadableStream(response, id, undefined); - return; - } + startReadableStream(response, id, undefined); + return; } // Fallthrough case 114 /* "r" */: { - if (enableFlightReadableStream) { - startReadableStream(response, id, 'bytes'); - return; - } + startReadableStream(response, id, 'bytes'); + return; } // Fallthrough case 88 /* "X" */: { - if (enableFlightReadableStream) { - startAsyncIterable(response, id, false); - return; - } + startAsyncIterable(response, id, false); + return; } // Fallthrough case 120 /* "x" */: { - if (enableFlightReadableStream) { - startAsyncIterable(response, id, true); - return; - } + startAsyncIterable(response, id, true); + return; } // Fallthrough case 67 /* "C" */: { - if (enableFlightReadableStream) { - stopStream(response, id, row); - return; - } + stopStream(response, id, row); + return; } // Fallthrough case 80 /* "P" */: { diff --git a/packages/react-client/src/ReactFlightReplyClient.js b/packages/react-client/src/ReactFlightReplyClient.js index 81212437a09a0..65d1129b53830 100644 --- a/packages/react-client/src/ReactFlightReplyClient.js +++ b/packages/react-client/src/ReactFlightReplyClient.js @@ -18,10 +18,7 @@ import type { import type {LazyComponent} from 'react/src/ReactLazy'; import type {TemporaryReferenceSet} from './ReactFlightTemporaryReferences'; -import { - enableRenderableContext, - enableFlightReadableStream, -} from 'shared/ReactFeatureFlags'; +import {enableRenderableContext} from 'shared/ReactFeatureFlags'; import { REACT_ELEMENT_TYPE, @@ -663,23 +660,21 @@ export function processReply( return Array.from((iterator: any)); } - if (enableFlightReadableStream) { - // TODO: ReadableStream is not available in old Node. Remove the typeof check later. - if ( - typeof ReadableStream === 'function' && - value instanceof ReadableStream - ) { - return serializeReadableStream(value); - } - const getAsyncIterator: void | (() => $AsyncIterator) = - (value: any)[ASYNC_ITERATOR]; - if (typeof getAsyncIterator === 'function') { - // We treat AsyncIterables as a Fragment and as such we might need to key them. - return serializeAsyncIterable( - (value: any), - getAsyncIterator.call((value: any)), - ); - } + // TODO: ReadableStream is not available in old Node. Remove the typeof check later. + if ( + typeof ReadableStream === 'function' && + value instanceof ReadableStream + ) { + return serializeReadableStream(value); + } + const getAsyncIterator: void | (() => $AsyncIterator) = + (value: any)[ASYNC_ITERATOR]; + if (typeof getAsyncIterator === 'function') { + // We treat AsyncIterables as a Fragment and as such we might need to key them. + return serializeAsyncIterable( + (value: any), + getAsyncIterator.call((value: any)), + ); } // Verify that this is a simple plain object. diff --git a/packages/react-client/src/__tests__/ReactFlight-test.js b/packages/react-client/src/__tests__/ReactFlight-test.js index af12c583db11a..b2489705394a1 100644 --- a/packages/react-client/src/__tests__/ReactFlight-test.js +++ b/packages/react-client/src/__tests__/ReactFlight-test.js @@ -2623,7 +2623,7 @@ describe('ReactFlight', () => { ); }); - // @gate enableFlightReadableStream && enableAsyncIterableChildren + // @gate enableAsyncIterableChildren it('shares state when moving keyed Server Components that render async iterables', async () => { function StatefulClient({name, initial}) { const [state] = React.useState(initial); @@ -2814,7 +2814,7 @@ describe('ReactFlight', () => { ); }); - // @gate enableFlightReadableStream && enableAsyncIterableChildren + // @gate enableAsyncIterableChildren it('preserves debug info for server-to-server pass through of async iterables', async () => { let resolve; const iteratorPromise = new Promise(r => (resolve = r)); @@ -2849,10 +2849,9 @@ describe('ReactFlight', () => { }, ); - if (gate(flag => flag.enableFlightReadableStream)) { - // Wait for the iterator to finish - await iteratorPromise; - } + // Wait for the iterator to finish + await iteratorPromise; + await 0; // One more tick for the return value / closing. const transport = ReactNoopFlightServer.render( diff --git a/packages/react-server-dom-webpack/src/__tests__/ReactFlightDOMBrowser-test.js b/packages/react-server-dom-webpack/src/__tests__/ReactFlightDOMBrowser-test.js index 718c1c3a20264..6ac9609f5f108 100644 --- a/packages/react-server-dom-webpack/src/__tests__/ReactFlightDOMBrowser-test.js +++ b/packages/react-server-dom-webpack/src/__tests__/ReactFlightDOMBrowser-test.js @@ -2079,7 +2079,6 @@ describe('ReactFlightDOMBrowser', () => { }); } - // @gate enableFlightReadableStream it('should supports streaming ReadableStream with objects', async () => { const errors = []; let controller1; @@ -2161,7 +2160,6 @@ describe('ReactFlightDOMBrowser', () => { expect(errors).toEqual(['rejected']); }); - // @gate enableFlightReadableStream it('should cancels the underlying ReadableStream when we are cancelled', async () => { let controller; let cancelReason; @@ -2194,7 +2192,6 @@ describe('ReactFlightDOMBrowser', () => { expect(loggedReason).toBe(reason); }); - // @gate enableFlightReadableStream it('should cancels the underlying ReadableStream when we abort', async () => { const errors = []; let controller; @@ -2252,7 +2249,6 @@ describe('ReactFlightDOMBrowser', () => { expect(errors).toEqual([reason]); }); - // @gate enableFlightReadableStream it('should supports streaming AsyncIterables with objects', async () => { let resolve; const wait = new Promise(r => (resolve = r)); @@ -2369,7 +2365,6 @@ describe('ReactFlightDOMBrowser', () => { ); }); - // @gate enableFlightReadableStream it('should cancels the underlying AsyncIterable when we are cancelled', async () => { let resolve; const wait = new Promise(r => (resolve = r)); @@ -2408,7 +2403,6 @@ describe('ReactFlightDOMBrowser', () => { expect(loggedReason).toBe(reason); }); - // @gate enableFlightReadableStream it('should cancels the underlying AsyncIterable when we abort', async () => { const errors = []; const abortController = new AbortController(); diff --git a/packages/react-server-dom-webpack/src/__tests__/ReactFlightDOMEdge-test.js b/packages/react-server-dom-webpack/src/__tests__/ReactFlightDOMEdge-test.js index 3bd481205f1b4..f88e51a878ac9 100644 --- a/packages/react-server-dom-webpack/src/__tests__/ReactFlightDOMEdge-test.js +++ b/packages/react-server-dom-webpack/src/__tests__/ReactFlightDOMEdge-test.js @@ -645,7 +645,6 @@ describe('ReactFlightDOMEdge', () => { expect(result.get('value')).toBe('hello'); }); - // @gate enableFlightReadableStream it('can pass an async import to a ReadableStream while enqueuing in order', async () => { let resolve; const promise = new Promise(r => (resolve = r)); @@ -690,7 +689,6 @@ describe('ReactFlightDOMEdge', () => { expect(await reader.read()).toEqual({value: undefined, done: true}); }); - // @gate enableFlightReadableStream it('can pass an async import a AsyncIterable while allowing peaking at future values', async () => { let resolve; const promise = new Promise(r => (resolve = r)); @@ -742,7 +740,6 @@ describe('ReactFlightDOMEdge', () => { expect(await iterator.next()).toEqual({value: undefined, done: true}); }); - // @gate enableFlightReadableStream it('should ideally dedupe objects inside async iterables but does not yet', async () => { const obj = { this: {is: 'a large objected'}, @@ -820,7 +817,6 @@ describe('ReactFlightDOMEdge', () => { ); }); - // @gate enableFlightReadableStream it('should supports ReadableStreams with typed arrays', async () => { const buffer = new Uint8Array([ 123, 4, 10, 5, 100, 255, 244, 45, 56, 67, 43, 124, 67, 89, 100, 20, @@ -879,7 +875,6 @@ describe('ReactFlightDOMEdge', () => { expect(streamedBuffers).toEqual(buffers); }); - // @gate enableFlightReadableStream it('should support BYOB binary ReadableStreams', async () => { const buffer = new Uint8Array([ 123, 4, 10, 5, 100, 255, 244, 45, 56, 67, 43, 124, 67, 89, 100, 20, diff --git a/packages/react-server-dom-webpack/src/__tests__/ReactFlightDOMNode-test.js b/packages/react-server-dom-webpack/src/__tests__/ReactFlightDOMNode-test.js index 4278c220d8b83..20f461708ae65 100644 --- a/packages/react-server-dom-webpack/src/__tests__/ReactFlightDOMNode-test.js +++ b/packages/react-server-dom-webpack/src/__tests__/ReactFlightDOMNode-test.js @@ -292,7 +292,6 @@ describe('ReactFlightDOMNode', () => { ); }); - // @gate enableFlightReadableStream it('should cancels the underlying ReadableStream when we are cancelled', async () => { let controller; let cancelReason; @@ -336,7 +335,6 @@ describe('ReactFlightDOMNode', () => { ); }); - // @gate enableFlightReadableStream it('should cancels the underlying ReadableStream when we abort', async () => { const errors = []; let controller; diff --git a/packages/react-server-dom-webpack/src/__tests__/ReactFlightDOMReply-test.js b/packages/react-server-dom-webpack/src/__tests__/ReactFlightDOMReply-test.js index 64a0616cacc2a..88d1b993c3c7f 100644 --- a/packages/react-server-dom-webpack/src/__tests__/ReactFlightDOMReply-test.js +++ b/packages/react-server-dom-webpack/src/__tests__/ReactFlightDOMReply-test.js @@ -449,7 +449,6 @@ describe('ReactFlightDOMReply', () => { expect(response.obj).toBe(obj); }); - // @gate enableFlightReadableStream it('should supports streaming ReadableStream with objects', async () => { let controller1; let controller2; @@ -511,7 +510,6 @@ describe('ReactFlightDOMReply', () => { }); }); - // @gate enableFlightReadableStream it('should supports streaming AsyncIterables with objects', async () => { let resolve; const wait = new Promise(r => (resolve = r)); diff --git a/packages/react-server-dom-webpack/src/__tests__/ReactFlightDOMReplyEdge-test.js b/packages/react-server-dom-webpack/src/__tests__/ReactFlightDOMReplyEdge-test.js index 2697d3eeb2dc8..0c6ec9599e1e2 100644 --- a/packages/react-server-dom-webpack/src/__tests__/ReactFlightDOMReplyEdge-test.js +++ b/packages/react-server-dom-webpack/src/__tests__/ReactFlightDOMReplyEdge-test.js @@ -147,7 +147,6 @@ describe('ReactFlightDOMReplyEdge', () => { expect(await resultBlob.arrayBuffer()).toEqual(await blob.arrayBuffer()); }); - // @gate enableFlightReadableStream it('should supports ReadableStreams with typed arrays', async () => { const buffer = new Uint8Array([ 123, 4, 10, 5, 100, 255, 244, 45, 56, 67, 43, 124, 67, 89, 100, 20, @@ -194,7 +193,6 @@ describe('ReactFlightDOMReplyEdge', () => { expect(streamedBuffers).toEqual(buffers); }); - // @gate enableFlightReadableStream it('should support BYOB binary ReadableStreams', async () => { const buffer = new Uint8Array([ 123, 4, 10, 5, 100, 255, 244, 45, 56, 67, 43, 124, 67, 89, 100, 20, diff --git a/packages/react-server/src/ReactFlightReplyServer.js b/packages/react-server/src/ReactFlightReplyServer.js index d47a28d49d506..930998ea3d889 100644 --- a/packages/react-server/src/ReactFlightReplyServer.js +++ b/packages/react-server/src/ReactFlightReplyServer.js @@ -30,7 +30,6 @@ import { createTemporaryReference, registerTemporaryReference, } from './ReactFlightServerTemporaryReferences'; -import {enableFlightReadableStream} from 'shared/ReactFeatureFlags'; import {ASYNC_ITERATOR} from 'shared/ReactSymbols'; import hasOwnProperty from 'shared/hasOwnProperty'; @@ -230,14 +229,12 @@ function wakeChunkIfInitialized( function triggerErrorOnChunk(chunk: SomeChunk, error: mixed): void { if (chunk.status !== PENDING && chunk.status !== BLOCKED) { - if (enableFlightReadableStream) { - // If we get more data to an already resolved ID, we assume that it's - // a stream chunk since any other row shouldn't have more than one entry. - const streamChunk: InitializedStreamChunk = (chunk: any); - const controller = streamChunk.reason; - // $FlowFixMe[incompatible-call]: The error method should accept mixed. - controller.error(error); - } + // If we get more data to an already resolved ID, we assume that it's + // a stream chunk since any other row shouldn't have more than one entry. + const streamChunk: InitializedStreamChunk = (chunk: any); + const controller = streamChunk.reason; + // $FlowFixMe[incompatible-call]: The error method should accept mixed. + controller.error(error); return; } const listeners = chunk.reason; @@ -264,16 +261,14 @@ function resolveModelChunk( id: number, ): void { if (chunk.status !== PENDING) { - if (enableFlightReadableStream) { - // If we get more data to an already resolved ID, we assume that it's - // a stream chunk since any other row shouldn't have more than one entry. - const streamChunk: InitializedStreamChunk = (chunk: any); - const controller = streamChunk.reason; - if (value[0] === 'C') { - controller.close(value === 'C' ? '"$undefined"' : value.slice(1)); - } else { - controller.enqueueModel(value); - } + // If we get more data to an already resolved ID, we assume that it's + // a stream chunk since any other row shouldn't have more than one entry. + const streamChunk: InitializedStreamChunk = (chunk: any); + const controller = streamChunk.reason; + if (value[0] === 'C') { + controller.close(value === 'C' ? '"$undefined"' : value.slice(1)); + } else { + controller.enqueueModel(value); } return; } @@ -1054,23 +1049,20 @@ function parseModelString( return backingEntry; } } - if (enableFlightReadableStream) { - switch (value[1]) { - case 'R': { - return parseReadableStream(response, value, undefined, obj, key); - } - case 'r': { - return parseReadableStream(response, value, 'bytes', obj, key); - } - case 'X': { - return parseAsyncIterable(response, value, false, obj, key); - } - case 'x': { - return parseAsyncIterable(response, value, true, obj, key); - } + switch (value[1]) { + case 'R': { + return parseReadableStream(response, value, undefined, obj, key); + } + case 'r': { + return parseReadableStream(response, value, 'bytes', obj, key); + } + case 'X': { + return parseAsyncIterable(response, value, false, obj, key); + } + case 'x': { + return parseAsyncIterable(response, value, true, obj, key); } } - // We assume that anything else is a reference ID. const ref = value.slice(1); return getOutlinedModel(response, ref, obj, key, createModel); diff --git a/packages/react-server/src/ReactFlightServer.js b/packages/react-server/src/ReactFlightServer.js index 7f8dd32a99921..42ffdf1ef0d2a 100644 --- a/packages/react-server/src/ReactFlightServer.js +++ b/packages/react-server/src/ReactFlightServer.js @@ -23,8 +23,6 @@ import { enableComponentPerformanceTrack, } from 'shared/ReactFeatureFlags'; -import {enableFlightReadableStream} from 'shared/ReactFeatureFlags'; - import { scheduleWork, scheduleMicrotask, @@ -1162,7 +1160,6 @@ function processServerComponentReturnValue( return multiShot; } if ( - enableFlightReadableStream && typeof (result: any)[ASYNC_ITERATOR] === 'function' && (typeof ReadableStream !== 'function' || !(result instanceof ReadableStream)) @@ -2762,25 +2759,18 @@ function renderModelDestructive( return renderFragment(request, task, Array.from((iterator: any))); } - if (enableFlightReadableStream) { - // TODO: Blob is not available in old Node. Remove the typeof check later. - if ( - typeof ReadableStream === 'function' && - value instanceof ReadableStream - ) { - return serializeReadableStream(request, task, value); - } - const getAsyncIterator: void | (() => $AsyncIterator) = - (value: any)[ASYNC_ITERATOR]; - if (typeof getAsyncIterator === 'function') { - // We treat AsyncIterables as a Fragment and as such we might need to key them. - return renderAsyncFragment( - request, - task, - (value: any), - getAsyncIterator, - ); - } + // TODO: Blob is not available in old Node. Remove the typeof check later. + if ( + typeof ReadableStream === 'function' && + value instanceof ReadableStream + ) { + return serializeReadableStream(request, task, value); + } + const getAsyncIterator: void | (() => $AsyncIterator) = + (value: any)[ASYNC_ITERATOR]; + if (typeof getAsyncIterator === 'function') { + // We treat AsyncIterables as a Fragment and as such we might need to key them. + return renderAsyncFragment(request, task, (value: any), getAsyncIterator); } // We put the Date check low b/c most of the time Date's will already have been serialized diff --git a/packages/shared/ReactFeatureFlags.js b/packages/shared/ReactFeatureFlags.js index 2b982ad24245a..8ac0fd86e28ed 100644 --- a/packages/shared/ReactFeatureFlags.js +++ b/packages/shared/ReactFeatureFlags.js @@ -78,7 +78,6 @@ export const enableLegacyFBSupport = false; export const enableCache = true; export const enableLegacyCache = __EXPERIMENTAL__; -export const enableFlightReadableStream = true; export const enableAsyncIterableChildren = __EXPERIMENTAL__; export const enableTaint = __EXPERIMENTAL__; diff --git a/packages/shared/forks/ReactFeatureFlags.native-fb.js b/packages/shared/forks/ReactFeatureFlags.native-fb.js index 03417cb37da73..1948a38163cca 100644 --- a/packages/shared/forks/ReactFeatureFlags.native-fb.js +++ b/packages/shared/forks/ReactFeatureFlags.native-fb.js @@ -52,7 +52,6 @@ export const enableDeferRootSchedulingToMicrotask = true; export const enableDO_NOT_USE_disableStrictPassiveEffect = false; export const enableMoveBefore = true; export const enableFizzExternalRuntime = true; -export const enableFlightReadableStream = true; export const enableGetInspectorDataForInstanceInProduction = true; export const enableHalt = false; export const enableInfiniteRenderLoopDetection = false; diff --git a/packages/shared/forks/ReactFeatureFlags.native-oss.js b/packages/shared/forks/ReactFeatureFlags.native-oss.js index 8b8cff5cff415..12d1598e6a16e 100644 --- a/packages/shared/forks/ReactFeatureFlags.native-oss.js +++ b/packages/shared/forks/ReactFeatureFlags.native-oss.js @@ -40,7 +40,6 @@ export const enableDO_NOT_USE_disableStrictPassiveEffect = false; export const enableFabricCompleteRootInCommitPhase = false; export const enableMoveBefore = true; export const enableFizzExternalRuntime = true; -export const enableFlightReadableStream = true; export const enableGetInspectorDataForInstanceInProduction = false; export const enableHalt = false; export const enableHiddenSubtreeInsertionEffectCleanup = false; diff --git a/packages/shared/forks/ReactFeatureFlags.test-renderer.js b/packages/shared/forks/ReactFeatureFlags.test-renderer.js index 9dbb6c83572f3..609c5628063b9 100644 --- a/packages/shared/forks/ReactFeatureFlags.test-renderer.js +++ b/packages/shared/forks/ReactFeatureFlags.test-renderer.js @@ -21,7 +21,6 @@ export const enableComponentPerformanceTrack = false; export const enableUpdaterTracking = false; export const enableCache = true; export const enableLegacyCache = __EXPERIMENTAL__; -export const enableFlightReadableStream = true; export const enableAsyncIterableChildren = false; export const enableTaint = true; export const enablePostpone = false; diff --git a/packages/shared/forks/ReactFeatureFlags.test-renderer.native-fb.js b/packages/shared/forks/ReactFeatureFlags.test-renderer.native-fb.js index fdf511d3c8585..169c5c9e2878b 100644 --- a/packages/shared/forks/ReactFeatureFlags.test-renderer.native-fb.js +++ b/packages/shared/forks/ReactFeatureFlags.test-renderer.native-fb.js @@ -31,7 +31,6 @@ export const enableDeferRootSchedulingToMicrotask = true; export const enableDO_NOT_USE_disableStrictPassiveEffect = false; export const enableMoveBefore = false; export const enableFizzExternalRuntime = true; -export const enableFlightReadableStream = true; export const enableGetInspectorDataForInstanceInProduction = false; export const enableHalt = false; export const enableInfiniteRenderLoopDetection = false; diff --git a/packages/shared/forks/ReactFeatureFlags.test-renderer.www.js b/packages/shared/forks/ReactFeatureFlags.test-renderer.www.js index e5d7eb81940f4..6ecd34dfbd1bd 100644 --- a/packages/shared/forks/ReactFeatureFlags.test-renderer.www.js +++ b/packages/shared/forks/ReactFeatureFlags.test-renderer.www.js @@ -21,7 +21,6 @@ export const enableComponentPerformanceTrack = false; export const enableUpdaterTracking = false; export const enableCache = true; export const enableLegacyCache = true; -export const enableFlightReadableStream = true; export const enableAsyncIterableChildren = false; export const enableTaint = true; export const enablePostpone = false; diff --git a/packages/shared/forks/ReactFeatureFlags.www.js b/packages/shared/forks/ReactFeatureFlags.www.js index 838a57d9e751c..be91e1c8e4ecd 100644 --- a/packages/shared/forks/ReactFeatureFlags.www.js +++ b/packages/shared/forks/ReactFeatureFlags.www.js @@ -75,7 +75,6 @@ export const enableGetInspectorDataForInstanceInProduction = false; export const enableCache = true; export const enableLegacyCache = true; -export const enableFlightReadableStream = true; export const enableAsyncIterableChildren = false; export const enableTaint = false;