Aller au contenu
supastack
Parcourir la documentation
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 /fr/docs/mobile/tech-stack.md (or send Accept: text/markdown).

Pile technologique Mobile

Les technologies dans l'application Expo et le rôle que joue chacune.

Avant de commencer

L'application Mobile est une petite surface native : chaque bibliothèque ci-dessous est déjà épinglée dans apps/mobile/package.json, donc rien sur cette page ne nécessite une installation séparée. Cette page explique ce que fait chaque pièce pour que les guides suivants aient du sens.

Le backend conserve sa propre pile — Next.js, Postgres et les adaptateurs de fournisseurs — dans le dépôt Web. L'application l'atteint via EXPO_PUBLIC_API_URL au lieu d'y intégrer quoi que ce soit, c'est pourquoi un checkout uniquement Mobile reste petit.

Expo + React Native

Expo est la chaîne d'outils qui exécute, bundle et construit l'application ; React Native rend de vrais éléments d'interface natifs plutôt qu'une webview. Expo Router offre une navigation basée sur les fichiers : chaque fichier sous apps/mobile/app/ devient un écran, avec la pile connectée regroupée sous app/(app)/.

Expo Go ouvre l'aperçu de développement partagé sur votre téléphone, tandis qu'un development build est votre propre application installable — requis dès qu'un module natif comme les achats ou le verrou biométrique doit s'exécuter.

TypeScript

Le code de l'application est entièrement en TypeScript, et le package est livré avec une vérification de types stricte. Vous pouvez vérifier chaque fichier sans appareil ni backend en cours d'exécution.

Better Auth Expo + stockage sécurisé

La connexion passe par le client Better Auth Expo via le navigateur système : l'application ouvre la page d'authentification du backend, le backend revient au schéma de deep link de l'application, et le jeton de session est conservé dans expo-secure-store — le Keychain sur iOS et le Keystore sur Android — jamais dans un stockage en clair ou une configuration embarquée.

Les mêmes modules couvrent les passkeys, un verrou d'application biométrique optionnel via expo-local-authentication, et une déconnexion qui efface le cache hors ligne à portée workspace.

Achats RevenueCat

react-native-purchases connecte StoreKit et Play Billing à la synchronisation d'entitlements du kit : l'application lance l'achat en store, le backend le vérifie via le webhook RevenueCat, et le serveur décide ce que le workspace peut utiliser.

Les achats restent désactivés dans le premier aperçu (EXPO_PUBLIC_MOBILE_PURCHASES_PROVIDER=off). Les tests réels d'achat et de restauration nécessitent un build de développement EAS, car Expo Go ne peut pas exécuter le module d'achat natif.

EAS Build + Submit

eas.json est livré avec trois profils : development construit un dev client pour le simulateur iOS, preview construit un APK Android interne pour les testeurs, et production construit les binaires de store avec des versions auto-incrémentées et une étape de soumission vers la piste interne Play.

Les builds s'exécutent dans le cloud d'Expo, vous n'avez donc pas besoin d'un Xcode ou Android Studio local pour produire des binaires — seulement pour exécuter des simulateurs sur votre propre ordinateur.

Packages partagés

@supastack/ui-native porte les view-models multiplateformes — createEntitlementCard transforme l'état d'entitlement du serveur en un contrat de carte unique — et @supastack/design-tokens porte les valeurs de thème. Seuls ces deux packages partagés sont livrés dans le checkout Mobile ; les packages serveur vivent avec le backend Web.

Outillage de vérification

Des suites Vitest déterministes couvrent le stockage de session, les deep links, le streaming et l'annulation du chat, les entitlements, les achats, le cache hors ligne et le routage des notifications — elles s'exécutent sur votre ordinateur sans appareil. Les comportements uniquement natifs comme le verrou de l'application, la livraison push et les achats en store sont vérifiés dans un build de développement EAS.

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