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 /nl/docs/mobile/tech-stack.md (or send Accept: text/markdown).
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.
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.
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.
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.
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.
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