(Regarding the experimental `React.unstable_Profiler` API and reactjs/rfcs/pull/51.)

PR #13058 changed the behavior of React profiling builds to opt host roots into `ProfileMode` if the React DevTools extension is detected. This was necessary in order to have accurate tree base time measurements for the visual flame graphs.

The Profiler plug-in for DevTools does feature detection to determine if it's enabled by looking at each root and seeing if any of the fibers contain an `actualDuration` attribute,

The problem is that the `actualDuration` attribute will be present on v16.4 fibers, which pre-date PR #13058. As a result, the Profiler UI may enable itself with versions of React that it cannot work correctly with.

Perhaps an easy solution would be to rename one of the `unstable_Profiler`'s fiber attributes prior to the next minor release (e.g. `treeBaseTime` -> `treeBaseDuration`) and change the DevTools Profiler to feature check using this new name instead.
return;
    default: {
      invariant(
        false,
        'This unit of work tag should not have side-effects. This error is ' +
          'likely caused by a bug in React. Please file an issue.',
      );
    }
  }
}
function commitLifeCycles(
  finishedRoot: FiberRoot,
  current: Fiber | null,
  finishedWork: Fiber,
  committedExpirationTime: ExpirationTime,
): void {
  switch (finishedWork.tag) {
    case ClassComponent: {
      const instance = finishedWork.stateNode;
      if (finishedWork.effectTag & Update) {
        if (current === null) {
          startPhaseTimer(finishedWork, 'componentDidMount');
          instance.props = finishedWork.memoizedProps;
          instance.state = finishedWork.memoizedState;
          instance.componentDidMount();
          stopPhaseTimer();
        } else {
          const prevProps = current.memoizedProps;
          const prevState = current.memoizedState;