Hello @AndrewK
Thanks for raising this! I took it to our devs, here's what came back.
observeElement is one-shot. It disconnects the moment the element first shows up, so it won't fire again when that element re-renders. onEvent behaves the same way since it's built on observeElement. And there's no querySelectorAll version today, so it's one selector per call.
On the re-rendering itself, the honest answer from our devs is that it depends on the element. Some of our markup is static and stays put, other parts are rendered and managed by our JS framework, and there you're working against its render cycle, so handlers and changes can get dropped on the next tick. Internal class names can shift between releases too.
Which elements are you seeing this on, and are you working from a custom widget or from third-party scripts / header-footer?
Where focus goes, energy flows.