From 6a6959bf63186039fdd790af4e2dea765d52c6ab Mon Sep 17 00:00:00 2001 From: Jan Kassens Date: Thu, 4 Apr 2024 10:14:31 -0400 Subject: [PATCH] Cleanup enableServerComponentKeys flag Flag is `true` everywhere but RN where it doesn't apply. --- .../src/__tests__/ReactFlight-test.js | 4 ---- .../react-server/src/ReactFlightServer.js | 19 +++---------------- packages/shared/ReactFeatureFlags.js | 3 --- .../forks/ReactFeatureFlags.native-fb.js | 1 - .../forks/ReactFeatureFlags.native-oss.js | 1 - .../forks/ReactFeatureFlags.test-renderer.js | 1 - ...actFeatureFlags.test-renderer.native-fb.js | 1 - .../ReactFeatureFlags.test-renderer.www.js | 1 - .../shared/forks/ReactFeatureFlags.www.js | 1 - 9 files changed, 3 insertions(+), 29 deletions(-) diff --git a/packages/react-client/src/__tests__/ReactFlight-test.js b/packages/react-client/src/__tests__/ReactFlight-test.js index 55956ddc93ec..a334af21f0dd 100644 --- a/packages/react-client/src/__tests__/ReactFlight-test.js +++ b/packages/react-client/src/__tests__/ReactFlight-test.js @@ -1609,7 +1609,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()); @@ -1666,7 +1665,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); @@ -1739,7 +1737,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); @@ -1980,7 +1977,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 ad0a28f37175..b4cd8c9aa6e2 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'; @@ -681,9 +680,6 @@ function renderFragment( } } } - if (!enableServerComponentKeys) { - return children; - } if (task.keyPath !== null) { // We have a Server Component that specifies a key but we're now splitting // the tree using a fragment. @@ -724,9 +720,6 @@ function renderClientElement( key: null | string, props: any, ): ReactJSONValue { - if (!enableServerComponentKeys) { - return [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; @@ -875,7 +868,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 { @@ -1320,10 +1313,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. @@ -1452,10 +1442,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 c527d069dcaa..157801e7f2c0 100644 --- a/packages/shared/ReactFeatureFlags.js +++ b/packages/shared/ReactFeatureFlags.js @@ -158,9 +158,6 @@ export const enableFilterEmptyStringAttributesDOM = true; // Disabled caching behavior of `react/cache` in client runtimes. export const disableClientCache = false; -// 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 004c76d74756..490187d74f62 100644 --- a/packages/shared/forks/ReactFeatureFlags.native-fb.js +++ b/packages/shared/forks/ReactFeatureFlags.native-fb.js @@ -84,7 +84,6 @@ export const enableFizzExternalRuntime = true; export const enableUseDeferredValueInitialArg = true; export const disableClientCache = true; -export const enableServerComponentKeys = true; export const enableServerComponentLogs = true; // TODO: Roll out with GK. Don't keep as dynamic flag for too long, though, diff --git a/packages/shared/forks/ReactFeatureFlags.native-oss.js b/packages/shared/forks/ReactFeatureFlags.native-oss.js index 79f77bdc052c..27c31c8af31b 100644 --- a/packages/shared/forks/ReactFeatureFlags.native-oss.js +++ b/packages/shared/forks/ReactFeatureFlags.native-oss.js @@ -51,7 +51,6 @@ export const enableTaint = __NEXT_RN_MAJOR__; export const enableUnifiedSyncLane = __NEXT_RN_MAJOR__; export const enableFizzExternalRuntime = __NEXT_RN_MAJOR__; // DOM-only export const enableBinaryFlight = __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 cef2b788b73c..3add7a354237 100644 --- a/packages/shared/forks/ReactFeatureFlags.test-renderer.js +++ b/packages/shared/forks/ReactFeatureFlags.test-renderer.js @@ -72,7 +72,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; diff --git a/packages/shared/forks/ReactFeatureFlags.test-renderer.native-fb.js b/packages/shared/forks/ReactFeatureFlags.test-renderer.native-fb.js index d12550dabbc1..0e7dcc1f7049 100644 --- a/packages/shared/forks/ReactFeatureFlags.test-renderer.native-fb.js +++ b/packages/shared/forks/ReactFeatureFlags.test-renderer.native-fb.js @@ -75,7 +75,6 @@ export const passChildrenWhenCloningPersistedNodes = false; export const enableUseDeferredValueInitialArg = __EXPERIMENTAL__; export const disableClientCache = true; -export const enableServerComponentKeys = true; export const enableServerComponentLogs = true; export const enableRefAsProp = false; diff --git a/packages/shared/forks/ReactFeatureFlags.test-renderer.www.js b/packages/shared/forks/ReactFeatureFlags.test-renderer.www.js index 3bfc66a0069b..3d30cc281ad1 100644 --- a/packages/shared/forks/ReactFeatureFlags.test-renderer.www.js +++ b/packages/shared/forks/ReactFeatureFlags.test-renderer.www.js @@ -74,7 +74,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 3057542f3974..c090b0507beb 100644 --- a/packages/shared/forks/ReactFeatureFlags.www.js +++ b/packages/shared/forks/ReactFeatureFlags.www.js @@ -101,7 +101,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;