From Swift tattoo to React Native migration lead: a business-first approach to mobile development

UsersReact Native12 minutes read

 Leo Picado

Leo Picado

Guest Author

From Swift devotee to React Native migration lead. Learn how Zenjob replatformed with Expo to boost velocity, unify teams, and future proof mobile development.

From Swift to React Native

This is a guest post from Leo Picado - a Staff Engineer based in Berlin with a background spanning design, full-stack development, and teaching. He’s passionate about building with JavaScript and creating tools that improve developer experience.

...

I have an “Apus apus” bird (otherwise known as a "Common Swift") tattooed on my right thigh. Yes, the same bird Apple used for their logo and the name of their language.

That's how meaningful iOS development is to my work and my identity. Swift is a key that has opened many doors for me in life. You can say I have an emotional attachment to the language. And yet, you're about to read the story of how I led, and fully supported, a migration to React Native.

Take one second to read that again.

The truth is that I love iOS development. But choosing a technology stack that is aligned with business needs is less about preference and more about, well, what actually makes sense for the business.

At Zenjob we decided that maintaining separate native codebases, that were seven and eight years old respectively, was holding us back (it might be holding your team back as well). This is a post about how we thought through the replatforming decision and the business outcomes we have experienced since the migration to React Native.

The limits of relying on native experts

At Zenjob, we faced challenges that many growing companies encounter with native mobile development. Despite having talented iOS and Android developers, we found ourselves increasingly constrained by the siloed nature of the stacks.

Picking up Swift and Kotlin along with the very different architectures and on top of that the UI nuances, when your day-to-day stack is either Node.js or Java is not trivial. We felt this pain acutey whenever we had a deadline creeping up.

This is why our Feature teams had mobile developers embedded in them, usually one iOS and one Android engineer. As you can imagine our bus factor was quite low. On top of that, our native developers were out-ratioed, sometimes 1:5 or 1:6, which meant we had more features ready, from the back-end point of view, than the ones we could put in front of our users.

The dual-platform approach also meant we were essentially building everything twice. Code duplication wasn't just inefficient; it led to inconsistent user experiences across platforms and wasted valuable engineering time. Even simple features required a lot of coordination, which slowed down our ability to ship. It also led to hard-to-reason scenarios, like coming back to a feature a year later when implementations drifted, which was the right implementation?: the iOS or the Android one?

Release cycles were another pain point. Even with highly optimized setups it’s almost impossible to deliver your new binary, that could include either an exciting new feature you have been working on for weeks, or a critical bug fix (bypassing a manual review process was not an option). On top of that, add phased rolled outs into the mix and you are looking at a very long lead time for any changes. Stakeholders weren’t happy about it, engineers were not happy about it, I wasn’t happy about it, it was just something that we attributed to the nature of the beast. We tried to overcome this by embedding Web Views into our apps, for simple use cases, and consuming them from both apps, but not only did this hurt the overall user experience, it added yet another codebase into the mix.

What replatforming really means

Replatforming isn't just about switching technologies, it's about transforming how your organization builds products. For us, moving to React Native with Expo meant enabling our entire product organization to contribute to mobile development using familiar technologies.

The migration allowed us to unify our development approach. Instead of maintaining separate codebases with different languages and frameworks, we created a shared foundation that reduced cognitive load for our engineers and increased velocity across teams.

This shift fundamentally changed the role of our Mobile Platform team. Rather than being responsible for shipping features directly, they evolved into enablers for other teams. Now they focus on infrastructure, design systems, vision, tooling, enabling, and experimentation. This transformation allows product teams throughout the organization to own features end-to-end, including their mobile implementations.

The migration to one codebase eliminates the duplication of effort that had previously slowed us down. Features can be built once and deployed across platforms, ensuring consistency while dramatically reducing development time. This approach also made it easier to maintain true feature parity between iOS and Android.

Why Expo makes React Native viable for enterprise teams

While React Native provides the cross-platform foundation we needed, Expo is the key that makes this approach viable for a business-critical application. Expo isn't just a framework, it's an integrated platform built for scale that addresses many of the challenges teams face when adopting React Native.

The development experience with Expo CLI and dev tools dramatically improved our iteration speed. Engineers can see changes instantly across platforms, making the development process more efficient and enjoyable. This fast feedback loop was crucial for maintaining momentum during our migration. While iOS has come a long way with SwiftUI previews, they are always static representations of a single view within your app. Having hot reload with Expo, from day one, on both platforms, is a game changer.

