Manifest v3 и расширение, которое проходит ревью с первого раза
Браузерное расширение — продукт с повышенными требованиями: чужая среда, чужие данные, строгие ревью магазинов. Разбираем, как сделать расширение, которое проходит Chrome Web Store и Firefox Add-ons без доработок.
Почему расширения сложнее обычных продуктов
Расширение живёт в чужой среде: браузер, чужие сайты, чужие данные. Ошибка в расширении может сломать работу пользователя на любом сайте, украсть данные, замедлить браузер. Поэтому магазины (Chrome Web Store, Firefox Add-ons) проверяют расширения строже, чем обычные приложения.
Ревью может занять недели, если:
- запрашиваете слишком много разрешений;
- неясно, зачем расширение нужно;
- политика приватности не соответствует коду;
- код содержит обфускацию или подозрительные паттерны.
Мы делаем расширения, которые проходят ревью с первого раза. Вот как.
Manifest v3: что изменилось
Manifest v3 — новая архитектура расширений Chrome. Главные изменения:
- Service Workers вместо background pages (экономия памяти, но сложнее отладка);
- Декларативные правила вместо программных (быстрее, безопаснее, но менее гибко);
- Ограничения на удалённый код (весь код должен быть в пакете, нельзя подгружать с сервера).
Manifest v3 сложнее в разработке, но безопаснее и стабильнее. Мы пишем под v3 с первого дня.
Минимальные разрешения
Главное правило: запрашивайте минимум разрешений. Не «доступ ко всем сайтам», а «доступ к конкретному домену». Не «чтение всех вкладок», а «чтение текущей вкладки».
Каждое разрешение — это риск и вопрос ревьюера: «зачем это нужно?». Если не можете объяснить одной фразой — не запрашивайте.
Пример: расширение парсит цены на одном сайте. Запрашиваем host_permissions только для этого домена, не для всех сайтов.
Политика приватности
Политика приватности — не формальность, а обязательный документ. Ревьюеры читают её и сверяют с кодом: если в коде есть телеметрия, а в политике не указано — отказ.
Что должно быть в политике:
- какие данные собираете;
- куда отправляете;
- как используете;
- как пользователь может удалить данные.
Мы пишем политику до кода, чтобы не было сюрпризов на ревью.
Архитектура контекстов
Расширение работает в нескольких контекстах:
- Popup — всплывающее окно по клику на иконку;
- Content Script — скрипт, внедрённый в страницу сайта;
- Background (Service Worker) — фоновый процесс, живёт постоянно;
- Options — страница настроек.
Каждый контекст изолирован: content script не видит background, popup не видит content script. Связь — через сообщения (message passing).
Мы проектируем архитектуру до кода: что где живёт, как общается, где хранятся данные.
FAQ
Сколько стоит разработка расширения? От 100 000 ₽ за простой инструмент (одна функция) до 500 000 ₽ за сложную интеграцию с API и аналитикой.
Как быстро можно запустить? Разработка — 2–6 недель. Ревью — 1–3 недели (если всё правильно, то 3–5 дней).
Нужно ли платить за публикацию? Chrome Web Store — разовый платёж 5$ за аккаунт разработчика. Firefox Add-ons — бесплатно.
Какие браузеры поддерживаются? Chrome, Firefox, Edge, Brave, Opera. Manifest v3 — стандарт, работает везде.
Что если расширение сломается после обновления браузера? Мы сопровождаем расширение: обновляем под новые API, фиксим баги, проходим ревью заново. Поддержка — отдельный контракт.