I've been using my own "EventManager" API for my UI:
https://mayronui.com/p/pkg-mayron-events
I like using this because it has an auto destroy feature to remove event handlers once they have been used (if you set auto destroy to true), and a few other nice features such as "FindHandlerByPriority" or "FindHandlerByKey"