diff --git a/packages/react-devtools-shared/src/backend/fiber/renderer.js b/packages/react-devtools-shared/src/backend/fiber/renderer.js index 94246df6485e..e3cf0f5e0533 100644 --- a/packages/react-devtools-shared/src/backend/fiber/renderer.js +++ b/packages/react-devtools-shared/src/backend/fiber/renderer.js @@ -1885,7 +1885,20 @@ export function attach( // releasing DevTools in lockstep with React, we should import a // function from the reconciler instead. const PerformedWork = 0b000000000000000000000000001; - return (getFiberFlags(nextFiber) & PerformedWork) === PerformedWork; + if ((getFiberFlags(nextFiber) & PerformedWork) === 0) { + return false; + } + if ( + prevFiber != null && + prevFiber.memoizedProps === nextFiber.memoizedProps && + prevFiber.memoizedState === nextFiber.memoizedState && + prevFiber.ref === nextFiber.ref + ) { + // React may mark PerformedWork even if we bailed out. Double check + // that inputs actually changed before reporting a render. + return false; + } + return true; // Note: ContextConsumer only gets PerformedWork effect in 16.3.3+ // so it won't get highlighted with React 16.3.0 to 16.3.2. default: