How to Choose Between Native and React Native
When building or rebuilding a mobile application, one of the first major decisions will be whether to build it using native technology or a cross-platform framework. In this article, we will explore key considerations that can help you determine the best option for your specific needs.
Access to Native Functionality
Native code support, provided by Apple and Google, grants direct access to all platform features, including timely access to new functionality. In contrast, React Native is a third party solution made primarily by Meta that runs on top of the native platform, and so access to native functionality may require utilising third-party libraries or creating custom wrappers for native functionality, and you may need to wait for vendor support or third-party libraries to access new native features. For instance, React Native lacks first-party support for accessing the camera or the user's location, and some third-party libraries may not provide full support, such as Adyen for payment processing.
Engineering Capabilities
Utilising React Native can make it easier to build up application development capabilities if your web development team is already using React for building the website, as they would only need to learn the new mobile-oriented features. However it is worth noting that even when using React Native engineers who can work with native code are still necessary, which will require cross-skilling React Native engineers or hiring dedicated engineers for each platform.
Performance
While cross-platform performance is generally satisfactory for most applications, it may not meet the demands of highly resource-intensive applications like games. React Native works by embedding a runtime environment within the application which translates the cross-platform code to native code at runtime, the implication of this is that it will never run as fast as a native solution. It will also increase the download size by 3 - 5 megabytes, which may be a concern if you're targeting users in regions with poor internet.
领英推荐
User Experience
Each platform sets different standards and expectations for styling and usage patterns, with Android apps typically adhering to the Material Design Guidelines and iOS apps typically adhering to the Human Interface Guidelines. When building one codebase to target multiple platforms, typically one platform is used as the frame of reference and the other platform(s) end up getting an application that doesn't look and feel native.
Project Lifespan
The industry has a history of moving on from frameworks every 5 or so years, when I first entered the industry it had recently moved from PhoneGap to Xamarin as the cross-platform solution of choice, which then made way to React Native which has had a lot of staying power, but Flutter is gaining in popularity. As a framework falls out of favour engineers move on, and it becomes increasing difficult and expensive to find engineers experienced in the framework.
So Which is Right For You
There is no definitive answer to the question of whether to choose native technology or a cross-platform framework. However, if your application does not heavily rely on native functionality, isn't pushing the limits of performance and you are open to potential rebuilding in the future, React Native can be a cost-effective and efficient choice, especially if you already building web applications with React. On the other hand, if your application depends extensively on native functionality, requires optimal performance, or demands a fully native look and feel, native code will provide the capabilities you need.
Senior Tech Lead | Specialist iOS Engineer
1 年TL;DR always go native (totally not biased ??)