Case study
Migrating a production taxi app to React Native
How we moved Entaxi's driver app from a hybrid web app to a native app, without stopping operations or rewriting the backend.
- Role
- Started and led the project
- Users
- ~500 drivers (Rapitaxi)
- Stack
- React Native · TypeScript · Node
- Status
- In production, expanding to San Juan
The problem
The driver app was built with Framework7 and packaged with Capacitor: essentially a web page running inside the phone. For an app that stays open all day with GPS and a map, that was expensive.
It used a lot of RAM, felt slow on mid-range devices, and hardware access (background GPS, notifications, network state) went through intermediate layers.
The decision
We chose React Native with TypeScript: direct access to native APIs while staying in the JavaScript ecosystem the team already knew.
Crucially, we did not rewrite everything at once. The legacy PHP backend still served the web app in production, so the new app lives alongside the old one on the same data.
The architecture
The app never talks to PHP directly. A TypeScript Node backend acts as a proxy: it normalizes responses, manages the session and lets us replace legacy pieces one at a time.
What I built
- Real-time map with MapLibre and background GPS tracking integrated with Traccar.
- Full trip lifecycle: socket-based requests, tracking, payment and rating.
- Offline mode with SQLite for taximeter mode, designed for towns without a dispatch center.
- A single codebase with per-brand builds, one per client, published on Google Play.
- Fee payments with Mercado Pago, commissions, statistics and a panic button.
- Error monitoring with Sentry and per-release source maps.
What I learned
On the street, the network fails
A lost response doesn't mean the operation failed. We made trip state changes idempotent so a retry never leaves a driver stuck or charges them twice.
Migrate in pieces
The proxy let us ship the native app while the web app kept running, with no "big bang" release risking daily operations.
Start, hand over, keep leading
I took the project to an advanced stage and handed it to the team for maintenance, while still guiding technical decisions.