From 0ca093124c94b5edde10b5b3189e1a1245facf19 Mon Sep 17 00:00:00 2001 From: Dominic Gannaway Date: Mon, 19 Nov 2018 15:38:51 +0000 Subject: [PATCH 1/2] Clear fields on unmount of fiber to avoid memory leak --- packages/react-reconciler/src/ReactFiberCommitWork.js | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/packages/react-reconciler/src/ReactFiberCommitWork.js b/packages/react-reconciler/src/ReactFiberCommitWork.js index 55a39ee640db8..011d16dbaff24 100644 --- a/packages/react-reconciler/src/ReactFiberCommitWork.js +++ b/packages/react-reconciler/src/ReactFiberCommitWork.js @@ -728,9 +728,14 @@ function detachFiber(current: Fiber) { // itself will be GC:ed when the parent updates the next time. current.return = null; current.child = null; - if (current.alternate) { - current.alternate.child = null; - current.alternate.return = null; + current.memoizedState = null; + current.updateQueue = null; + const alternate = current.alternate; + if (alternate !== null) { + alternate.child = null; + alternate.return = null; + alternate.memoizedState = null; + alternate.updateQueue = null; } } From 2b9fe40b11644a6b0a683f674eec6648b1ce9e77 Mon Sep 17 00:00:00 2001 From: Dominic Gannaway Date: Mon, 19 Nov 2018 15:46:45 +0000 Subject: [PATCH 2/2] fix nit --- packages/react-reconciler/src/ReactFiberCommitWork.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/react-reconciler/src/ReactFiberCommitWork.js b/packages/react-reconciler/src/ReactFiberCommitWork.js index 011d16dbaff24..2594e948957d1 100644 --- a/packages/react-reconciler/src/ReactFiberCommitWork.js +++ b/packages/react-reconciler/src/ReactFiberCommitWork.js @@ -732,8 +732,8 @@ function detachFiber(current: Fiber) { current.updateQueue = null; const alternate = current.alternate; if (alternate !== null) { - alternate.child = null; alternate.return = null; + alternate.child = null; alternate.memoizedState = null; alternate.updateQueue = null; }