ANÁLISIS INICIAL - UX MOBILE: Animaciones + Modo Offline
id: ANALISIS-UX-MOBILE-001
type: Analysis
status: Draft
created_date: 2026-01-12
updated_date: 2026-01-12
phase: 1-inicial
simco_version: "4.0.0"
FASE 1: ANÁLISIS Y PLANEACIÓN INICIAL
1.1 Resumen Ejecutivo
| Aspecto |
Valor |
| Fecha de Implementación |
2026-01-12 |
| Tipo de Cambio |
Feature - UX Mobile |
| Impacto |
Mobile App |
| Archivos Nuevos |
12 |
| Archivos Modificados |
7 |
| Dependencias Nuevas |
2 |
| Estado |
Implementado - Pendiente Documentación |
1.2 Contexto del Cambio
Origen: Mejoras opcionales de UX documentadas en PROXIMA-ACCION.md
- Opción B: Mejoras de UX Mobile
- Animaciones y transiciones
- Modo offline
- Optimización de rendimiento
Objetivo: Mejorar la experiencia de usuario en la app mobile con:
- Animaciones fluidas usando react-native-reanimated
- Skeleton loaders durante carga de contenido
- Persistencia offline con AsyncStorage + Zustand persist
- Detección de conexión con NetInfo
1.3 Inventario de Cambios Realizados
1.3.1 Dependencias Instaladas
| Dependencia |
Versión |
Propósito |
| @react-native-async-storage/async-storage |
^2.1.2 |
Persistencia local |
| @react-native-community/netinfo |
^11.4.1 |
Detección de red |
1.3.2 Archivos Nuevos Creados (12)
| # |
Archivo |
Tipo |
Líneas |
Propósito |
| 1 |
src/hooks/useAnimations.ts |
Hook |
187 |
8 hooks de animación reutilizables |
| 2 |
src/hooks/useNetworkStatus.ts |
Hook |
63 |
Detección estado de red |
| 3 |
src/theme/ThemeContext.tsx |
Context |
72 |
Sistema de temas light/dark |
| 4 |
src/components/ui/Skeleton.tsx |
Component |
165 |
Componentes skeleton base |
| 5 |
src/components/ui/OfflineBanner.tsx |
Component |
98 |
Banner modo offline |
| 6 |
src/components/ui/AnimatedList.tsx |
Component |
125 |
FlatList con animaciones |
| 7 |
src/components/skeletons/InventoryItemSkeleton.tsx |
Component |
72 |
Skeleton inventario |
| 8 |
src/components/skeletons/StoreCardSkeleton.tsx |
Component |
68 |
Skeleton tiendas |
| 9 |
src/components/skeletons/CreditCardSkeleton.tsx |
Component |
115 |
Skeleton créditos |
| 10 |
src/components/skeletons/NotificationSkeleton.tsx |
Component |
62 |
Skeleton notificaciones |
Total archivos nuevos: 12
Total líneas nuevas: ~1,027
1.3.3 Archivos Modificados (7)
| # |
Archivo |
Tipo Cambio |
Descripción |
| 1 |
src/stores/stores.store.ts |
Enhance |
+Persistencia AsyncStorage |
| 2 |
src/stores/inventory.store.ts |
Enhance |
+Persistencia (max 100 items) |
| 3 |
src/stores/credits.store.ts |
Enhance |
+Persistencia (max 50 tx) |
| 4 |
src/stores/notifications.store.ts |
Enhance |
+Persistencia (max 50 notif) |
| 5 |
src/app/_layout.tsx |
Enhance |
+OfflineBanner, +ThemeProvider |
| 6 |
src/app/(tabs)/index.tsx |
Refactor |
+Animaciones, +Skeletons |
| 7 |
src/app/(tabs)/inventory.tsx |
Refactor |
+Animaciones, +Skeletons |
1.4 Clasificación de Impacto
Por Capa
| Capa |
Archivos Nuevos |
Archivos Modificados |
Impacto |
| Hooks |
2 |
0 |
Bajo |
| Components/UI |
3 |
0 |
Bajo |
| Components/Skeletons |
4 |
0 |
Bajo |
| Theme |
1 |
0 |
Bajo |
| Stores |
0 |
4 |
Medio |
| Screens |
0 |
3 |
Alto |
Por Tipo de Cambio
| Tipo |
Cantidad |
Riesgo |
| Archivo nuevo (sin dependencias) |
10 |
Bajo |
| Modificación de store |
4 |
Medio |
| Modificación de screen |
2 |
Alto |
| Modificación de layout |
1 |
Alto |
1.5 Componentes No Afectados
Backend
- Sin cambios en backend
- Sin nuevas migraciones
- Sin cambios en API
Database
- Sin cambios en esquemas
- Sin cambios en entidades
- Sin nuevas tablas
1.6 Identificación de Documentación Requerida
| Documento |
Acción |
Prioridad |
| TRAZA-TAREAS-MOBILE.md |
Agregar tarea MII-MO-014 |
Alta |
| FRONTEND_INVENTORY.yml |
Actualizar con nuevos componentes |
Alta |
| PROJECT-STATUS.md |
Actualizar estado mobile |
Media |
| PROXIMA-ACCION.md |
Actualizar opciones completadas |
Media |
| _MAP.md (docs) |
Sin cambios requeridos |
- |
| Épicas existentes |
Sin cambios requeridos |
- |
1.7 Riesgos Identificados
| Riesgo |
Probabilidad |
Impacto |
Mitigación |
| Incompatibilidad reanimated |
Baja |
Alto |
Ya instalado, solo se activa uso |
| Fuga de memoria en animaciones |
Media |
Medio |
Cleanup en useEffect |
| Tamaño excesivo de cache |
Baja |
Bajo |
Límites configurados (50-100 items) |
1.8 Dependencias a Analizar (Fase 2)
- Stores → Screens: Los stores modificados son consumidos por múltiples screens
- Theme → Components: ThemeContext debe ser accesible globalmente
- Hooks → Screens: Los nuevos hooks deben funcionar en cualquier screen
- Layout → App: Cambios en _layout.tsx afectan toda la app
PRÓXIMOS PASOS
Última Actualización: 2026-01-12
Responsable: Claude Opus 4.5