From Swift tattoo to React Native migration lead: a business-first approach to mobile development
Key Points
- Unified codebase cut feature lead time from weeks to days
- Expo (EAS) enabled CI/CD and OTA updates for fast shipping
- Product teams now own end-to-end mobile delivery
Summary
Zenjob moved from siloed native iOS/Android codebases to a single React Native codebase powered by Expo to align mobile delivery with business needs. The migration shifted the Mobile Platform team from feature delivery to enabling infrastructure, tooling, and design systems, which unlocked faster iteration, higher deployment frequency, and broader engineering ownership.
Key Points
- Business problem: separate seven- and eight-year-old native codebases caused duplicated work, low bus factor, slow releases, and inconsistent UX.
- Technical solution: adopt React Native with Expo to unify code, enable hot reload, and simplify native extensibility via Expo Modules and config plugins.
- Operational tooling: use Expo Application Services (EAS) for CI/CD, automated builds, store submission, and EAS Update for over-the-air releases.
- Migration approach: start with a proof of concept targeting the riskiest integrations, involve product and design early, and prefer a greenfield rewrite to avoid interoperability complexity.
- Organizational change: reframe the Mobile Platform team as enablers (infrastructure, design system, tooling) so product teams can own mobile features end-to-end.
- Outcomes: feature lead times fell from weeks to days/hours, deployments became near-instant with OTA updates, hiring and engineer satisfaction improved, and design parity across platforms was restored.
Practical recommendations
- Run a focused PoC on your riskiest native integrations before committing to a full migration.
- Involve product and design from day one to surface UX trade-offs and decide which legacy features to drop.
- Favor a greenfield app when feasible to move faster and avoid complex interoperability.
- Adopt Expo (EAS) for build, submit, and OTA updates; use Expo Modules or config plugins for native gaps.
- Reorient platform engineers toward tooling and DX so feature teams can ship mobile changes independently.
- Measure impact with lead time, deployment frequency, and cross-platform parity metrics.