From 6066c782fe06b65e98a410741d994f620321fe11 Mon Sep 17 00:00:00 2001 From: "Sebastian \"Sebbie\" Silbermann" Date: Thu, 12 Feb 2026 17:48:02 +0100 Subject: [PATCH] [DevTools] Dedicated empty state for roots that aren't suspended by anything (#35769) --- .../Components/InspectedElementSuspendedBy.js | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/packages/react-devtools-shared/src/devtools/views/Components/InspectedElementSuspendedBy.js b/packages/react-devtools-shared/src/devtools/views/Components/InspectedElementSuspendedBy.js index 78c137deaf..50186f47b2 100644 --- a/packages/react-devtools-shared/src/devtools/views/Components/InspectedElementSuspendedBy.js +++ b/packages/react-devtools-shared/src/devtools/views/Components/InspectedElementSuspendedBy.js @@ -36,6 +36,7 @@ import { UNKNOWN_SUSPENDERS_REASON_OLD_VERSION, UNKNOWN_SUSPENDERS_REASON_THROWN_PROMISE, } from '../../../constants'; +import {ElementTypeRoot} from 'react-devtools-shared/src/frontend/types'; type RowProps = { bridge: FrontendBridge, @@ -477,7 +478,21 @@ export default function InspectedElementSuspendedBy({ ); } - return null; + // For roots, show an empty state since there's nothing else to show for + // these elements. + // This can happen for older versions of React without Suspense, older versions + // of React with less sources for Suspense, or simple UIs that don't have any suspenders. + if (inspectedElement.type === ElementTypeRoot) { + return ( +
+
+
+ Nothing suspended the initial paint. +
+
+
+ ); + } } const handleCopy = withPermissionsCheck(