Skip to main content

MiniAppContext

Полный контекст, который хост передаёт MiniApp при handshake. Возвращается из app.init() и доступен через app.getContext().
interface MiniAppContext {
  user: MiniAppUser
  school: Record<string, unknown>
  theme: MiniAppTheme
  platform: Platform
  config: MiniAppConfig
}

MiniAppUser

id
number
required
Внутренний идентификатор пользователя в Exode.
uuid
string | null
Публичный UUID пользователя.
firstName
string | null
Имя пользователя.
lastName
string | null
Фамилия пользователя.
avatar
object | null
Аватар в трёх размерах: small, medium, maximum.
email
string | null
Email пользователя.
phone
string | null
Телефон пользователя.
role
string
required
Роль: Student, Tutor, Parent и др.
language
string | null
Язык интерфейса: en, ru, uz, qa.

MiniAppTheme

interface MiniAppTheme {
  scheme: 'light' | 'dark'
}

MiniAppConfig

interface MiniAppConfig {
  isDesktop: boolean
  isMobile: boolean
  language: string
}

Platform

type Platform = 'web' | 'native'
native означает, что Exode запущен внутри нативной оболочки (например, iOS/Android-приложение). В остальных случаях web.

school

Поле school — открытый объект Record<string, unknown> со всеми данными школы (название, домен, конфиг и т. п.). Структура зависит от конкретной школы; уточняйте нужные поля у хост-приложения.

События хоста (MiniAppEventMap)

Отправляются хостом при изменении данных. MiniApp подписывается через app.on(event, handler).
СобытиеPayloadКогда срабатывает
theme:changedMiniAppThemeПользователь переключил тему
user:updatedMiniAppUserИзменился профиль или сменился аккаунт
school:updatedRecord<string, unknown>Изменились данные школы
config:updatedMiniAppConfigСмена размера окна, языка
route:changed{ path, params }Хост изменил маршрут
context:updatedPartial<MiniAppContext>Любое частичное обновление контекста
visibility:changed{ visible: boolean }Iframe стал видимым/невидимым
Событие context:updated применяется к внутреннему кэшу автоматически — app.getContext() всегда вернёт актуальные данные.

Команды MiniApp → хост (MiniAppCommandMap)

Вызываются через namespaces app.route и app.ui.
КомандаPayloadМетод SDK
navigate{ path, params? }app.route.navigate()
navigate:backapp.route.back()
showSnackbar{ message, type? }app.ui.showSnackbar()
setTabbarVisible{ visible }app.ui.setTabbarVisible()
setHeaderVisible{ visible }app.ui.setHeaderVisible()
closeapp.ui.close()

BridgeMessage

Низкоуровневый формат сообщений postMessage. Обычно разработчику не нужен, но полезен при отладке.
interface BridgeMessage<T = unknown> {
  type: string
  requestId?: string
  payload?: T
  source: 'exode-host' | 'exode-miniapp'
}
Не отправляйте postMessage вручную. Все валидные взаимодействия идут через методы ExodeMiniApp — только они гарантируют корректный handshake, requestId и валидацию origin.

Импорт типов

import type {
  MiniAppContext,
  MiniAppUser,
  MiniAppTheme,
  MiniAppConfig,
  MiniAppEventMap,
  MiniAppCommandMap,
  BridgeMessage,
  Platform,
} from '@exode-team/sdk/miniapp'