Gestion de Estado
La app utiliza un patron hibrido para la gestion de estado:- Zustand para estado local/cliente (UI, sesion, preferencias)
- TanStack React Query para estado del servidor (datos remotos, cache, sincronizacion)
- React Context para funcionalidades transversales de UI
Zustand Stores
- Stores Globales
- Stores de Modulos
Ubicados en
src/shared/stores/:Detalle: authStore (Almacenamiento Hibrido)
ElauthStore implementa un sistema de almacenamiento hibrido para separar datos sensibles de datos regulares:
El
authStore usa partialize para seleccionar que datos se persisten y un createHybridStorage
personalizado que enruta automaticamente los datos sensibles a SecureStore y el resto a
AsyncStorage.Detalle: chatStore (Middlewares)
TanStack React Query
La configuracion delQueryClient se define en src/shared/constants/queryClient.ts:
React Contexts
BottomSheetContext
Ubicacion:
src/shared/contexts/BottomSheetContext.tsxGestiona bottom sheets globales usando @gorhom/bottom-sheet. Provee:showBottomSheet(config)- Mostrar un bottom sheethideBottomSheet()- Ocultar el bottom sheet activohideAllBottomSheets()- Ocultar todos los bottom sheets
ScrollContext
Ubicacion:
src/shared/contexts/ScrollContext.tsxTracking de scroll offset y viewport height. Permite a componentes hijos reaccionar a la posicion de scroll del contenedor padre.Diagrama de Flujo de Estado
Middlewares de Zustand Utilizados
El
onboardingStore implementa persistencia manual con AsyncStorage directamente (sin el
middleware persist), lo que le da mayor control sobre el formato de almacenamiento.