How to Choose Between Native and React Native
How I expect most people to react to this article

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.

Joshua Asbury

Senior Tech Lead | Specialist iOS Engineer

1 年

TL;DR always go native (totally not biased ??)

要查看或添加评论,请登录

Tim Mutton的更多文章

  • Building an Effective Continuous Integration and Delivery Process

    Building an Effective Continuous Integration and Delivery Process

    Frequent delivery of new features reduces financial risk by providing quick feedback that enables adapting your…

    2 条评论
  • Trunk Based Development vs Gitflow

    Trunk Based Development vs Gitflow

    The use of version control has become ubiquitous in modern software development, with Git overwhelming being the tool…

  • Optimising Software Testing with the Testing Pyramid

    Optimising Software Testing with the Testing Pyramid

    Automated tests are an essential part of continuous integration and deployment as they allow developers to quickly and…

  • Defining User Focused Requirements

    Defining User Focused Requirements

    Requirements should provide all information necessary to develop a feature as the envisioned by the author to ensure…

  • Complexity vs Effort Based Estimation

    Complexity vs Effort Based Estimation

    Agile projects often make the mistake of correlating task estimates to how long they will take to complete, even when…

    3 条评论

社区洞察

其他会员也浏览了