From 8cf64620c7dd4ec7e72aa16ee2d5f15eb3420b92 Mon Sep 17 00:00:00 2001 From: Ruslan Lesiutin Date: Mon, 16 Sep 2024 14:47:57 +0100 Subject: [PATCH] fix[rdt/fiber/renderer.js]: getCurrentFiber can be injected as null (#30968) In production artifacts for `18.x.x` `getCurrentFiber` can actually be injected as `null`. Updated `getComponentStack` and `onErrorOrWarning` implementations to support this. ![Screenshot 2024-09-16 at 10 52 00](https://github.com/user-attachments/assets/a0c773aa-ebbf-4fd5-95c4-cac3cc0c203f) --- packages/react-devtools-shared/src/backend/fiber/renderer.js | 4 ++-- packages/react-devtools-shared/src/backend/types.js | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/react-devtools-shared/src/backend/fiber/renderer.js b/packages/react-devtools-shared/src/backend/fiber/renderer.js index 1ac78a49a58b6..2fd768b5d01c3 100644 --- a/packages/react-devtools-shared/src/backend/fiber/renderer.js +++ b/packages/react-devtools-shared/src/backend/fiber/renderer.js @@ -1078,7 +1078,7 @@ export function attach( function getComponentStack( topFrame: Error, ): null | {enableOwnerStacks: boolean, componentStack: string} { - if (getCurrentFiber === undefined) { + if (getCurrentFiber == null) { // Expected this to be part of the renderer. Ignore. return null; } @@ -1130,7 +1130,7 @@ export function attach( type: 'error' | 'warn', args: $ReadOnlyArray, ): void { - if (getCurrentFiber === undefined) { + if (getCurrentFiber == null) { // Expected this to be part of the renderer. Ignore. return; } diff --git a/packages/react-devtools-shared/src/backend/types.js b/packages/react-devtools-shared/src/backend/types.js index e3c062fefaaf3..7d816d403af07 100644 --- a/packages/react-devtools-shared/src/backend/types.js +++ b/packages/react-devtools-shared/src/backend/types.js @@ -158,7 +158,7 @@ export type ReactRenderer = { currentDispatcherRef?: LegacyDispatcherRef | CurrentDispatcherRef, // Only injected by React v16.9+ in DEV mode. // Enables DevTools to append owners-only component stack to error messages. - getCurrentFiber?: () => Fiber | null, + getCurrentFiber?: (() => Fiber | null) | null, // Only injected by React Flight Clients in DEV mode. // Enables DevTools to append owners-only component stack to error messages from Server Components. getCurrentComponentInfo?: () => ReactComponentInfo | null,