> ## 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

# Stack de tecnologias Mobile

As tecnologias dentro do aplicativo Expo e o papel que cada uma desempenha.

## Antes de começar

O aplicativo Mobile é uma pequena superfície nativa: cada biblioteca abaixo já está fixada em `apps/mobile/package.json`, então nada nesta página precisa de instalação separada. Esta página explica o que cada peça faz para que os guias posteriores façam sentido.

O backend mantém sua própria stack — Next.js, Postgres e os adaptadores de provedores — no repositório Web. O aplicativo o alcança via `EXPO_PUBLIC_API_URL` em vez de embutir qualquer parte dele, e é por isso que um checkout somente Mobile permanece pequeno.


## Expo + React Native

Expo é a toolchain que executa, empacota e compila o aplicativo; o React Native renderiza elementos de interface nativos reais em vez de uma webview. O Expo Router oferece navegação baseada em arquivos: cada arquivo sob `apps/mobile/app/` vira uma tela, com a pilha de sessão iniciada agrupada sob `app/(app)/`.

O Expo Go abre a pré-visualização de desenvolvimento compartilhada no seu telefone, enquanto um development build é seu próprio aplicativo instalável — necessário assim que um módulo nativo como compras ou o bloqueio biométrico precisar rodar.

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


## TypeScript

Todo o código do aplicativo é TypeScript, e o pacote vem com uma verificação de tipos estrita. Você pode verificar cada arquivo sem um dispositivo ou um backend em execução.

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


## Better Auth Expo + armazenamento seguro

O login viaja pelo cliente Better Auth Expo através do navegador do sistema: o aplicativo abre a página de autenticação do backend, o backend retorna ao esquema de deep link do aplicativo e o token de sessão é guardado em `expo-secure-store` — o Keychain no iOS e o Keystore no Android —, nunca em armazenamento simples ou configuração embutida.

Os mesmos módulos cobrem passkeys, um bloqueio de aplicativo biométrico opcional via `expo-local-authentication` e um logout que limpa o cache offline com escopo de workspace.

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


## Compras RevenueCat

`react-native-purchases` conecta StoreKit e Play Billing à sincronização de entitlements do kit: o aplicativo inicia a compra na loja, o backend a verifica via webhook da RevenueCat e o servidor decide o que o workspace pode usar.

As compras ficam desligadas na primeira pré-visualização (`EXPO_PUBLIC_MOBILE_PURCHASES_PROVIDER=off`). Testes reais de compra e restauração precisam de um build de desenvolvimento EAS, porque o Expo Go não consegue rodar o módulo de compras nativo.

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


## EAS Build + Submit

`eas.json` traz três perfis: `development` compila um dev client para o simulador de iOS, `preview` compila um APK Android interno para testadores e `production` compila os binários de loja com versões autoincrementadas e uma etapa de envio à trilha interna do Play.

Os builds rodam na nuvem da Expo, então você não precisa de um Xcode ou Android Studio local para produzir binários — apenas para rodar simuladores no seu próprio computador.

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


## Pacotes compartilhados

`@supastack/ui-native` carrega os view-models multiplataforma — `createEntitlementCard` transforma o estado de entitlement do servidor em um único contrato de cartão — e `@supastack/design-tokens` carrega os valores de tema. Apenas esses dois pacotes compartilhados são incluídos no checkout Mobile; os pacotes de servidor vivem com o backend Web.


## Ferramentas de verificação

Suítes Vitest determinísticas cobrem armazenamento de sessão, deep links, streaming e cancelamento de chat, entitlements, compras, o cache offline e o roteamento de notificações — rodam no seu computador sem um dispositivo. Comportamentos exclusivos nativos como o bloqueio do aplicativo, entrega push e compras na loja são verificados em um build de desenvolvimento EAS.

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


## Seguinte

[Executar a app mobile](https://supastack.dev/pt/docs/mobile/local-setup.md)
