name, category, public, database, hosting_hints, audit_stack, plugins
name
category
public
database
hosting_hints
audit_stack
plugins
mobile-expo
mobile
true
optional
app-store
play-store
expo-go
eas-build
analyze
code-clean
design-review
perf
cso
a11y
doc
context7
ui-ux-pro-max
gstack
yes
yes
no
Mobile Expo / React Native
Application mobile React Native gérée par Expo (managed workflow) ou bare React Native. Distribution iOS + Android via App Store / Play Store, ou Expo Go en dev.
Detection signals
Strong signals (× 3)
FILE: app.json OR app.config.js OR app.config.ts contenant "expo"
DEP: package.json contient "expo"
FILE: metro.config.js OR metro.config.ts
DEP: "react-native"
Medium signals (× 2)
DEP: "expo-router", "@expo/vector-icons", "expo-font"
DIR: app/ (Expo Router file-system routing) avec .tsx
DIR: assets/ avec icon.png, splash.png
FILE: eas.json (EAS Build)
FILE: babel.config.js avec preset "babel-preset-expo"
Weak signals (× 1)
DIR: android/, ios/ (bare workflow uniquement)
DEP: "react-navigation" OR "@react-navigation/native"
DEP: "@supabase/supabase-js" OR "firebase" OR "@tanstack/react-query"
Counter-signals
DEP: "next" ET .tsx au root → c'est Next.js (web), pas Expo
FILE: astro.config.* → Astro
Implications
Distribution : App Store (iOS), Play Store (Android), Expo Go (dev), internal distribution (TestFlight/Play Console Internal)
Base de données : locale (AsyncStorage / SQLite / MMKV / WatermelonDB) + backend (Supabase / Firebase / API custom)
SEO/GEO : N/A (app native)
Surface sécurité : GRANDE — AsyncStorage non chiffré par défaut, secrets côté app, deep links exploitables
UI/UX : CRITIQUE — mobile = exigences spécifiques (gestures, haptics, safe area)
Typical pain points
Secrets / API keys dans app.json → exposés dans le bundle
AsyncStorage utilisé pour tokens → JWT en clair sur l'appareil
Pas d'expo-secure-store ou react-native-keychain pour secrets
Permissions iOS/Android demandées mal justifiées (rejet review)
Performances : listes longues sans FlatList/FlashList (re-render entier)
Images non optimisées / pas de expo-image (cache + formats)
Pas de splash screen configuré → écran blanc au démarrage
Icône app basse résolution
Deep links non configurés / configurés sans validation
Pas de crash reporting (Sentry / Bugsnag absents)
Expo SDK obsolète (upgrade annuel obligatoire)
Bare workflow sans CI/CD (builds manuels en local)
Tests E2E absents (Detox / Maestro non configurés)
i18n absent ou hardcodé
Accessibilité : accessibilityLabel absent, focus order cassé, contrast insuffisant
Dark mode pas supporté (useColorScheme non utilisé)
Safe area non respectée (contenu sous notch / home indicator)
Gestures conflits (swipe drawer vs swipe back iOS)
Over-the-air updates (expo-updates) non utilisées
app.json "version" / "buildNumber" non incrémentés
Interview questions (adaptive)
En plus du set minimum business :
Workflow : Expo managed / Expo bare / pur React Native ?
SDK Expo version ?
Navigation : Expo Router / React Navigation / autre ?
State : Redux / Zustand / Jotai / Context / React Query seul ?
Backend : Supabase / Firebase / API custom / BaaS autre ?
Auth : provider + storage (SecureStore / Keychain / AsyncStorage) ?
Database locale : AsyncStorage / MMKV / SQLite / WatermelonDB / Realm ?
Push notifications : Expo Push / FCM / OneSignal / aucun ?
Crash reporting : Sentry / Bugsnag / aucun ?
Analytics : Amplitude / Mixpanel / PostHog / Firebase / aucun ?
Tests : unit (Jest) + E2E (Detox / Maestro) ?
Build + distribution : EAS Build + EAS Submit / Xcode/Gradle manuels / CI custom ?
Over-the-air updates activées ?
Cible OS : iOS min version / Android min API level ?
Dark mode supporté ?
i18n : librairie + langues ?
Accessibilité : audit VoiceOver / TalkBack effectué ?
App Store Review : première soumission faite / rejetée / en cours ?
Plugin recommendations
context7 : ON — Expo SDK évolue vite (breaking chaque SDK)
ui-ux-pro-max : ON — mobile UX spécifique
gstack : OFF (pas de browser QA)
Example project layout (Expo Router)