Розробка архітектури Super App
Super App — це додаток, всередині якого знаходяться інші додатки. WeChat, Grab, Gojek, Kaspi — різні реалізації однієї ідеї: користувач не переключається між додатками, все відбувається в одній платформі. Для бізнесу це означає контроль власника платформи над маркетплейсом міні-програм, де партнери публікують свої сервіси.
Архітектурно super app — це набагато більше, ніж просто «велика додаток з вкладками». Це платформа з системою запуску ізольованих міні-програм, спільним контекстом автентифікації, нативними bridge API та механізмом розповсюджування міні-програм.
Шари архітектури
Host Application (оболонка). Відповідає за: автентифікацію та управління сеансом, навігацію верхнього рівня (панель вкладок, home feed), каталог міні-програм, управління життєвим циклом міні-програм (запуск, пауза, знищення), спільні сервіси (платежі, геолокація, push, камера) через єдиний Bridge API.
Mini Program Runtime. Ізольоване середовище виконання для кожної міні-програми. На iOS — WKWebView з обмеженим JS API або нативний контейнер для compile-time плагінів. На Android — WebView з WebViewClient + addJavascriptInterface або DexClassLoader для нативних плагінів. Кожна міні-програма працює у власному WebView/контейнері з ізольованим localStorage та cookies.
Bridge API. Міні-програми не мають прямого доступу до нативних API. Усі виклики проходять через Bridge: MiniApp.bridge.call("payment.pay", { amount: 100 }, callback). Bridge перекладає виклик у нативний код хоста. Хост вирішує, дозволити виклик (перевірка дозволів міні-програми), виконати та повернути результат. Це критична точка безпеки.
Sandbox та ізоляція
Кожна міні-програма отримує від хоста тільки те, що він явно дозволяє:
- Токен доступу для власного бекенду (не master token хоста)
- Дозвіл на конкретні Bridge API (платежі тільки якщо партнер пройшов верифікацію)
- Ізольоване сховище (ключі з префіксом
mini_program_id) - Обмежений мережевий доступ через WebView content policy — тільки whitelisted домени міні-програми
Content Security Policy в WebView: на Android встановіть WebSettings.setAllowUniversalAccessFromFileURLs(false) та строгі CSP заголовки. На iOS WKWebView з WKContentRuleList блокує XHR до неавторизованих доменів.
Міні-програми не можуть: отримувати доступ до даних інших міні-програм, читати токени хоста, виконувати нативний код поза Bridge API.
Управління життєвим циклом міні-програм
Міні-програми переходять через стани: downloaded → launched → active → paused → destroyed. Хост управляє цим так, як ОС управляє додатками.
Кеширування та оновлення. Міні-програма — це zip-архів (JS/HTML/CSS + маніфест з версією). Перший запуск: завантаження з CDN → валідація підпису → розпакування в filesDir. Подальші запуски: перевірка версії → якщо доступне оновлення, фонове завантаження нового архіву → наступний запуск відкриває нову версію. Користувачі не чекають завантаження при повторному відкритті. Інвалідація кешу за semver: мажорна версія міні-програми вимагає негайного оновлення, мінорна оновлюється у фоні.
Управління пам'яттю. Утримуйте не більше 3 активних WebView одночасно (налаштовується). Відкриття 4-го запускає очистку найменш недавно використаного (LRU). WKWebView на iOS споживає значну кількість пам'яті при рендерингу важких міні-програм — моніторте через os_proc_available_memory(), проактивно очищайте при applicationDidReceiveMemoryWarning.
Авторизація: SSO в межах Super App
Користувач автентифікується з хостом один раз. Міні-програма отримує short-lived токен доступу для власного бекенду через Bridge API: bridge.call("auth.getToken", { scope: "mini_program_x" }, callback). Хост видає токен з обмеженою областю, дійсний 15 хвилин. Міні-програма обмінює його на власний JWT на своєму бекенді. Хост ніколи не ділиться master token.
Платежі через Bridge
Payment Bridge — найбільш чутливий компонент. Міні-програма викликає bridge.call("payment.requestPay", { orderId, amount, currency }) → хост показує нативний UI підтвердження платежу (не WebView!) → користувач підтверджує біометрією → хост обробляє платіж через свою платіжну систему → повертає результат міні-програмі. Міні-програма ніколи не бачить дані платежу користувача.
Приклад. Fintech super app: хост побудований на Flutter (навігація, автентифікація, платежі через Stripe), 15 міні-програм (кредити, страховка, оплата комунальних послуг, інвестиції) — змішування нативних плагінів та WebView програм. Bridge API: 40+ методів. Маркетплейс міні-програм з модерацією: партнер завантажує zip → CI запускає security scan (статичний аналіз JS через ESLint security rules, валідація маніфесту) → ручна модерація → публікація. Час запуску кешованої міні-програми: 200–400 мс.
Технологічний стек
| Шар | Android | iOS |
|---|---|---|
| Host shell | Jetpack Compose + Hilt | SwiftUI + Combine |
| Mini program runtime | WebView (WebKit) + DexClassLoader | WKWebView + compile-time плагіни |
| Bridge | JavascriptInterface + MethodChannel | WKScriptMessageHandler |
| Storage | Room + EncryptedSharedPreferences | CoreData + Keychain |
| Payments | Stripe SDK / native | Stripe SDK / Apple Pay |
Часові рамки
| Етап | Орієнтовна тривалість |
|---|---|
| Host shell + Bridge API + перша міні-програма | 4–6 місяців |
| Маркетплейс міні-програм + управління життєвим циклом | +2–4 місяці |
| Повноцінна платформа з Partner SDK | 10–18 місяців загалом |
Ціна розраховується індивідуально. Super App — це платформенний продукт, що вимагає команди з досвідом у нативній розробці, безпеці та DevOps.







