Thanks for the insight! The only problem is we have a fairly large site with many components, several developers, and an infinite combination of modules on any given page. A developer down the road could introduce some kind of expanding component and inadvertently break the ScrollTrigger modules on any page that ends up on. Therefore we would need to establish a "special rule" for components that might change the position of other components. If this the only way, that's fine, but the more special rules we have the harder our site is to maintain. So my goal here is to minimize special rules—it would be more ideal if our ScrollTrigger modules could resolve themselves, no matter what else is on the page—expanding components, tabs, drawers, etc.
If listening for changes to the client rect is non-performant, do you have any other ideas how to refresh the triggers within the ScrollTrigger module itself?