Публикация расширения в Firefox Add-ons (AMO)

Наша компания занимается разработкой, поддержкой и обслуживанием сайтов любой сложности. От простых одностраничных сайтов до масштабных кластерных систем построенных на микро сервисах. Опыт разработчиков подтвержден сертификатами от вендоров.

Разработка и обслуживание любых видов сайтов:

Информационные сайты или веб-приложения
Сайты визитки, landing page, корпоративные сайты, онлайн каталоги, квиз, промо-сайты, блоги, новостные ресурсы, информационные порталы, форумы, агрегаторы
Сайты или веб-приложения электронной коммерции
Интернет-магазины, B2B-порталы, маркетплейсы, онлайн-обменники, кэшбэк-сайты, биржи, дропшиппинг-платформы, парсеры товаров
Веб-приложения для управления бизнес-процессами
CRM-системы, ERP-системы, корпоративные порталы, системы управления производством, парсеры информации
Сайты или веб-приложения электронных услуг
Доски объявлений, онлайн-школы, онлайн-кинотеатры, конструкторы сайтов, порталы предоставления электронных услуг, видеохостинги, тематические порталы

Это лишь некоторые из технических типов сайтов, с которыми мы работаем, и каждый из них может иметь свои специфические особенности и функциональность, а также быть адаптированным под конкретные потребности и цели клиента

Предлагаемые услуги
Показано 1 из 1 услугВсе 2065 услуг
Публикация расширения в Firefox Add-ons (AMO)
Простая
от 1 рабочего дня до 3 рабочих дней
Часто задаваемые вопросы

Наши компетенции:

Этапы разработки

Последние работы

  • image_website-b2b-advance_0.png
    Разработка сайта компании B2B ADVANCE
    1262
  • image_web-applications_feedme_466_0.webp
    Разработка веб-приложения для компании FEEDME
    1171
  • image_websites_belfingroup_462_0.webp
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    874
  • image_ecommerce_furnoro_435_0.webp
    Разработка интернет магазина для компании FURNORO
    1094
  • image_crm_enviok_479_0.webp
    Разработка веб-приложения для компании Enviok
    831
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Разработка веб-сайта для компании ФИКСПЕР
    851

Публикация расширения в Firefox Add-ons (AMO)

Firefox Add-ons (addons.mozilla.org, AMO) — официальный магазин расширений Mozilla. В отличие от Chrome Web Store, AMO предоставляет детальные инструменты для разработчиков и поддерживает более гибкие политики.

Создание аккаунта разработчика

Регистрация на addons.mozilla.org/developers через Mozilla аккаунт. Взнос не требуется — публикация бесплатна.

Отличия Firefox от Chrome

Firefox поддерживает оба манифеста — MV2 и MV3, но с особенностями:

{
  "manifest_version": 2,
  "browser_specific_settings": {
    "gecko": {
      "id": "[email protected]",
      "strict_min_version": "91.0"
    }
  }
}

Поле browser_specific_settings.gecko.id обязательно для Firefox. Без него расширение не сможет получать обновления корректно. ID в формате email или GUID: {xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}.

Кросс-браузерная совместимость

Большинство Chrome-расширений работают в Firefox с минимальными правками. Главные отличия:

// Полифил для обоих браузеров
const browser = typeof globalThis.browser !== 'undefined'
  ? globalThis.browser
  : globalThis.chrome;

// Или используйте webextension-polyfill от Mozilla
// npm install webextension-polyfill
import browser from 'webextension-polyfill';

webextension-polyfill оборачивает Chrome callbacks в промисы и нормализует различия API.

Подготовка пакета

AMO требует исходный код для расширений, использующих минификацию или бандлинг:

# Сборка расширения
npm run build

# ZIP с финальными файлами
cd dist/
zip -r ../firefox-extension-1.0.0.zip .

# Отдельный ZIP с исходниками (обязателен если используете bundler)
cd ../
zip -r source-code-1.0.0.zip src/ package.json webpack.config.js \
  --exclude "node_modules/*" \
  --exclude ".git/*"

Без исходников ревью может быть отклонено с запросом их предоставить.

Загрузка через web интерфейс

В Developer Hub → «Submit a New Add-on»:

  1. Distribution method: AMO (публичный) или Self-distribution (подписанный XPI без листинга)
  2. Upload your add-on: загружаете ZIP
  3. Upload source code: если используете bundler
  4. Describe your add-on: название, описание, категория

Self-distribution и подписание

Любое расширение в Firefox должно быть подписано Mozilla, даже если вы не планируете публиковать его в AMO. Для корпоративного или личного использования:

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

# Подписание через AMO API (файл получит подпись Mozilla)
web-ext sign \
  --source-dir ./dist \
  --artifacts-dir ./signed \
  --api-key $AMO_API_KEY \
  --api-secret $AMO_API_SECRET

Подписанный .xpi можно установить через about:addons или распространять самостоятельно.

AMO API для автоматизации

# Загрузка новой версии через API
curl -X POST \
  "https://addons.mozilla.org/api/v5/addons/addon/{addon-id}/versions/" \
  -H "Authorization: JWT $AMO_JWT_TOKEN" \
  -F "[email protected]" \
  -F "[email protected]"

JWT генерируется из API credentials (api_key + api_secret):

import jwt from 'jsonwebtoken';

const token = jwt.sign(
  { iss: API_KEY, jti: Math.random().toString(), iat: Math.floor(Date.now() / 1000), exp: Math.floor(Date.now() / 1000) + 60 },
  API_SECRET
);

Полный SDK: web-ext sign делает это автоматически.

Процесс ревью на AMO

AMO имеет два уровня ревью:

Автоматизированный (Listed — Recommended не запрашивается): большинство расширений проходят автоматическую проверку на вредоносный код и получают статус «Listed» в течение нескольких часов.

Ручное ревью (Recommended badge): команда AMO проверяет код вручную. Расширение получает значок «Recommended» — больше доверия пользователей, появление в editorial picks. Ревью занимает от нескольких дней до нескольких недель.

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

Локализация листинга

AMO поддерживает полную локализацию через веб-интерфейс или файлы _locales/ в расширении:

_locales/
  en_US/
    messages.json
  ru/
    messages.json
  de/
    messages.json
// _locales/ru/messages.json
{
  "extensionName": { "message": "Название расширения" },
  "extensionDescription": { "message": "Описание расширения для пользователей" }
}
// manifest.json
{
  "name": "__MSG_extensionName__",
  "description": "__MSG_extensionDescription__"
}

Локализованные описания на AMO добавляются отдельно в Developer Hub — они не берутся автоматически из _locales.