🦊 Mozilla Add-ons

Как опубликовать расширение в Mozilla Add-ons (Firefox)

Гайд по публикации Firefox-расширения через addons.mozilla.org. Полностью бесплатно — нет developer fee. Время прохождения: 1-10 рабочих дней.

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

Для публикации Firefox-расширения: (1) создайте бесплатный AMO Developer Account на addons.mozilla.org, (2) убедитесь что Manifest V3 совместим с Firefox (есть отличия от Chrome), (3) загрузите ZIP через Submit a New Add-on, (4) выберите listed (публичное) или unlisted (по прямой ссылке), (5) заполните описание и ассеты, (6) дождитесь approval (1-10 дней — обычно быстрее Chrome).

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

  1. Перейдите на addons.mozilla.org/developers/
  2. Создайте Firefox Account (или войдите существующим)
  3. Подтвердите email
  4. Согласитесь с Developer Agreement
  5. Включите 2FA (опционально, но рекомендуется)

Регистрация полностью бесплатна. Не требуется оплата как в Chrome Web Store.

Шаг 2: Manifest V3 для Firefox

Firefox поддерживает Manifest V3, но с отличиями от Chrome:

  • Firefox использует background scripts или event pages, а не service workers (Chrome MV3 использует service workers)
  • Для совместимости с обоими браузерами используйте browser_specific_settings:
{
  "manifest_version": 3,
  "name": "TON Scanner",
  "version": "1.0.0",
  "browser_specific_settings": {
    "gecko": {
      "id": "ton-scanner@toncoinshop.com",
      "strict_min_version": "109.0"
    }
  },
  "background": {
    "scripts": ["background.js"]
  }
}

Также можно использовать webextension-polyfill для общего кода:

npm install webextension-polyfill

// В коде:
import browser from 'webextension-polyfill';
// Работает в Chrome (через chrome.*) и Firefox (через browser.*)
const tabs = await browser.tabs.query({active: true});

Шаг 3: Listed vs Unlisted

Mozilla предлагает два режима публикации:

  • Listed — публичное расширение в каталоге addons.mozilla.org. Доступно всем, индексируется поисковиками. Это наш выбор.
  • Unlisted — расширение подписывается Mozilla (чтобы Firefox его принял), но не появляется в каталоге. Распространяется только через прямую ссылку или установку из вашего сайта.

Шаг 4: web-ext CLI для разработки

Mozilla предоставляет официальный CLI:

# Установка
npm install -g web-ext

# Запуск в Firefox с авто-перезагрузкой
web-ext run --source-dir=./your-extension

# Линтинг (обязательно перед submission!)
web-ext lint --source-dir=./your-extension

# Сборка готового XPI
web-ext build --source-dir=./your-extension

Шаг 5: Submission

  1. Перейдите на addons.mozilla.org/developers/addon/submit/
  2. Выберите «On this site» (listed)
  3. Загрузите ZIP-архив расширения
  4. Mozilla автоматически валидирует — исправьте все warnings/errors
  5. Подтвердите что используете source code из загруженного ZIP (если используете build process — приложите unminified source отдельно)
  6. Заполните Name, Summary, Description
  7. Выберите Category
  8. Загрузите иконки и скриншоты
  9. Укажите Privacy Policy URL
  10. Укажите Support email/URL
  11. Submit

Шаг 6: Review

Mozilla review происходит по двум трекам:

  • Automated review — для простых расширений без особых permissions. Результат: подписание автоматически, доступно в каталоге сразу.
  • Manual review — для расширений с broad permissions (например <all_urls>) или сложной логикой. Время: 1-10 дней.

Если расширение Manual — обязательно предоставьте:

  • Build scripts (если используется bundler)
  • Unminified source files
  • Инструкцию как воспроизвести build
  • Тестовые credentials если нужно для review

Особенности Mozilla review

  • Mozilla особенно требовательна к privacy — любая отправка данных должна быть в Privacy Policy
  • Содержательный changelog в каждой версии — без него review может затянуться
  • Не используйте eval(), Function(), setTimeout(string) — автоматически отклоняется
  • Не подгружайте код с CDN — только bundled
  • Если используете аналитику — выбирайте privacy-friendly решения (Plausible, не Google Analytics)
Вопросы по публикации: @denissatoshi · Официальные ресурсы: extensionworkshop.com