The Element Timing API provides timing on when elements are displayed. This first proposal is restricted to <img> elements to make it simpler:
What would this do that an Intersection Observer doesn’t allow for? You can use an Intersection Observer to know when a node is in the active viewport. And then do something based on that event. It sounds exactly like what your intended goal is, except far more widely applicable to web applications.
Also, IntersectionObserver wouldn’t be ergonomic for this use case: handling the question of when the element has loaded, wanting only the first update for the element, etc.
We are still interested in moving forward with the proposal and have evolved it a bit.
We anxiously await ET landing in Chrome by default!
Since there seems to be some support to this feature, I’d like to move the repo to WICG and continue incubating it from there. I’ll have a spec to accompany the explainer soon.