Safari на iOS пытается загрузить javascript, которого еще нет в HTML, что приводит к сбою приложения.
Происходит после публикации любого обновления (первоначальный чистый запуск — работает нормально)
Контекст
Приложение React, Vite в качестве сборщика.
Без "кусков" все работает нормально. При «чанкировании» все работает везде, кроме Safari iOS
Шаги по воспроизведению [*]Добавьте простое разбиение на фрагменты: [*]node_modules отправляется поставщику [*]все остальное попадает в index
rollupOptions: { выход: { enterFileNames: 'assets/[имя].[хэш].js', manualChunks: (id: string) => { если (id.includes('node_modules')) { вернуть «поставщик»; } еще { вернуть «пакет»; } }, chunkFileNames: (chunkInfo) => { константный хэш = createHash('md5') .update(Object.values(chunkInfo.moduleIds).join()) .digest('шестнадцатеричный') .substr(0, 6); вернуть 'активы/[имя].' + хэш + '.js'; }, }, }, [*]Создайте первоначальную сборку (назовем ее «сборка V1») [*]dist/assets/index.SBYBNO79.js [*]dist/assets/vendor.b1e99d.js

Открываем в iOS - все работает нормально
[*]Сделать любое обновление, перестроить (назовите это «сборка V2») [*]dist/assets/index.-9z7R_h8.js (обновлено) [*]dist/assets/vendor.b1e99d.js (тот же)

[*]Теперь, когда iOS Safari загружает веб-приложение, оно извлекает все новые данные из нового HTML.
Но он также загружает старый index.SBYBNO79.js, хотя в HTML о нем нет упоминания


Мысли
Меня это не слишком беспокоило бы, но это приводит к сбою приложения, поскольку оно не синхронизировано с пакетом vendor.
Один из вариантов может быть — полностью отключить кеширование. Но в том-то и дело: я хочу, чтобы JavaScript, на который ссылается HTML, был кэширован.
Происходит только в iOS Safari (мобильный телефон)
Уже 2 недели пытался его отладить, все гуглил. Удалось сузить круг до этого «дополнительного» запроса JavaScript.
Буду признателен за любую подсказку/направление.
Мобильная версия