![Screenshot 2019-12-16 10 51 05](https://user-images.githubusercontent.com/793565/70934095-fd91ed80-1ff1-11ea-93b5-746e816585ec.png)
There's seems to be circumstances where unmounted DOM/Fibers are kept alive by React DevTools. They're kept alive in `primaryFibers`:
https://github.com/facebook/react/blob/34527063083195558f98108cde10b5d6ad0d6865/packages/react-devtools-shared/src/backend/renderer.js#L772

It seems like a WeakSet would be appropriate and would remove the leak. Otherwise we'd need to understand why recordUnmount isn't called.

CC @bvaughn  
if (context !== null) {
      hasLegacyContext = !!type.contextTypes;
       T
       O
      context = {value: context};
    }
    let owners = null;
    if (_debugOwner) {
      owners = [];
      let owner = _debugOwner;
      while (owner !== null) {
        owners.push(fiberToSerializedElement(owner));
        owner = owner._debugOwner || null;
      }
    }
    const isTimedOutSuspense =
      tag === SuspenseComponent && memoizedState !== null;
    let hooks = null;
    if (usesHooks) {
      const originalConsoleMethods = {};
       T
      for (const method in console) {
        try {
          originalConsoleMethods[method] = console[method];
           $
          console[method] = () => {};
        } catch (error) {}
      }
      try {
        hooks = inspectHooksOfFiber(