> ## Documentation Index
> Fetch the complete documentation index at: https://supastack.dev/llms.txt
> Use this file to discover all available pages before exploring further.
> For the full documentation corpus in one file, fetch: https://supastack.dev/llms-full.txt

# Стек технологий 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 — это ваше собственное устанавливаемое приложение — необходимое, как только должен работать нативный модуль, такой как покупки или биометрическая блокировка.

- [Expo](https://expo.dev)
- [Expo Router](https://docs.expo.dev/router/introduction/)
- [React Native](https://reactnative.dev)


## TypeScript

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

- [TypeScript](https://www.typescriptlang.org)


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

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

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

- [Better Auth](https://better-auth.com)
- [Expo SecureStore](https://docs.expo.dev/versions/latest/sdk/securestore/)


## Покупки RevenueCat

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

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

- [RevenueCat](https://www.revenuecat.com/docs)


## EAS Build + Submit

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

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

- [EAS Build](https://docs.expo.dev/eas/)


## Общие пакеты

`@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
```


## Вперёд

[Запуск мобильного приложения](https://supastack.dev/ru/docs/mobile/local-setup.md)
