Здравствуйте, vsb, Вы писали:
vsb> Заменяешь всю страницу новым текстом. Что-то вроде document.open(); document.write(newHtml); document.close();
Это надо убедиться ещё, что сама страница не содержит ссылок на .js, .css, картинки, которые тоже могут обломаться при загрузке.
vsb> Старые таймеры будут тикать, да, могут быть непредвиденные спецэффекты. Хотя, думаю, в целом вероятность таковых невелика. Если это важно, можно переопределить setTimeout/setInterval и вести учёт всех таймеров, чтобы отменить их перед заменой документа.
Я использую webpack и npm-либы всякие, хз что и как они делают, какие глобальные переменные используют и где что может утекать через глобальные переменные...
В общем да, в целом понятно, что с чистым web-приложением нормального решения нет. Буду копать service workers...