diff --git a/packages/react-client/src/__tests__/ReactFlight-test.js b/packages/react-client/src/__tests__/ReactFlight-test.js index a2e4d7af2953..e7aa52dacb4a 100644 --- a/packages/react-client/src/__tests__/ReactFlight-test.js +++ b/packages/react-client/src/__tests__/ReactFlight-test.js @@ -1694,7 +1694,6 @@ describe('ReactFlight', () => { expect(errors).toEqual([]); }); - // @gate enableServerComponentKeys it('preserves state when keying a server component', async () => { function StatefulClient({name}) { const [state] = React.useState(name.toLowerCase()); @@ -1751,7 +1750,6 @@ describe('ReactFlight', () => { ); }); - // @gate enableServerComponentKeys it('does not inherit keys of children inside a server component', async () => { function StatefulClient({name, initial}) { const [state] = React.useState(initial); @@ -1824,7 +1822,6 @@ describe('ReactFlight', () => { ); }); - // @gate enableServerComponentKeys it('shares state between single return and array return in a parent', async () => { function StatefulClient({name, initial}) { const [state] = React.useState(initial); @@ -2065,7 +2062,6 @@ describe('ReactFlight', () => { ); }); - // @gate enableServerComponentKeys it('preserves state with keys split across async work', async () => { let resolve; const promise = new Promise(r => (resolve = r)); diff --git a/packages/react-server/src/ReactFlightServer.js b/packages/react-server/src/ReactFlightServer.js index 13dd33528a86..4b77895c98fe 100644 --- a/packages/react-server/src/ReactFlightServer.js +++ b/packages/react-server/src/ReactFlightServer.js @@ -15,7 +15,6 @@ import { enableBinaryFlight, enablePostpone, enableTaint, - enableServerComponentKeys, enableRefAsProp, enableServerComponentLogs, } from 'shared/ReactFeatureFlags'; @@ -993,7 +992,7 @@ function renderFragment( task: Task, children: $ReadOnlyArray, ): ReactJSONValue { - if (enableServerComponentKeys && task.keyPath !== null) { + if (task.keyPath !== null) { // We have a Server Component that specifies a key but we're now splitting // the tree using a fragment. const fragment = [ @@ -1052,7 +1051,7 @@ function renderAsyncFragment( children: $AsyncIterable, getAsyncIterator: () => $AsyncIterator, ): ReactJSONValue { - if (enableServerComponentKeys && task.keyPath !== null) { + if (task.keyPath !== null) { // We have a Server Component that specifies a key but we're now splitting // the tree using a fragment. const fragment = [ @@ -1095,11 +1094,6 @@ function renderClientElement( props: any, owner: null | ReactComponentInfo, // DEV-only ): ReactJSONValue { - if (!enableServerComponentKeys) { - return __DEV__ - ? [REACT_ELEMENT_TYPE, type, key, props, owner] - : [REACT_ELEMENT_TYPE, type, key, props]; - } // We prepend the terminal client element that actually gets serialized with // the keys of any Server Components which are not serialized. const keyPath = task.keyPath; @@ -1266,7 +1260,7 @@ function createTask( if (typeof model === 'object' && model !== null) { // If we're about to write this into a new task we can assign it an ID early so that // any other references can refer to the value we're about to write. - if (enableServerComponentKeys && (keyPath !== null || implicitSlot)) { + if (keyPath !== null || implicitSlot) { // If we're in some kind of context we can't necessarily reuse this object depending // what parent components are used. } else { @@ -1756,10 +1750,7 @@ function renderModelDestructive( const writtenObjects = request.writtenObjects; const existingId = writtenObjects.get(value); if (existingId !== undefined) { - if ( - enableServerComponentKeys && - (task.keyPath !== null || task.implicitSlot) - ) { + if (task.keyPath !== null || task.implicitSlot) { // If we're in some kind of context we can't reuse the result of this render or // previous renders of this element. We only reuse elements if they're not wrapped // by another Server Component. @@ -1889,10 +1880,7 @@ function renderModelDestructive( // $FlowFixMe[method-unbinding] if (typeof value.then === 'function') { if (existingId !== undefined) { - if ( - enableServerComponentKeys && - (task.keyPath !== null || task.implicitSlot) - ) { + if (task.keyPath !== null || task.implicitSlot) { // If we're in some kind of context we can't reuse the result of this render or // previous renders of this element. We only reuse Promises if they're not wrapped // by another Server Component. diff --git a/packages/shared/ReactFeatureFlags.js b/packages/shared/ReactFeatureFlags.js index 15d8b984ba8b..d537d40b37cc 100644 --- a/packages/shared/ReactFeatureFlags.js +++ b/packages/shared/ReactFeatureFlags.js @@ -169,9 +169,6 @@ export const enableFilterEmptyStringAttributesDOM = true; // Disabled caching behavior of `react/cache` in client runtimes. export const disableClientCache = true; -// Changes Server Components Reconciliation when they have keys -export const enableServerComponentKeys = true; - /** * Enables a new error detection for infinite render loops from updates caused * by setState or similar outside of the component owning the state. diff --git a/packages/shared/forks/ReactFeatureFlags.native-fb.js b/packages/shared/forks/ReactFeatureFlags.native-fb.js index 580c49bafc4e..55e3b466e3e5 100644 --- a/packages/shared/forks/ReactFeatureFlags.native-fb.js +++ b/packages/shared/forks/ReactFeatureFlags.native-fb.js @@ -94,7 +94,6 @@ export const enableFizzExternalRuntime = true; export const enableUseDeferredValueInitialArg = true; export const disableClientCache = true; -export const enableServerComponentKeys = true; export const enableServerComponentLogs = true; export const enableReactTestRendererWarning = false; diff --git a/packages/shared/forks/ReactFeatureFlags.native-oss.js b/packages/shared/forks/ReactFeatureFlags.native-oss.js index 5ee0d16c19e1..89bb87ef4342 100644 --- a/packages/shared/forks/ReactFeatureFlags.native-oss.js +++ b/packages/shared/forks/ReactFeatureFlags.native-oss.js @@ -54,7 +54,6 @@ export const enableUnifiedSyncLane = __NEXT_RN_MAJOR__; export const enableFizzExternalRuntime = __NEXT_RN_MAJOR__; // DOM-only export const enableBinaryFlight = __NEXT_RN_MAJOR__; // DOM-only export const enableFlightReadableStream = __NEXT_RN_MAJOR__; // DOM-only -export const enableServerComponentKeys = __NEXT_RN_MAJOR__; export const enableServerComponentLogs = __NEXT_RN_MAJOR__; // DEV-only but enabled in the next RN Major. diff --git a/packages/shared/forks/ReactFeatureFlags.test-renderer.js b/packages/shared/forks/ReactFeatureFlags.test-renderer.js index 8c9626795b51..bc4b660f6e97 100644 --- a/packages/shared/forks/ReactFeatureFlags.test-renderer.js +++ b/packages/shared/forks/ReactFeatureFlags.test-renderer.js @@ -74,7 +74,6 @@ export const passChildrenWhenCloningPersistedNodes = false; export const enableUseDeferredValueInitialArg = __EXPERIMENTAL__; export const disableClientCache = true; -export const enableServerComponentKeys = true; export const enableServerComponentLogs = true; export const enableInfiniteRenderLoopDetection = false; export const enableEarlyReturnForPropDiffing = false; diff --git a/packages/shared/forks/ReactFeatureFlags.test-renderer.native-fb.js b/packages/shared/forks/ReactFeatureFlags.test-renderer.native-fb.js index 72a69a3b9cad..3af9fdaa8778 100644 --- a/packages/shared/forks/ReactFeatureFlags.test-renderer.native-fb.js +++ b/packages/shared/forks/ReactFeatureFlags.test-renderer.native-fb.js @@ -77,7 +77,6 @@ export const passChildrenWhenCloningPersistedNodes = false; export const enableUseDeferredValueInitialArg = __EXPERIMENTAL__; export const disableClientCache = true; -export const enableServerComponentKeys = true; export const enableServerComponentLogs = true; export const enableRefAsProp = true; diff --git a/packages/shared/forks/ReactFeatureFlags.test-renderer.www.js b/packages/shared/forks/ReactFeatureFlags.test-renderer.www.js index 9e87b7119365..79b49b2fb413 100644 --- a/packages/shared/forks/ReactFeatureFlags.test-renderer.www.js +++ b/packages/shared/forks/ReactFeatureFlags.test-renderer.www.js @@ -76,7 +76,6 @@ export const passChildrenWhenCloningPersistedNodes = false; export const enableUseDeferredValueInitialArg = true; export const disableClientCache = true; -export const enableServerComponentKeys = true; export const enableServerComponentLogs = true; export const enableInfiniteRenderLoopDetection = false; diff --git a/packages/shared/forks/ReactFeatureFlags.www.js b/packages/shared/forks/ReactFeatureFlags.www.js index ef562feeba93..39a21d2f58fd 100644 --- a/packages/shared/forks/ReactFeatureFlags.www.js +++ b/packages/shared/forks/ReactFeatureFlags.www.js @@ -109,7 +109,6 @@ export const passChildrenWhenCloningPersistedNodes = false; export const enableAsyncDebugInfo = false; export const disableClientCache = true; -export const enableServerComponentKeys = true; export const enableServerComponentLogs = true; export const enableReactTestRendererWarning = false;