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

Le tecnologie dentro l'app Expo e il ruolo che ognuna svolge.

## Prima di iniziare

L'app Mobile è una piccola superficie nativa: ogni libreria qui sotto è già bloccata in `apps/mobile/package.json`, quindi nulla in questa pagina richiede un'installazione separata. Questa pagina spiega cosa fa ogni pezzo affinché le guide successive abbiano senso.

Il backend mantiene il proprio stack — Next.js, Postgres e gli adattatori dei provider — nel repository Web. L'app lo raggiunge tramite `EXPO_PUBLIC_API_URL` invece di incorporare nulla di esso, ecco perché un checkout solo Mobile resta piccolo.


## Expo + React Native

Expo è la toolchain che esegue, fa il bundle e compila l'app; React Native rende veri elementi di interfaccia nativi piuttosto che una webview. Expo Router offre navigazione basata su file: ogni file sotto `apps/mobile/app/` diventa una schermata, con lo stack connesso raggruppato sotto `app/(app)/`.

Expo Go apre l'anteprima di sviluppo condivisa sul tuo telefono, mentre un development build è la tua app installabile — richiesta una volta che un modulo nativo come gli acquisti o il blocco biometrico deve funzionare.

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


## TypeScript

Tutto il codice dell'app è TypeScript, e il pacchetto include un typecheck rigoroso. Puoi controllare ogni file senza un dispositivo o un backend in esecuzione.

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


## Better Auth Expo + archiviazione sicura

L'accesso viaggia attraverso il client Better Auth Expo tramite il browser di sistema: l'app apre la pagina di autenticazione del backend, il backend ritorna allo schema deep-link dell'app e il token di sessione è conservato in `expo-secure-store` — il Keychain su iOS e il Keystore su Android — mai in archiviazione in chiaro o configurazione incorporata.

Gli stessi moduli coprono i passkey, un blocco app biometrico opzionale tramite `expo-local-authentication` e un logout che cancella la cache offline con scope workspace.

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


## Acquisti RevenueCat

`react-native-purchases` collega StoreKit e Play Billing alla sincronizzazione degli entitlement del kit: l'app avvia l'acquisto nello store, il backend lo verifica tramite il webhook RevenueCat e il server decide cosa il workspace può usare.

Gli acquisti restano disattivati nella prima anteprima (`EXPO_PUBLIC_MOBILE_PURCHASES_PROVIDER=off`). I test reali di acquisto e ripristino richiedono una build di sviluppo EAS, perché Expo Go non può eseguire il modulo acquisti nativo.

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


## EAS Build + Submit

`eas.json` include tre profili: `development` compila un dev client per il simulatore iOS, `preview` compila un APK Android interno per i tester, e `production` compila i binari dello store con versioni auto-incrementate e un passaggio di invio alla traccia interna di Play.

Le build vengono eseguite nel cloud di Expo, quindi non hai bisogno di un Xcode o Android Studio locale per produrre binari — solo per eseguire i simulatori sul tuo computer.

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


## Pacchetti condivisi

`@supastack/ui-native` trasporta i view-model multipiattaforma — `createEntitlementCard` trasforma lo stato di entitlement del server in un unico contratto di scheda — e `@supastack/design-tokens` trasporta i valori del tema. Solo questi due pacchetti condivisi sono inclusi nel checkout Mobile; i pacchetti server vivono con il backend Web.


## Strumenti di verifica

Suite Vitest deterministiche coprono l'archiviazione della sessione, i deep link, lo streaming e la cancellazione della chat, gli entitlement, gli acquisti, la cache offline e il routing delle notifiche — vengono eseguite sul tuo computer senza un dispositivo. Il comportamento solo nativo come il blocco app, la consegna push e gli acquisti nello store è invece verificato in una build di sviluppo EAS.

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


## Successivo

[Eseguire l'app mobile](https://supastack.dev/it/docs/mobile/local-setup.md)
