Использование событий в JavaScript приложении на клиенте

Создание системы событий в vanilla JavaScript

Сейчас работаю над клиентским приложением и думаю о том, как лучше организовать систему событий. Можно написать свою собственную реализацию event bus с нуля, это не особо сложно.

Но вот интересно - стоит ли использовать встроенные возможности DOM для обработки событий и CustomEvent для создания шины событий приложения? Какие плюсы это может дать по сравнению с самописным решением?

Возможно, кто-то уже пробовал оба подхода и может поделиться опытом? Интересуют производительность, удобство использования и общая архитектура.

CustomEvent хорош тем, что браузер уже всё оптимизировал за тебя - не надо из reinventing the wheel. Отладка через DevTools тоже проще. Но если событий много, может быть overhead - каждый раз создается полноценный Event объект. Я использую CustomEvent для крупных компонентов, а для мелочей типа состояния делаю простой observer паттерн.

Почему бы не смешать оба подхода? Для UI можно использовать события DOM, а для бизнес-логики создать свою шину событий. Основной минус CustomEvent в том, что он привязан к дереву DOM, что не очень удобно для чисто логических событий. Какое приложение ты разрабатываешь?