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 не нужны для создания бинарников — только для запуска симуляторов на вашем собственном компьютере.
Инструменты проверки
Детерминированные наборы Vitest охватывают хранение сессий, deep links, стриминг и отмену чата, права, покупки, офлайн-кэш и маршрутизацию уведомлений — они работают на вашем компьютере без устройства. Чисто нативное поведение, такое как блокировка приложения, доставка push и покупки в магазине, проверяется вместо этого в сборке разработки EAS.
corepack pnpm --filter @supastack/mobile test
corepack pnpm --filter @supastack/mobile typecheck