Saltar al contenido
supastack
Explorar la documentación
MóvilExpo

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

Pila tecnológica de Mobile

Las tecnologías dentro de la aplicación Expo y el papel que desempeña cada una.

Antes de comenzar

La aplicación Mobile es una superficie nativa pequeña: cada biblioteca a continuación ya está fijada en apps/mobile/package.json, por lo que nada en esta página necesita una instalación separada. Esta página explica qué hace cada pieza para que las guías posteriores tengan sentido.

El backend mantiene su propia pila —Next.js, Postgres y los adaptadores de proveedores— en el repositorio Web. La aplicación lo alcanza a través de EXPO_PUBLIC_API_URL en lugar de integrar nada de ello, razón por la cual un checkout solo de Mobile permanece pequeño.

Expo + React Native

Expo es la cadena de herramientas que ejecuta, empaqueta y compila la aplicación; React Native renderiza elementos de interfaz nativos reales en lugar de una webview. Expo Router ofrece navegación basada en archivos: cada archivo bajo apps/mobile/app/ se convierte en una pantalla, con la pila de sesión iniciada agrupada bajo app/(app)/.

Expo Go abre la vista previa de desarrollo compartida en su teléfono, mientras que una compilación de desarrollo es su propia aplicación instalable, necesaria una vez que un módulo nativo como las compras o el bloqueo biométrico debe ejecutarse.

TypeScript

Todo el código de la aplicación es TypeScript, y el paquete incluye una verificación de tipos estricta. Puede comprobar cada archivo sin un dispositivo ni un backend en ejecución.

Better Auth Expo + almacenamiento seguro

El inicio de sesión viaja por el cliente Better Auth Expo a través del navegador del sistema: la aplicación abre la página de autenticación del backend, el backend regresa al esquema de deep link de la aplicación y el token de sesión se guarda en expo-secure-store —el Keychain en iOS y el Keystore en Android—, nunca en almacenamiento plano ni en configuración empaquetada.

Los mismos módulos cubren passkeys, un bloqueo de aplicación biométrico opcional a través de expo-local-authentication y un cierre de sesión que borra la caché sin conexión con ámbito de workspace.

Compras de RevenueCat

react-native-purchases conecta StoreKit y Play Billing con la sincronización de entitlements del kit: la aplicación inicia la compra en la tienda, el backend la verifica a través del webhook de RevenueCat y el servidor decide qué puede usar el workspace.

Las compras permanecen desactivadas en la primera vista previa (EXPO_PUBLIC_MOBILE_PURCHASES_PROVIDER=off). Las pruebas reales de compra y restauración necesitan una compilación de desarrollo EAS, porque Expo Go no puede ejecutar el módulo de compras nativo.

EAS Build + Submit

eas.json incluye tres perfiles: development compila un dev client para el simulador de iOS, preview compila un APK de Android interno para testers y production compila los binarios de tienda con versiones autoincrementadas y un paso de envío a la pista interna de Play.

Las compilaciones se ejecutan en la nube de Expo, por lo que no necesita un Xcode o Android Studio local para producir binarios, solo para ejecutar simuladores en su propia computadora.

Paquetes compartidos

@supastack/ui-native transporta los view-models multiplataforma —createEntitlementCard convierte el estado de entitlement del servidor en un contrato de tarjeta único— y @supastack/design-tokens transporta los valores de tema. Solo estos dos paquetes compartidos se incluyen en el checkout de Mobile; los paquetes de servidor viven con el backend Web.

Herramientas de verificación

Las suites deterministas de Vitest cubren el almacenamiento de sesión, deep links, streaming y cancelación de chat, entitlements, compras, la caché sin conexión y el enrutamiento de notificaciones; se ejecutan en su computadora sin un dispositivo. El comportamiento exclusivo nativo como el bloqueo de la aplicación, la entrega push y las compras en tienda se verifica en cambio en una compilación de desarrollo EAS.

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