Caso de estudio
Migrar una app de taxis en producción a React Native
Cómo llevamos la app de choferes de Entaxi de una web híbrida a una app nativa, sin frenar la operación ni reescribir el backend.
- Rol
- Inicié y lideré el proyecto
- Usuarios
- ~500 choferes (Rapitaxi)
- Stack
- React Native · TypeScript · Node
- Estado
- En producción, expandiéndose a San Juan
El problema
La app de choferes estaba hecha con Framework7 y empaquetada con Capacitor: en el fondo, una página web corriendo dentro del teléfono. Para una app que pasa el día entero abierta, con GPS y mapa, eso tenía un costo alto.
Consumía mucha RAM, se sentía lenta en equipos de gama media y el acceso al hardware (GPS en segundo plano, notificaciones, estado de red) dependía de capas intermedias.
La decisión
Elegimos React Native con TypeScript: acceso directo a las APIs nativas sin abandonar el ecosistema JavaScript que el equipo ya dominaba.
Lo más importante fue no reescribir todo de golpe. El backend PHP legacy seguía atendiendo a la web en producción, así que la app nueva convive con la vieja sobre los mismos datos.
La arquitectura
La app nunca habla directo con el PHP. Un backend Node en TypeScript hace de proxy: normaliza las respuestas, maneja la sesión y nos deja reemplazar piezas del legacy de a una.
Qué construí
- Mapa en tiempo real con MapLibre y seguimiento GPS en segundo plano integrado con Traccar.
- Ciclo completo del viaje: solicitud por socket, seguimiento, cobro y calificación.
- Modo offline con SQLite para el modo taxímetro, pensado para municipios sin central.
- Una sola base de código con builds por marca, una por cliente, publicadas en Google Play.
- Pagos de cuotas con Mercado Pago, comisiones, estadísticas y botón de pánico.
- Monitoreo de errores con Sentry y source maps por versión.
Lo que aprendí
En la calle, la red falla
Una respuesta perdida no significa que la operación falló. Hicimos idempotentes los cambios de estado del viaje para que un reintento nunca deje a un chofer trabado ni le cobre dos veces.
Migrar de a partes
El proxy permitió lanzar la app nativa mientras la web seguía operando, sin un "big bang" que pusiera en riesgo la operación diaria.
Iniciar, traspasar y seguir liderando
Llevé el proyecto a un estado avanzado y lo traspasé al equipo para su mantenimiento, sin dejar de guiar las decisiones técnicas.