для того чтобы избежать остановки таймеров, на странице, где работает скрипт запускаешь бесконечное воспроизведение mp3-файла с тишиной. Лично мне это помогает избежать заморозки.
<video style="position: fixed; left: 30px; bottom: 30px; z-index: 99999; height: 55px; width: 300px; border-radius: 100px;" controls loop name="media">
<source src="https://site.ru/fon.mp3" type="audio/mpeg">
</video>
Там собственно лишнего ничего и нет. setInterval с записью в localstorage. Это всё)