Реалізація маркетплейсу міні-програм у Super App
Маркетплейс міні-програм — це не каталог з пошуком. Це система перевірки, дистрибуції, монетизації та контролю версій, вбудована в мобільну додаток. App Store для міні-програм, тільки працює в реальному часі без 24-72 годин ревізії від Apple.
Три шари маркетплейсу
Маркетплейс складається з трьох незалежних підсистем, які команди регулярно плутають та мішають:
Вітрина — UI всередину Super App: каталог, пошук, категорії, персоналізовані рекомендації, історія запусків. Зазвичай це звичайний екран нативної додатка або WebView з окремою міні-програмою-каталогом.
Backend дистрибуції — сервер, який зберігає bundle кожної міні-програми, управляє версіями, видає manifest.json з метаданими та обробляє запити на оновлення. Це CDN + metadata API + версійне сховище.
Система ревізії — портал для розробників, де вони завантажують нові версії, стежать за статусом проверки, отримують фідбек. На стороні адміністрації — черга проверок з інструментами для автоматичного та ручного аналізу.
Як працює завантаження та запуск міні-програми
Користувач тапає на іконку міні-програми. Що відбувається за кулісами:
- Контейнер перевіряє локальний кеш: чи є bundle цієї міні-програми, актуальна ли версія
- Якщо немає або версія застаріла — запит до CDN за bundle (ZIP з JS/HTML/CSS/ассетами)
- Bundle розпаковується в захищену директорію додатка (не в
Caches— там система може видалити без попередження, а вApplication Supportна iOS абоgetFilesDir()на Android) - Верифікація підпису bundle — SHA-256 хеш, підписаний приватним ключем платформи
- Завантаження у WebView, ініціалізація bridge
Крок 4 критично важливий. Без верифікації підпису man-in-the-middle атака може замінити bundle на шкідливий код. Підпис верифікується публічним ключем, вбудованим у бінарник хоста при компіляції.
Час холодного старту (перше завантаження): 1.5–4 секунди залежно від розміру bundle та швидкості з'єднання. Ціль для повторного старту (з кешу): < 800 мс. Для досягнення — паралельна ініціалізація WebView та розпакування bundle, prefetch manifest.json у фоні при кожному запуску Super App.
Версіонування та оновлення
Manifest-файл міні-програми:
{
"id": "com.vendor.miniapp",
"version": "2.3.1",
"minContainerVersion": "4.0",
"bundleUrl": "https://cdn.superapp.com/bundles/vendor/2.3.1/bundle.zip",
"bundleHash": "sha256:a3f8...",
"permissions": ["location.read", "camera"],
"size": 186432
}
minContainerVersion — найважливіше поле. Якщо міні-програма використовує API, додано у контейнер версії 4.0, користувачі зі старим Super App її не запустять. Контейнер при запуску перевіряє сумісність та показує екран «Оновіть додаток» замість краші.
Стратегія оновлень: background update при кожному запуску Super App. Контейнер у фоні перевіряє manifest всіх встановлених міні-програм та завантажує нові bundle без участі користувача. При наступному відкритті міні-програми — вже нова версія.
Система ревізії: автоматика та ручна перевірка
Автоматичні перевірки при завантаженні нової версії:
- Статичний аналіз JS-коду: заборонені паттерни (eval, динамічний import з зовнішніх URL, доступ до
window.parent) - Перевірка маніфесту permissions: запитані права відповідають API-викликам у коді
- Сканування на відомі уразливості в npm-залежностях (інтеграція зі Snyk або npm audit)
- Розмір bundle в межах ліміту (зазвичай < 2 MB для main bundle)
- Мінімальна версія контейнера коректна
Ручна перевірка — для нових міні-програм та для тих, де автоматика знайшла попередження. Команда ревізії отримує чергу задач з результатами автоматичних перевірок, скриншотами (генеруються через headless симулятор), описом від розробника.
Монетизація: платні міні-програми та in-app purchases
Якщо платформа передбачає монетизацію міні-програм, маркетплейс має управляти платіжними відносинами. Два типові сценарії:
Одноразова покупка доступу — користувач платить за розблокування міні-програми. Платіж проходить через Super App (Apple Pay / Google Pay / картка), підтвердження доступу зберігається на backend платформи. Міні-програма при запуску перевіряє токен доступу через bridge.
Комісія з транзакцій всередину міні-програми — міні-програма використовує платіжний API контейнера, платформа бере % з кожної транзакції. Вимагає суворого контролю: міні-програма не повинна мати можливість обійти платіжний bridge та прийняти оплату прямо.
Аналітика для розробників
У портальі розробника має бути аналітика: кількість запусків, retention, crash rate по версіям, середній cold start time. Це стандартне очікування сторонніх розробників — без цих даних вони не можуть оцінити якість свого продукту.
Дані збираємо на стороні контейнера (не передаючи у міні-програму raw event stream), агрегуємо на backend та показуємо через REST API портальу розробника.
Терміни реалізації повного маркетплейсу: від 3 до 7 місяців залежно від вимог до системи ревізії, монетизації та числа платформ. Тільки вітрина + CDN дистрибуція без портальу розробника — від 6 до 10 тижнів.







