Почему следующий код не работает в Safari?
window.matchMedia('(prefers-color-scheme: dark)').addEventListener('change', () => { console.log('theme changed'); });
Как отмечено здесь, на caniuse.com и здесь, на mozilla.org , MediaQueryList.addEventListener не работает в Safari и IE, однако вы можете использовать MediaQueryList.addListener :
MediaQueryList.addEventListener
MediaQueryList.addListener
Старые браузеры должны использовать addListener вместо addEventListener, поскольку MediaQueryList наследуется от EventTarget только в новых браузерах. [ источник ]