🌐 Chrome Web Store

Как опубликовать расширение в Chrome Web Store

Пошаговая инструкция 2026: developer account, $5 one-time fee, обязательный Manifest V3, screenshots, single purpose, privacy policy, review process. Среднее время одобрения: 1-3 рабочих дня.

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

Чтобы опубликовать расширение в Chrome Web Store: (1) создайте Chrome Web Store Developer Account ($5 одноразовый платёж), (2) убедитесь что расширение использует Manifest V3, (3) запакуйте файлы в ZIP (не папку!), (4) загрузите в Developer Dashboard через "Add new item", (5) заполните карточку (description, category, screenshots 1280×800, privacy policy), (6) отправьте на review — 1-3 рабочих дня.

📦 Что нужно подготовить

  • Расширение на Manifest V3 (V2 больше не принимается с 2024)
  • Google account (можно использовать существующий)
  • $5 USD на привязанной карте (одноразовый платёж)
  • Иконки 16×16, 32×32, 48×48, 128×128 PNG
  • Скриншоты 1280×800 или 640×400 PNG/JPG (минимум 1, максимум 5)
  • Промо-картинка 440×280 PNG (опционально, но повышает CTR)
  • Маркетинговый баннер 1400×560 PNG (опционально для featured)
  • Privacy Policy URL (обязательно, даже если не собираете данные)
  • Подробное описание (минимум 25 символов, рекомендуется 200-1000)

Шаг 1: Регистрация Developer Account

  1. Перейдите на chrome.google.com/webstore/devconsole/
  2. Войдите с Google-аккаунтом которым будете владеть расширением
  3. Согласитесь с Developer Agreement
  4. Подтвердите способ оплаты и оплатите $5 USD одноразово
    • Платёж невозвратный
    • Принимаются международные карты (Visa, Mastercard, AMEX)
    • В РФ — потребуется зарубежная карта или Stripe-посредник
  5. Заполните Account Info: name, email, физический адрес (для tax/legal)
  6. Если планируете публиковать от имени организации — пройдите Group Publishers verification
⚠️ Важно: новые developer accounts проходят дополнительную identity verification. Это может занять несколько дней. Не откладывайте регистрацию на момент когда нужно срочно публиковать.

Шаг 2: Требования Manifest V3

С 2024 года Manifest V2 больше не принимается для новых submissions. Все расширения должны использовать MV3:

{
  "manifest_version": 3,
  "name": "Ваше расширение",
  "version": "1.0.0",
  "description": "Краткое описание (не более 132 символов)",
  "permissions": [...],
  "host_permissions": [...],
  "background": {
    "service_worker": "background.js"
  },
  "content_scripts": [...],
  "action": {
    "default_popup": "popup.html",
    "default_icon": {...}
  },
  "icons": {...}
}

Ключевые требования MV3 для прохождения review

  • Нет remote code execution. Никаких eval(), никакого <script src="https://..."> снаружи расширения. Только локальный код.
  • Background = service worker. Никаких persistent background pages.
  • declarativeNetRequest вместо webRequest blocking для модификации запросов.
  • CSP (Content Security Policy) по умолчанию строгий — никакого inline JavaScript.
  • Vendored libraries. Все библиотеки должны быть включены в пакет расширения, не подгружаться с CDN.

Шаг 3: Single Purpose и permissions

Google требует чтобы расширение имело один чёткий назначенный функционал. Расширения-комбайны с десятью разными фичами отклоняются.

Single Purpose Statement

В Developer Dashboard вы должны заполнить поле Single Purpose Description с одной фразой:

Пример (наше расширение TON Scanner): "Automatically detects TON blockchain addresses on web pages and displays Trust Score from TonCoinShop on hover."

Permissions — минимально необходимые

Каждое запрашиваемое permission должно быть justified в карточке. Google спросит "зачем":

  • activeTab — для работы с текущей вкладкой при клике на иконку
  • contextMenus — для добавления пункта в правый клик
  • storage — для кеша Trust Score локально
  • host_permissions — только https://toncoinshop.com/* (не <all_urls>)

Избегайте запрашивать tabs, history, cookies, <all_urls> без острой необходимости — это сразу удлиняет review.

Шаг 4: Privacy Policy (обязательно)

С 2024 года Privacy Policy URL обязателен для всех расширений, даже если они не собирают данные.

Privacy Policy должна включать:

  • Какие данные собирает расширение (или явное заявление что не собирает)
  • Куда отправляются данные
  • Цели сбора данных
  • Срок хранения
  • Контакт для запросов на удаление данных
  • Дата последнего обновления политики

User Data Disclosure

В Developer Dashboard в секции Privacy practices нужно явно отметить:

  • Собираете ли вы personally identifiable information
  • Собираете ли вы health information
  • Собираете ли вы financial information
  • Собираете ли вы authentication information
  • Собираете ли вы personal communications
  • Собираете ли вы location data
  • Собираете ли вы web history
  • Собираете ли вы user activity
  • Собираете ли вы website content

