Artículo
Gestion de Estado Complejo en Apps Moviles: SwiftUI vs Jetpack Compose
Comparativa real de gestion de estado en SwiftUI y Jetpack Compose tras portar una app de 104K LOC entre plataformas.
Gestion de Estado Complejo en Apps Moviles: SwiftUI vs Jetpack Compose
Despues de portar una app iOS de 104K LOC a Android y mantener otra en ambas plataformas, una conclusion clara: la gestion de estado es donde se hace o se rompe una app compleja.
El problema
ViewModels monoliticos con 50+ @Published properties. Un cambio en filtros recompone toda la UI. Testing imposible.
La solucion: estado granular por responsabilidad, no por pantalla
En SwiftUI: dividir en stores especializados (AuthStore, AppointmentsStore) con @StateObject. UI state local con @State, datos compartidos con @EnvironmentObject.
En Compose: StateFlow + Hilt + sealed classes para UiState. Operadores reactivos (combine, map) para transformaciones granulares sin recomposiciones innecesarias.
Despues de 18 meses en produccion con ambas versiones
- Compose gana en granularidad de actualizaciones (operadores reactivos nativos)
- Compose gana en testing (StateFlow es mas deterministico que Combine)
- Compose gana en memory management (lifecycle automatico vs retain cycles manuales)
- Compose 15-20% mas fluido en listas de 2000+ items
Pero la diferencia no es abismal. Lo que realmente importa:
- Arquitectura > Framework
- Testing first: disena estado pensando en como testearlo
- Granularidad: divide por responsabilidad
- Mide performance, no asumas
Para proyectos nuevos en 2026 me inclino por Jetpack Compose, pero SwiftUI con buen patron es igual de efectivo.
Los usuarios no ven tu arquitectura. Ven si la app responde rapido o se bloquea.
#MobileDev #SwiftUI #JetpackCompose #iOS #Android #Architecture