Перейти к содержимому
supastack
Обзор документации
MobileExpo

For AI agents: fetch the complete documentation index at /llms.txt, the full documentation corpus at /llms-full.txt, the agent skill at /skill.md, or this page as Markdown at /ru/docs/mobile/tech-stack.md (or send Accept: text/markdown).

Стек технологий Mobile

Технологии внутри приложения Expo и роль каждой из них.

Задать вопрос об этом руководстве
Открыть в

Прежде чем начать

Приложение Mobile — это небольшая нативная поверхность: каждая библиотека ниже уже закреплена в apps/mobile/package.json, поэтому ничему на этой странице не нужна отдельная установка. Страница объясняет, что делает каждая часть, чтобы последующие руководства были понятны.

Бэкенд держит собственный стек — Next.js, Postgres и адаптеры провайдеров — в репозитории Web. Приложение достигает его через EXPO_PUBLIC_API_URL, не встраивая ничего из него, поэтому checkout только Mobile остаётся маленьким.

Expo + React Native

Expo — это набор инструментов, который запускает, собирает и упаковывает приложение; React Native рендерит настоящие нативные элементы интерфейса, а не webview. Expo Router обеспечивает файловую навигацию: каждый файл под apps/mobile/app/ становится экраном, а стек авторизованной зоны сгруппирован под app/(app)/.

Expo Go открывает общий предпросмотр разработки на телефоне, а development build — это ваше собственное устанавливаемое приложение — необходимое, как только должен работать нативный модуль, такой как покупки или биометрическая блокировка.

TypeScript

Весь код приложения — TypeScript, и пакет поставляется со строгой проверкой типов. Вы можете проверить каждый файл без устройства или запущенного бэкенда.

Better Auth Expo + защищённое хранилище

Вход проходит через клиент Better Auth Expo через системный браузер: приложение открывает страницу аутентификации бэкенда, бэкенд возвращается к схеме deep link приложения, а токен сессии хранится в expo-secure-store — Keychain на iOS и Keystore на Android — и никогда в обычном хранилище или упакованной конфигурации.

Те же модули охватывают passkeys, необязательную биометрическую блокировку приложения через expo-local-authentication и выход, очищающий офлайн-кэш с областью workspace.

Покупки RevenueCat

react-native-purchases связывает StoreKit и Play Billing с синхронизацией прав набора: приложение инициирует покупку в магазине, бэкенд проверяет её через webhook RevenueCat, а сервер решает, что workspace может использовать.

Покупки остаются выключенными в первом предпросмотре (EXPO_PUBLIC_MOBILE_PURCHASES_PROVIDER=off). Настоящие тесты покупок и восстановления требуют сборки разработки EAS, потому что Expo Go не может запускать нативный модуль покупок.

EAS Build + Submit

eas.json содержит три профиля: development собирает dev client для симулятора iOS, preview собирает внутренний APK Android для тестировщиков, а production собирает бинарники магазина с автоинкрементированными версиями и шагом отправки на внутренний трек Play.

Сборки выполняются в облаке Expo, поэтому локальный Xcode или Android Studio не нужны для создания бинарников — только для запуска симуляторов на вашем собственном компьютере.

Общие пакеты

@supastack/ui-native несёт кроссплатформенные модели представлений — createEntitlementCard превращает состояние прав сервера в единый контракт карточки — и @supastack/design-tokens несёт значения темы. Только эти два общих пакета поставляются в checkout Mobile; серверные пакеты живут с Web-бэкендом.

Инструменты проверки

Детерминированные наборы Vitest охватывают хранение сессий, deep links, стриминг и отмену чата, права, покупки, офлайн-кэш и маршрутизацию уведомлений — они работают на вашем компьютере без устройства. Чисто нативное поведение, такое как блокировка приложения, доставка push и покупки в магазине, проверяется вместо этого в сборке разработки EAS.

corepack pnpm --filter @supastack/mobile test
corepack pnpm --filter @supastack/mobile typecheck