Pular para o conteúdo
supastack
Explorar a documentação
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 /pt/docs/mobile/tech-stack.md (or send Accept: text/markdown).

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.

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.

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.

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.

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.

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