I think it was briefly suggested above, but I will list it out in more detail:
You can try leverage the fact that event.type and event.timeStamp will match the PerformanceEventTimingEntry name and startTime. Here is
a super rough example. (You may want to use capture phase instead of bubble phase, change event types, what you save about the target, etc)
Besides working around some of the limitations of the PerformanceObserver quirks, that approach would be resilient to re-rendering issues -- though we have heard requests to have the Performance Timeline automatically save target selectors. Some of the other performance timeline entries do already save the node ID, at least.
If you are using React, perhaps you can create an "ObservableEventCallback" helper function that wraps only specific components and then you would additionally be able to use React Component attribution -- though of course this would require explicit instrumentation. I don't know enough about
React Event propagation to know if you could get away with global handlers and still inspect components for component-specific attribution.