Naar inhoud gaan
supastack
Blader door de docs
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 /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.

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