Также нужно подтвердить три сертификата:

  • «Я НЕ продаю и не передаю данные пользователей третьим сторонам, кроме authorized use cases»
  • «Я НЕ использую данные пользователей для целей не связанных с основной функцией расширения»
  • «Я НЕ использую данные для определения creditworthiness или lending purposes»

Шаг 5: Подготовка ассетов

Ассет Размер Обяз?
Store icon128×128 PNG✅ Да
Screenshot1280×800 или 640×400✅ Мин. 1
Small promo tile440×280 PNG⚪ Желательно
Marquee banner1400×560 PNG⚪ Для featured

Скриншоты должны показывать реальный функционал расширения, не маркетинговую графику. Они проходят отдельный review.

Шаг 6: Упаковка ZIP-архива

Критически важно правильно запаковать файлы:

✅ Правильно: в ZIP лежат файлы расширения, manifest.json в корне архива.
# Перейдите в папку расширения
cd /path/to/extension/
# Создайте ZIP только из содержимого, не из папки
zip -r ../extension.zip . -x ".*" "node_modules/*"
❌ Неправильно: запакована целая папка, manifest.json внутри подпапки. Chrome Web Store отклонит upload.

Проверка: разархивируйте ZIP в новую папку — там должен быть manifest.json на верхнем уровне.

Шаг 7: Заполнение карточки в Developer Dashboard

  1. Войдите в Developer Dashboard
  2. Нажмите Add new item
  3. Загрузите ZIP — система автоматически парсит manifest.json
  4. Заполните Store Listing:
    • Name — название (до 75 символов)
    • Summary — короткое описание (до 132 символов, появляется в каталоге)
    • Description — полное описание (до 16000 символов, поддерживает markdown-like форматирование)
    • Category — основная категория (Productivity / Developer Tools / etc)
    • Language — основной язык интерфейса
  5. Заполните Privacy practices (см. шаг 4)
  6. Укажите Single Purpose — одну функцию
  7. Justify каждое запрашиваемое permission
  8. Загрузите ассеты
  9. Укажите Distribution: Public (для всех) или Unlisted (только по прямой ссылке)

Шаг 8: Подача на review

  1. Когда все секции заполнены — нажмите Submit for review
  2. Подтвердите соглашение с Developer Policies
  3. Расширение перейдёт в статус Pending review
  4. Среднее время: 1-3 рабочих дня
  5. В случае запроса дополнительной информации — отвечайте через сообщения в Dashboard
  6. После approval — расширение появится в Chrome Web Store по URL https://chrome.google.com/webstore/detail/[slug]/[id]

Что происходит во время review

Команда Google проверяет:

  • Соответствие Single Purpose
  • Justification permissions
  • Отсутствие malicious behavior
  • Соответствие описания фактическому функционалу
  • Качество скриншотов
  • Compliance с Manifest V3 требованиями (full functionality discoverable from code)

❌ Частые причины отказа

  1. "Functionality unclear from code". Расширение использует obfuscation или подгружает логику с внешних серверов. Решение: предоставлять полный читаемый исходник.
  2. "Single purpose violation". Расширение делает несколько несвязанных вещей. Решение: разделить на несколько расширений.
  3. "Unnecessary permissions". Запрошено больше permissions чем нужно. Решение: минимизировать до строго необходимых.
  4. "Misleading or low quality content". Описание не соответствует функционалу, скриншоты низкого качества. Решение: подробное точное описание + чёткие скриншоты.
  5. "Privacy policy missing or insufficient". Решение: разместить детальную privacy policy и указать URL.
  6. "Spammy keywords". Название или описание содержит keyword spam. Решение: естественный язык.
  7. "Trademark violation". Использование зарегистрированных торговых марок (Google, Facebook, Telegram без разрешения). Решение: переименовать или использовать "for [brand]".
  8. "Manifest V2 detected". Решение: мигрировать на MV3.

✅ Чеклист перед submission

  • ☐ manifest_version = 3
  • ☐ Все permissions justified и минимальны
  • ☐ Нет eval(), нет remote script execution
  • ☐ Все JS/CSS включены в пакет (не подгружаются с CDN)
  • ☐ Privacy Policy URL готов
  • ☐ Single Purpose statement готов
  • ☐ Иконка 128×128 PNG
  • ☐ Минимум 1 скриншот 1280×800
  • ☐ Description заполнен (минимум 25 символов)
  • ☐ ZIP правильно собран (manifest в корне)
  • ☐ $5 fee оплачен и аккаунт верифицирован
  • ☐ Локально протестирован в Chrome через "Load unpacked"

📦 Наше расширение

TON Scanner — наше браузерное расширение для автодетекта TON-адресов. Использует Manifest V3, единый кодбаз работает в Chrome, Firefox и Edge. Исходники: github.com/toncoinshop/ton-scanner-extension.

Вопросы по публикации: @denissatoshi · Официальные ресурсы: developer.chrome.com/docs/webstore/