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

De technologieën in de Expo-app en de rol die elk speelt.

## Voordat je begint

De Mobile-app is een klein native oppervlak: elke bibliotheek hieronder is al vastgezet in `apps/mobile/package.json`, dus niets op deze pagina heeft een aparte installatie nodig. Deze pagina legt uit wat elk stuk doet zodat de latere gidsen logisch zijn.

De backend houdt zijn eigen stack — Next.js, Postgres en de provider-adapters — in de Web-repository. De app bereikt hem via `EXPO_PUBLIC_API_URL` in plaats van er iets van in te bedden, daarom blijft een alleen-Mobile-checkout klein.


## Expo + React Native

Expo is de toolchain die de app draait, bundelt en bouwt; React Native rendert echte native interface-elementen in plaats van een webview. Expo Router biedt op bestanden gebaseerde navigatie: elk bestand onder `apps/mobile/app/` wordt een scherm, met de ingelogde stack gegroepeerd onder `app/(app)/`.

Expo Go opent de gedeelde ontwikkelpreview op je telefoon, terwijl een development build je eigen installeerbare app is — vereist zodra een native module zoals aankopen of de biometrische vergrendeling moet draaien.

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


## TypeScript

Alle app-code is TypeScript, en het pakket wordt geleverd met een strikte typecheck. Je kunt elk bestand controleren zonder apparaat of draaiende backend.

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


## Better Auth Expo + veilige opslag

Aanmelden rijdt op de Better Auth Expo-client via de systeembrowser: de app opent de auth-pagina van de backend, de backend keert terug naar het deep-link-schema van de app, en het sessietoken wordt bewaard in `expo-secure-store` — de Keychain op iOS en de Keystore op Android — nooit in gewone opslag of meegeleverde configuratie.

Dezelfde modules dekken passkeys, een optionele biometrische appvergrendeling via `expo-local-authentication`, en afmelden dat de workspace-gescopede offline cache wist.

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


## RevenueCat-aankopen

`react-native-purchases` verbindt StoreKit en Play Billing met de entitlement-synchronisatie van de kit: de app start de winkelaankoop, de backend verifieert die via de RevenueCat-webhook, en de server beslist wat de workspace mag gebruiken.

Aankopen blijven uit in de eerste preview (`EXPO_PUBLIC_MOBILE_PURCHASES_PROVIDER=off`). Echte aankoop- en hersteltests vereisen een EAS-ontwikkelbuild, omdat Expo Go de native aankoopmodule niet kan draaien.

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


## EAS Build + Submit

`eas.json` levert drie profielen: `development` bouwt een dev-client voor de iOS-simulator, `preview` bouwt een interne Android-APK voor testers, en `production` bouwt de winkelbinaries met automatisch verhoogde versies en een Play-internal-track-submitstap.

Builds draaien in de cloud van Expo, dus je hebt geen lokale Xcode of Android Studio nodig om binaries te maken — alleen om simulators op je eigen computer te draaien.

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


## Gedeelde pakketten

`@supastack/ui-native` draagt de cross-platform view-models — `createEntitlementCard` zet server-entitlementstatus om in één kaartcontract — en `@supastack/design-tokens` draagt de themawaarden. Alleen deze twee gedeelde pakketten worden meegeleverd in de Mobile-checkout; de serverpakketten leven bij de Web-backend.


## Verificatie-tooling

Deterministische Vitest-suites dekken sessieopslag, deep links, chat-streaming en -annulering, entitlements, aankopen, de offline cache en notificatie-routing — ze draaien op je computer zonder apparaat. Alleen-native gedrag zoals de appvergrendeling, push-levering en winkelaankopen wordt in plaats daarvan geverifieerd in een EAS-ontwikkelbuild.

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


## Volgende

[Draai de mobiele app](https://supastack.dev/nl/docs/mobile/local-setup.md)
