A payments app stuck on Cordova with a 2-star rating reviews dominated by lag and crashes. I proposed and shipped the React Native migration alongside per-screen UX improvements.
Diagnosis
Payments app with rating 2. Reviews dominated by lag and crashes. Cordova core wrapped WebView dragging the entire experience down. Sensitive payment flows running on a stack that wasn't built for it.
Hypothesis
React Native gives us native rendering performance + a single codebase. Pair the platform jump with a per-screen UX redesign and automated testing pipeline so the rewrite isn't just 'same app, different framework'.
Migration
Full rewrite in modern React Native. Biometrics for sensitive operations (FaceID + Android Biometrics) uniform across iOS and Android, no flow branching. Backend architecture scaled for high traffic with minimal downtime.
Stabilization
Automated testing workflows wired into the deploy pipeline catching regressions before users did. Frontend components streamlined per screen fewer taps, clearer flows, stable performance.
Outcome
Store rating moved from 2 to 4 during the contribution period. Reviews changed in tone from 'crashes constantly' to 'finally works'. Retention curves followed.
- Why React Native and not a native rewrite?React NativeTwo native codebases would have doubled the time and team. RN gave us native rendering for the bottleneck (UI/scroll), TypeScript reuse with the web team, and a single PR per fix exactly the leverage a small team needed.
- Why both FaceID and Android Biometrics from day one?Cross-platform biometricsPayment app: sensitive operations need passive 2FA. Both stacks landed in the same milestone so the auth flow stayed uniform no 'iOS users get biometrics, Android gets PIN' second-class experience.
- Why automated tests as a release gate?Tests block deploysComing out of Cordova hell, every regression cost trust we couldn't afford to lose. The test gate kept the rating recovery sustainable release after release without sliding back.
Rating 2 → 4. Retention went up, reviews changed in tone.