In this [issue](https://github.com/facebook/react/issues/23373), when you navigate to [this app](https://next-rsc-notes.vercel.app/note/1646289027680) and inspect the sidebar in the components tab, you will get this error:

![image](https://user-images.githubusercontent.com/2735514/158241727-64eba8f9-5ac2-4aa7-bffa-ff9b3174a261.png)

 This is a user error. One of the components in the user's app thrown. However, the UI for this is confusing, because it seems like it's a DevTools error. We've gotten a lot of bug reports like this, and it would be good to differentiate between DevTools bugs and bugs in the app. For this task:

- [ ] Build the React DevTools extension locally (instructions [here](https://github.com/facebook/react/tree/main/packages/react-devtools-extensions)) and reproduce the error
- [ ] Figure out a way to have the front end be able to differentiate whether the error is a error within DevTools or within the user's app
- [ ] Design/implement a better UI to help app developers distinguish between these two cases
function getFiberIDUnsafe(fiber: Fiber): number | null {
    if (fiberToIDMap.has(fiber)) {
      return ((fiberToIDMap.get(fiber): any): number);
    } else {
      const {alternate} = fiber;
      if (alternate !== null && fiberToIDMap.has(alternate)) {
        return ((fiberToIDMap.get(alternate): any): number);
      }
    }
    return null;
  }
   Removes a Fiber (and its alternate) from the Maps used to track their id.
   This method should always be called when a Fiber is unmounting.
  function untrackFiberID(fiber: Fiber) {
    if (__DEBUG__) {
      debug('untrackFiberID()', fiber, fiber.return, 'schedule after delay');
    }
     Untrack Fibers after a slight delay in order to support a Fast Refresh edge case:
     1. Component type is updated and Fast Refresh schedules an update+remount.
     2. flushPendingErrorsAndWarningsAfterDelay() runs, sees the old Fiber is no longer mounted
        (it's been disconnected by Fast Refresh), and calls untrackFiberID() to clear it from the Map.
     3. React flushes pending passive effects before it runs the next render,
        which logs an error or warning, which causes a new ID to be generated for this Fiber.
     4. DevTools now tries to unmount the old Component with the new ID.
    
     The underlying problem here is the premature clearing of the Fiber ID,
     but DevTools has no way to detect that a given Fiber has been scheduled for Fast Refresh.
     (The "_debugNeedsRemount" flag won't necessarily be set.)
    
     The best we can do is to delay untracking by a small amount,