David Cordero

A Pragmatic Guide to Migrating from Native to React Native (or choosing not to)

Published on 21 May 2025

Has this ever happened to you? You start considering a possible migration of your native applications to React Native, and suddenly you are bombarded with hype-filled content promising a development utopia. However, if you share this exciting news with others, it’s very likely that you will receive a lot of hateful feedback in return.

If this is your case, and you’re wondering whether migrating to React Native would be actually the right decision for your Apps, you’re in the right place.

After two years leading one of the teams working on the migration of native Apps to React Native, I am sharing some personal learnings and the insights I wish I would have had when I began this journey.

Please note that this post is not about telling you whether you should migrate to React Native or not. That’s your decision to make. Instead, I will focus on different areas that I think you should consider before making this decision, as well as during the migration process.

Avoid Overselling or Hateful Content

Let’s start by facing reality: React Native is not the solution to all problems. If it were, every company in the world (including Meta, which actually created it) would be using it exclusively. However, even they are still maintaining native codebases. However… this doesn’t mean either that all those companies that decided to use React Native are wrong.

Because of this I recommend you to maintain a critical mindset when evaluating React Native. I suggest avoiding both the extreme hype and the subjective hateful content that dominates many publications and discussions. Because reality actually exists somewhere in the middle.

Be aware that many companies and content creators base their businesses either on React Native or on native technologies, and therefore you will find a lot of overselling or hateful content about this topic. This can easily create a sense of FOMO if you’re not adopting React Native right away, or make you feel foolish if you are actually doing it.

I recommend you remain calm, critical, and balanced to make an unbiased decision.

Financial Perspective

Be cautious when software engineers speak to you about the amazing financial benefits of React Native or any other multiplatform solution. Not because they might be wrong, but because they will likely miss less technical factors that could have a significant impact on your company.

Please also keep in mind that the idea of “a single codebase is cheaper and faster” is not necessarily true - much like a single Caterpillar dump truck isn’t necessarily cheaper and faster than four regular cars.

When analyzing the financial impact of this decision, you should consider factors beyond initial development costs, for example:

In any case, apart from being a technical decision, the migration of your apps to react native is a big financial investment. Because of that, you should probably involve your finance team in the evaluation.

It might be a good idea to define a clear budget, setting specific milestones, and planning a return on investment to keep this topic under control to avoid compromising the viability of your business in case of significant delays or unforeseen issues getting out of hand.

Big Bang vs Incremental Migration

Be careful because it’s very easy to underestimate the time required to migrate all the existing business logic of your app. If it took years of development for your current application to reach its actual state, I recommend you being skeptical when someone tells you that the migration will take only a few months

The devil is in the details, and there are likely thousands of edge cases buried in your app’s business logic that you’ll need to handle in the new development, potentially delaying your initial plans significantly.

Unless your app is particularly simple, I recommend you avoid a big bang approach.

A big bang approach, where you rewrite everything from scratch, presents several risks:

Instead, following an incremental migration, that means migrating each section of your app in phases, would allow you to:

Experiments and Proof of Concepts

If the first React Native project created by your engineers is your production app, you’re taking an unnecessary risk.

I recommend you starting smaller to facilitate your team getting familiar with the technology before getting started with your production App:

These experiments provide several valuable benefits:

Be transparent and don’t Leave People Behind

A technical migration is also a people migration, so you should consider offering clear growth and education paths to your engineers. Be aware that some will choose to leave regardless, but I certainly believe a transparent approach will minimize unnecessary turnovers.

I recommend you to be honest and treat people with respect. If you are working with adults, you can be sure that everybody in your team will understand changes in the strategy of the company and the reasoning behind them, so be honest and present things clearly to them.

For the ones who decide to stay, you should consider creating a comprehensive training program that addresses key areas of development for your Application:

It could also be a good idea to hire new engineers or contractors with expertise on the new technology, to guide your team during this process.

Required reorganization

If you are developing native applications, it is very likely that all your teams are organized this way, with teams focused on each different platform: Apple team, Android team, Web team, etc…

Therefore, facing a migration from native to a multiplatform solution will unavoidably come with a required reorganization.

How will you be distributing your teams? There are many approaches to take, which I will not cover here because this would be out of the scope of this post. But please note that, regardless of the approach you follow, this will be something you will also need to face, and it is an important point because reorgs tend to take longer than anticipated and more challenging along the way.

It means creating teams, building cohesion and trust within them, etc…, and that’s something that doesn’t happen overnight.

Watch Out for Technological Bias

Be mindful of biases from engineers who lack an open mindset toward adapting to new programming languages and technologies.

If all you have is a hammer, every problem looks like a nail.

Learning new tools and programming languages is part of the work of an engineer, so the technology chosen to solve a problem should be the one best suited for the task, and it should not be determined by your team members unwillingness to learn new tools, frameworks, or programming languages.

I suggest you think twice before pushing a specific technology just because your engineers already have expertise in it.

Don’t Limit Yourself to React Native

If your primary goal is implementing a multiplatform solution, it’s important to remember that React Native is just one option among many. Falling into the trap of considering only React Native because it’s the most talked-about solution could lead you to miss better alternatives for your specific use case.

Some of these other options even offer different approaches that could be interesting to your product. An example of this could be Kotlin Multiplatform, which would allow you to balance between multiplatform code for the business logic, and native code for the UI.

Conclusions

Since this decision could really affect your product, your team, and your whole company, I’d recommend taking the time to do it right and avoid making a choice you’ll regret later.

Even if you’ve already made up your mind and are ready to go for it, it’s worth keeping the different points from this post in mind to help things go smoothly and to reduce risks in the process.

At the end of the day, whether or not to migrate your native apps to React Native is your call to make — it’s a strategic decision that depends on your specific situation and goals.