Push-Notifications в PWA и браузере: полная реализация без сторонних сервисов
Medium
12 min
Tutorial

Push-уведомления в вебе без Firebase, OneSignal и прочих посредников - только штатные браузерные API: Service Worker, Push API, VAPID и Notifications API. На десктопе и Android пуши работают в обычной вкладке, PWA-обвязка нужна ради iOS 16.4+.
В статье:
• как устроена вся цепочка и почему именно так
• готовый код Service Worker и клиентской части
• сервер на Express с отправкой и чисткой мёртвых подписок
• PWA-манифест и специфика iOS
• детекция платформы и подсказка об установке
• грабли, из-за которых «не работает» - event.waitUntil, тихие пуши, протухшие подписки
Уведомления приходят даже при закрытом браузере, весь код можно копировать.