On the operations side, Expo Application Services (EAS) provided production-grade CI/CD with EAS Workflows, eliminating much of the complexity in our build and deployment processes. Store submission and signing (traditionally painful aspects of mobile development) becomes streamlined through EAS Submit. Not only that, but for iOS Expo is built on top of familiar tools, like fastlane, so if something goes wrong, you can dig in and see what is happening under the hood.

Perhaps most transformative is gaining the ability to ship updates without going through app store reviews. With EAS Update, we can deliver fixes and improvements directly to users, dramatically reducing our time-to-market for many changes. This capability alone changed how we approach feature development and bug fixes.

Expo also addresses performance concerns through optimizations like precompiled React Native, ensuring our app remains responsive and reliable. When we needed to extend functionality with native code, Expo Modules provide a clean interface without the complexity of traditional React Native native modules. If we need a very specific change that hasn't been covered before, then we write an Expo Config Plugin to take care of it.

With Expo, we got a lot more than the one-codebase beauty of React Native: we got a team-optimized platform that eliminates the hardest parts of Mobile DevOps, allowing us to focus on delivering value rather than wrestling with infrastructure.

How to evaluate a migration to Expo

When considering a replatforming effort, leadership naturally has concerns about timeline, ROI, risk, and potential capability loss. Our approach to evaluating the move focused on addressing these concerns systematically.

We started with a proof of concept that specifically targeted our riskiest integrations. This allowed us to validate that React Native could handle our most complex requirements before committing to a full migration.

We involved product and design teams from day one, ensuring the migration wasn't just an engineering initiative but a company-wide transformation. Their early involvement helped identify potential UX challenges and opportunities, leading to a better overall experience in the new platform.

Early in the process we decided to go for a greenfield approach instead of integrating React Native into our existing applications. We went this route because it allowed us to move faster without the concern of having to deal with interoperability issues. It also allowed us to prioritize the features that were truly important for our users (we ended up dropping some features from the app that just didn't deserve to make the migration).

The business outcomes of building with Expo

The results of our replatforming effort exceeded our expectations across multiple dimensions:

  • Feature lead times dropped dramatically, with development cycles shrinking from weeks to days and sometimes even to hours. The shared codebase allowed for faster implementation and reduced the coordination overhead that had previously slowed us down.
  • Our deployment frequency increased by an order of magnitude thanks to over-the-air updates. Instead of waiting for app store reviews, we could ship improvements directly to users, enabling a much more responsive development process. Once a change lands in our main branch, it’s available to our users within seven minutes.
  • Perhaps most significantly, mobile development transformed from a bottleneck to a company-wide capability. Product teams could now own features end-to-end, including their mobile implementations, without depending on specialized mobile engineers for every change.
  • The shared design system improved consistency across platforms while reducing design debt. Components built once worked everywhere, eliminating the drift that had occurred between our iOS and Android implementations.
  • From a talent perspective, hiring became easier as we could tap into the larger pool of React and TypeScript engineers. New team members could contribute across our entire stack rather than being limited to a single platform.
  • Engineering satisfaction improved dramatically. Since the migration we haven’t had a single complaint about mobile development. Engineers who had traditionally avoided digging into mobile features were now eager to try to build things.

You're not just modernizing your app, you're future-proofing your team

React Native with Expo offers the fastest, cleanest path to mobile autonomy for organizations struggling with the limitations of isolated native development. Our experience at Zenjob demonstrates that the benefits extend far beyond technical considerations—they fundamentally transform how teams work together to deliver value.

Companies that make this transition are seeing compounding gains in productivity, collaboration, and quality. The unified approach breaks down silos between platforms, creating a more cohesive and efficient engineering organization.

If you're feeling the pain of siloed native teams and slow mobile releases, it might be time to make the leap. The journey requires commitment and careful planning, but the business outcomes (faster delivery, improved quality, and greater engineering satisfaction) make it well worth the investment.

Even for someone with a Swift tattoo, the business benefits of React Native with Expo are impossible to ignore. Sometimes the best technology choice isn't about personal ink preference—it's about enabling your team to deliver exceptional experiences to your customers, faster and more consistently than ever before.

Swift
iOS development
React Native migration
benefits of Expo
EAS Workflows
mobile CICD
replatforming mobile apps

Create amazing apps, in record time with EAS

Learn more