Saltar al contenido
Volver a proyectos

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.

App React Native
Backend Node (proxy)
PHP legacy
MySQL
Traccar · GPSFirebase · pushSocket · viajes

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.