Короткий ответ
Service worker, permissions, CSP, declarativeNetRequest, storage и ограничения фоновой логики. Разбираем практический порядок работ, риски, стоимость и то, как принять результат без новых проблем.
Ниже — конкретные проверки, команды, таблицы и контроль результата. Выполняйте изменения только после резервной копии, если действие затрагивает рабочую систему.
Базовая архитектура расширения
| Часть | Ответственность |
|---|---|
| manifest.json | permissions, host_permissions, entry points |
| service worker | события, API, фоновые операции |
| content script | работа с DOM страницы |
| popup/options | интерфейс пользователя |
| storage | настройки и локальное состояние |
| backend API | секреты, серверная логика, общие данные |
Главное отличие MV3 — фон теперь событийный
Service worker не должен хранить критичное состояние только в глобальных переменных: он может быть остановлен и запущен снова. Сохраняйте нужное состояние в storage/IndexedDB или на backend.
Service worker: событие установки
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 как способ обновления логики в обход публикации.
Как проверить результат
После изменений повторите исходный сценарий, зафиксируйте результат и убедитесь, что соседние функции работают так же, как до правки. Если проблема проявляется не всегда, проведите несколько повторов в одинаковых условиях и сохраните диагностические данные.