Короткий ответ

Service worker, permissions, CSP, declarativeNetRequest, storage и ограничения фоновой логики. Разбираем практический порядок работ, риски, стоимость и то, как принять результат без новых проблем.

Ниже — конкретные проверки, команды, таблицы и контроль результата. Выполняйте изменения только после резервной копии, если действие затрагивает рабочую систему.

Базовая архитектура расширения

ЧастьОтветственность
manifest.jsonpermissions, host_permissions, entry points
service workerсобытия, API, фоновые операции
content scriptработа с DOM страницы
popup/optionsинтерфейс пользователя
storageнастройки и локальное состояние
backend APIсекреты, серверная логика, общие данные

Главное отличие MV3 — фон теперь событийный

Service worker не должен хранить критичное состояние только в глобальных переменных: он может быть остановлен и запущен снова. Сохраняйте нужное состояние в storage/IndexedDB или на backend.

Service worker: событие установки

JAVASCRIPT
chrome.runtime.onInstalled.addListener(async () => {
  const state = await chrome.storage.local.get(['initialized']);
  if (!state.initialized) {
    await chrome.storage.local.set({ initialized: true });
  }
});

Что проверить при миграции на MV3

ОбластьПроверка
Background pageзаменить на service worker
Remote codeне выполнять удалённый JS
Permissionsминимизировать
Network rules
одящем сценарии
DOM в фонеoffscreen document, если действительно нужен
Состояние
ранить только в memory service worker

Удалённо размещённый исполняемый код запрещён

API-данные можно получать с сервера, но расширение не должно загружать и выполнять произвольный JavaScript как способ обновления логики в обход публикации.

Как проверить результат

После изменений повторите исходный сценарий, зафиксируйте результат и убедитесь, что соседние функции работают так же, как до правки. Если проблема проявляется не всегда, проведите несколько повторов в одинаковых условиях и сохраните диагностические данные.

Связанные материалы