Lessons from a React Native to Swift migration
High-level takeaways from contributing to a large-scale native rewrite: architecture, GraphQL, and team coordination without confidential details.
Large app rewrites rarely fail because of syntax. They fail because teams underestimate coordination: shared contracts, release timing, analytics parity, and the sheer surface area of features that already work in production.
On Ford Credit mobile, I joined during a shift from React Native toward native Swift and Kotlin. I was a core contributor on iOS, not the person single-handedly driving every decision. That distinction matters. The wins came from aligning with backend, QA, design, and Android peers while we removed a Backend-for-Frontend layer and standardized on Apollo GraphQL.
GraphQL forced healthy conversations early. Which fields belong on which screen? How do we handle auth and errors consistently? Native clients became clearer once queries and mutations were owned jointly instead of hidden behind bespoke REST wrappers per feature.
MVVM stayed our day-to-day structure on iOS. Views stayed thin, view models owned presentation logic, and services wrapped networking and analytics. The pattern was not new, but enforcing it during a migration kept partial releases shippable while legacy React Native paths still existed.
Analytics was its own workstream. Instrumentation that product trusts does not happen by accident. We invested in a custom Adobe SDK wrapper, validation across teams, and clear ownership so events did not drift between platforms. Getting that right was as important as any UI polish.
What I would tell a team starting a similar journey: scope vertical slices, not big-bang flips; document decisions where people can find them; and treat migration as a product program with milestones, not a side quest for one platform. Keep proprietary details out of public writeups, but be honest internally about risk.
I am still learning from the migration as features ship. If you are working through something similar and want to compare notes on iOS, GraphQL, or enterprise release cadence, feel free to reach out through the contact page.