diff --git a/packages/react-devtools-shared/src/backend/DevToolsFiberComponentStack.js b/packages/react-devtools-shared/src/backend/DevToolsFiberComponentStack.js index 6d99cf4f21e52..a4311797de36c 100644 --- a/packages/react-devtools-shared/src/backend/DevToolsFiberComponentStack.js +++ b/packages/react-devtools-shared/src/backend/DevToolsFiberComponentStack.js @@ -98,3 +98,10 @@ export function getStackByFiberInDevAndProd( return '\nError generating stack: ' + x.message + '\n' + x.stack; } } + +export function supportsNativeConsoleTasks(fiber: Fiber): boolean { + // If this Fiber supports native console.createTask then we are already running + // inside a native async stack trace if it's active - meaning the DevTools is open. + // Ideally we'd detect if this task was created while the DevTools was open or not. + return !!fiber._debugTask; +} diff --git a/packages/react-devtools-shared/src/backend/console.js b/packages/react-devtools-shared/src/backend/console.js index 40649abe9ee46..13c2249013a3e 100644 --- a/packages/react-devtools-shared/src/backend/console.js +++ b/packages/react-devtools-shared/src/backend/console.js @@ -18,7 +18,10 @@ import type { import {format, formatWithStyles} from './utils'; import {getInternalReactConstants, getDispatcherRef} from './renderer'; -import {getStackByFiberInDevAndProd} from './DevToolsFiberComponentStack'; +import { + getStackByFiberInDevAndProd, + supportsNativeConsoleTasks, +} from './DevToolsFiberComponentStack'; import {consoleManagedByDevToolsDuringStrictMode} from 'react-devtools-feature-flags'; import {castBool, castBrowserTheme} from '../utils'; @@ -235,7 +238,10 @@ export function patch({ } } - if (shouldAppendWarningStack) { + if ( + shouldAppendWarningStack && + !supportsNativeConsoleTasks(current) + ) { const componentStack = getStackByFiberInDevAndProd( workTagMap, current,