UI
- NativeWind 4 - Stable · Tailwind 3 classes + RNR components behind @/ui · Expo Go OK
- NativeWind 5 - RC · Tailwind 4 classes behind @/ui · Expo Go OK
- Tamagui - Tamagui 2 (v5 config, optimising compiler) behind @/ui · Expo Go OK
- Unistyles 3 - C++ StyleSheet with themes/breakpoints behind @/ui · dev build required (no Expo Go)
- StyleSheet (plain RN) - no style engine, tokens + StyleSheet.create · Expo Go OK
Data
- TanStack Query - server state + cache · Expo Go OK
- Apollo Client - GraphQL client + normalized cache · Expo Go OK
- SWR - stale-while-revalidate hooks · Expo Go OK
State
Storage
- expo-sqlite/kv-store - sync + async key/value on SQLite · Expo Go OK
- MMKV - fastest sync key/value (Nitro) · dev build required (no Expo Go)
- AsyncStorage - async-only key/value, the community standard · Expo Go OK
Forms
- React Hook Form - Form + Field on @/ui Input, zod resolver · Expo Go OK
i18n
AuthPro
- Supabase Auth - email+password, Apple (native), Google (OAuth) · session on the storage adapter · Expo Go OK
- Clerk - email+code verification, Apple (native), Google (SSO) · @clerk/expo · Expo Go OK for JS flows
- Better Auth - self-hosted on the API routes · email/password + Apple/Google · Expo Go OK
PaymentsPro
- RevenueCat - in-app subscriptions + paywall · dev build required (no Expo Go)
- Adapty - in-app subscriptions + Paywall Builder · dev build required (no Expo Go)
- Stripe Checkout - web checkout via API routes (no native SDK) · Expo Go OK
AnalyticsPro
Crash reportingPro
- Sentry - JS + native crash reporting · Expo Go OK (JS errors only)
PushPro
- Expo Notifications - Expo push service + local notifications · dev build required for remote push (Expo Go: local only)
BackendPro
- API routes - Expo Router +api.ts routes · src/server helpers · EAS Hosting · Expo Go OK
Onboarding
- Onboarding flow - 3-slide intro at /onboarding, redirect until completed
Location
- Expo Location - foreground position + reverse geocoding, permission states handled · Expo Go OK
Widgets
- Expo Widgets - iOS home-screen widget + Live Activity (Lock Screen, Dynamic Island) in SwiftUI (@expo/ui), fed from the app · dev build required (no Expo Go)
Privacy consent
- Consent sheet (GDPR / CCPA) - asks before analytics + crash start (EU/EEA, UK, Switzerland, Canada, Brazil or everywhere); Settings toggles · Expo Go OK
Testing
- Jest + Testing Library - jest-expo preset, RNTL, tests for stores/theme/ui