Seems like each component has its own shadow DOM that gets fired up. This would be fine under normal circumstances, but we use a tool called Cohere (now Cardina after the Ramp acquisition) which listens to the DOMContentLoaded [1] event.
Looking at flame graphs, this event, when fired, seems to cause Cohere to traverse the DOM. This becomes very expensive when you are loading something like an Ionic grid, with lots of rows and columns. Unfortunately this Cohere code lives within a dynamic JS module that they load at runtime, which is proprietary, so there isn't a way to submit a PR to change the behavior.
I'd love if someone knew more about that event in the context of the shadow DOM in particular. Perhaps there is a way to limit its invocation through the Web Component API.
[1] - https://developer.mozilla.org/en-US/docs/Web/API/Document/DO...