### Website or app

https://github.com/reactjs/reactjs.org/pull/4981

### Repro steps

1. Wrap something into `<Fragment key="stuff">`
2. It doesn't show up in DevTools

We filter out fragments because they tend to be useless. But this one is important! Keys are crucial and we should show anything with a key in the tree.

### How often does this bug happen?

Every time

### DevTools package (automated)

_No response_

### DevTools version (automated)

_No response_

### Error message (automated)

_No response_

### Error call stack (automated)

_No response_

### Error component stack (automated)

_No response_

### GitHub query string (automated)

_No response_
const length = encodedString.length;
      operations[i++] = length;
      for (let j = 0; j < length; j++) {
        operations[i + j] = encodedString[j];
      }
      i += length;
    });
    if (numUnmountIDs > 0) {
       A
      operations[i++] = TREE_OPERATION_REMOVE;
       T
      operations[i++] = numUnmountIDs;
       F
       T
       S
      for (let j = pendingRealUnmountedIDs.length - 1; j >= 0; j--) {
        operations[i++] = pendingRealUnmountedIDs[j];
      }
       Fill in the simulated unmounts (hidden Suspense subtrees) in their order.
       (We want children to go before parents.)
       They go *after* the real unmounts because we know for sure they won't be
       children of already pushed "real" IDs. If they were, we wouldn't be able
       to discover them during the traversal, as they would have been deleted.
      for (let j = 0; j < pendingSimulatedUnmountedIDs.length; j++) {
        operations[i + j] = pendingSimulatedUnmountedIDs[j];
      }
      i += pendingSimulatedUnmountedIDs.length;
       T
      if (pendingUnmountedRootID !== null) {
        operations[i] = pendingUnmountedRootID;