Firefox 147 добавляет сервис-воркеры типа модуля — что теперь должны сделать команды полного стека
Что произошло
- Firefox 147 (стабильная версия, январь 2026) представил поддержку сервис-воркеров в качестве ECMAScript модулей — т.е. вы можете зарегистрировать сервис-воркер с
{ type: 'module' }и использовать import/export и семантику модулей внутри воркера. (developer.mozilla.org)
Почему это важно (высокое воздействие)
- Современный, повторно используемый код в воркере: вы можете импортировать общие утилитарные модули, применять tree-shake для меньших нагрузок и поддерживать паритет между кодом основного потока и кодом воркера.
- Top-level await, строгая семантика ESM и встроенное разрешение модулей устраняют необходимость в importScripts и хрупких шаблонах конкатенации.
- Проще интегрировать инструменты: сборщики/пакетировщики, которые генерируют ESM-выходы, могут напрямую передавать сервис-воркерам, снижая необходимость в хаках на этапе сборки.
- Безопасность и поддерживаемость: более четкие границы модулей и более легкий аудит графов зависимостей внутри воркеров.
Что команды полного стека должны сделать сейчас — конкретный, приоритетный список
-
Быстрая проверка совместимости
- Проверьте ваши целевые браузеры и пользовательскую базу (доступность Firefox 147+ в вашей телеметрии). Если значительная доля пользователей использует более старые версии Firefox или другие браузеры, которые могут не обновляться автоматически в вашей среде, запланируйте резервный вариант. (developer.mozilla.org)
-
Обнаружение функций и безопасная регистрация
- Используйте обнаружение функций и условную регистрацию: попытайтесь
navigator.serviceWorker.register('/sw.js', { type: 'module' }), когда это поддерживается, в противном случае вернитесь к классической регистрации. Не принуждайте регистрацию модуля без резервного варианта в публично доступных продуктах.
- Используйте обнаружение функций и условную регистрацию: попытайтесь
-
Миграция кода воркера на ESM
- Замените
importScripts(...)наimport ... from '...'и преобразуйте код в стиле CommonJS в ESM (или предоставьте совместимые с ESM точки входа). - Удалите глобальные побочные эффекты, которые зависели от порядка importScripts; полагайтесь на явные импорты и инициализацию.
- Замените
-
Изменения в сборочном процессе
- Настройте пакетировщики для генерации ESM-выходов для сервис-воркеров (сохраняйте операторы импорта или генерируйте .mjs, где это необходимо).
- Убедитесь, что ваш сервер возвращает правильные MIME-типы (например, text/javascript или application/javascript) для файлов модулей и поддерживает CORS-учетные данные, как требуется для загрузки модулей.
- Если вы используете хешированные имена файлов или CDN для активов, подтвердите, что воркеры могут импортировать эти URL во время выполнения (или встроить небольшой манифест).
-
Политика безопасности контента (CSP) и заголовки
- Проверьте CSP: импорты модулей в воркерах загружаются как обычные модули; убедитесь, что правила
script-src/worker-srcне блокируют эти запросы. - Если вы используете параметры регистрации сервис-воркера, которые изменяют поведение загрузки, проверьте правила одного источника/кросс-источника и куки/учетные данные.
- Проверьте CSP: импорты модулей в воркерах загружаются как обычные модули; убедитесь, что правила
-
Библиотеки и инструменты
- Протестируйте Workbox и другие распространенные библиотеки SW на совместимость с модульным режимом; обновите до версий, которые явно поддерживают
type: 'module'(или мигрируйте на ручное управление). - Обновите локальные серверы разработки (и CI), чтобы последовательно обслуживать модульные воркеры (следите за настройками по умолчанию серверов разработки, которые внедряют обертки или используют неправильные заголовки CORS).
- Протестируйте Workbox и другие распространенные библиотеки SW на совместимость с модульным режимом; обновите до версий, которые явно поддерживают
-
Тесты и развертывание
- Добавьте end-to-end тесты, которые:
- регистрируют воркер в модульном режиме,
- подтверждают, что импорты разрешаются (и top-level await работает, если используется),
- проверяют поведение оффлайн и жизненный цикл кеша на модульных воркерах.
- Проведите канарейку для небольшого процента трафика; следите за регистрациями сервис-воркеров, сбоями активации и журналами ошибок.
- Обеспечьте телеметрию или отлов ошибок (sentry/logging) вокруг
ServiceWorkerContainer.register(), чтобы обнаружить резервные варианты для неподдерживаемых клиентов.
- Добавьте end-to-end тесты, которые:
Распространенные ошибки, на которые стоит обратить внимание
- Выход пакетировщика несовместим с загрузчиком модулей (IIFE против ESM). Генерируйте ESM точки входа для воркеров.
- Полагание на семантику последовательности importScripts — замените на явные импорты и порядок инициализации.
- Более старые браузеры (или заблокированные корпоративные среды) не могут зарегистрироваться, если вы опустите классический резервный вариант.
- Неправильные MIME/CORS или CSP блокируют импорты модулей и вызывают тихие сбои при регистрации.
Краткий план развертывания (одна страница)
- Неделя 0: Добавьте обнаружение функций + регистрацию с резервным вариантом; проведите тестирование на стадии.
- Неделя 1: Преобразуйте воркер в ESM; обновите MIME/CORS на сервере и в сборке.
- Неделя 2: Добавьте e2e тесты; разверните на канарейке (1–5%).
- Неделя 3: Следите за ошибками/метриками; расширьте развертывание до 25%, затем до 100% после чистой телеметрии.
Итог Поддержка сервис-воркеров типа модуля в Firefox 147 превращает воркеры в первоклассных потребителей ESM. Для команд полного стека это означает более чистое совместное использование кода, более простые сборки и более мощную логику сервис-воркеров — но это требует целенаправленных изменений в сборке, регистрации и развертывании. Начните с обнаружения функций и поэтапной миграции, чтобы избежать сюрпризов в средах, которые все еще используют более старые клиенты. (developer.mozilla.org)
Источник:
Источник
Читать дальше
Изменения в FedCM в Chrome 143: структурированные утверждения ID, более строгие метаданные клиента и обновления API
31 января 2026 г.Chrome 143 (опубликован 12 января 2026 года) изменяет поток идентификации FedCM: токены утверждения ID могут быть структурированным JSON, проверка client_metadata становится обязательной, и несколько полей API перемещаются/переименовываются — требуется миграция перед Chrome 145.
Undici CVE-2026-22036: неограниченная цепочка декомпрессии приводит к исчерпанию ресурсов — выпущены патчи
30 января 2026 г.14 января 2026 года в уведомлении о безопасности для undici (HTTP-клиент Node.js) описывается уязвимость неограниченной цепочки декомпрессии, которая может привести к высокому использованию CPU и памяти. Команды полного стека должны найти и обновить затронутые версии undici и добавить легкие защитные меры на уровне выполнения.
Уязвимость CSRF в Server Actions React Router / Remix (CVE-2026-22030)
29 января 2026 г.React Router и @remix-run/server-runtime устранили проблему CSRF средней степени серьезности, затрагивающую обработчики действий на стороне сервера и нестабильные действия сервера React — что полностековым командам необходимо проверить и исправить сейчас.