From e6783e7cc94bceb5bba92b79ff71f44f630e1c00 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebastian=20Markb=C3=A5ge?= Date: Mon, 1 Jul 2024 09:50:45 -0400 Subject: [PATCH] [Fizz] Run console.createTask during SSR when available (#30142) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Same as #30140 but for Fizz. This is rarely used but it does allow seeing component stacks when inspecting the Node.js server running Fizz using `--inspect` and the Chrome DevTools. Screenshot 2024-06-29 at 4 08 22 PM --- fixtures/flight/package.json | 4 +- packages/react-server/src/ReactFizzServer.js | 39 ++++++++++++++++++++ 2 files changed, 41 insertions(+), 2 deletions(-) diff --git a/fixtures/flight/package.json b/fixtures/flight/package.json index 659bd4894f..f07b667dab 100644 --- a/fixtures/flight/package.json +++ b/fixtures/flight/package.json @@ -70,8 +70,8 @@ "predev": "cp -r ../../build/oss-experimental/* ./node_modules/", "prebuild": "cp -r ../../build/oss-experimental/* ./node_modules/", "dev": "concurrently \"npm run dev:region\" \"npm run dev:global\"", - "dev:global": "NODE_ENV=development BUILD_PATH=dist node --experimental-loader ./loader/global.js server/global", - "dev:region": "NODE_ENV=development BUILD_PATH=dist nodemon --watch src --watch dist -- --enable-source-maps --experimental-loader ./loader/region.js --conditions=react-server --inspect server/region", + "dev:global": "NODE_ENV=development BUILD_PATH=dist node --experimental-loader ./loader/global.js --inspect=127.0.0.1:9230 server/global", + "dev:region": "NODE_ENV=development BUILD_PATH=dist nodemon --watch src --watch dist -- --enable-source-maps --experimental-loader ./loader/region.js --conditions=react-server --inspect=127.0.0.1:9229 server/region", "start": "node scripts/build.js && concurrently \"npm run start:region\" \"npm run start:global\"", "start:global": "NODE_ENV=production node --experimental-loader ./loader/global.js server/global", "start:region": "NODE_ENV=production node --experimental-loader ./loader/region.js --conditions=react-server server/region", diff --git a/packages/react-server/src/ReactFizzServer.js b/packages/react-server/src/ReactFizzServer.js index 75b195e1e2..b5e9ed28fd 100644 --- a/packages/react-server/src/ReactFizzServer.js +++ b/packages/react-server/src/ReactFizzServer.js @@ -150,6 +150,7 @@ import { disableDefaultPropsExceptForClasses, enableAsyncIterableChildren, disableStringRefs, + enableOwnerStacks, } from 'shared/ReactFeatureFlags'; import assign from 'shared/assign'; @@ -2372,6 +2373,27 @@ function renderNodeDestructive( key == null ? (childIndex === -1 ? 0 : childIndex) : key; const keyPath = [task.keyPath, name, keyOrIndex]; if (task.replay !== null) { + if (__DEV__ && enableOwnerStacks) { + const debugTask: null | ConsoleTask = element._debugTask; + if (debugTask) { + debugTask.run( + replayElement.bind( + null, + request, + task, + keyPath, + name, + keyOrIndex, + childIndex, + type, + props, + ref, + task.replay, + ), + ); + return; + } + } replayElement( request, task, @@ -2388,6 +2410,23 @@ function renderNodeDestructive( // prelude and skip it during the replay. } else { // We're doing a plain render. + if (__DEV__ && enableOwnerStacks) { + const debugTask: null | ConsoleTask = element._debugTask; + if (debugTask) { + debugTask.run( + renderElement.bind( + null, + request, + task, + keyPath, + type, + props, + ref, + ), + ); + return; + } + } renderElement(request, task, keyPath, type, props, ref); } return;