January 11, 2017
In software development, choices come in plenty, and we face them on a very regular basis. Which platform should you focus on, which approach should you pick to get from A to B, which languages, libraries or frameworks will work best for you? These are just a few of a great many of multiple choice questions that every project so lavishly presents us with. And before you come to realize the true girth of the problem at hand, there will be countless opinions and voices getting you utterly and totally confused. In this article, we will take an in-depth look at an emerging alternative to native mobile development.
A situation like this would naturally make you think of a cross-platform solution; a solution capable of bridging the gap between your experience as a JS developer or a single-platform mobile specialist and the need for a native-looking mobile app written once to work on a wide range of devices. There are various cross-platform products out there, and the choice of the one that’s right for you depends on a number of factors, including, but not limited to, the following:
• Unique requirements that may influence the choice of the platform to be used;
• The developer’s experience with a particular language and skill set;
• Future plans for the app (need to maintain, customize and update the code).
Going cross-platform offers a number of advantages for the developer and yet poses many challenges. As a mobile developer with little experience in Web development, you may find the learning curve of popular cross-platform tools to be quite steep. As a front-end developer, you will also spend considerable time absorbing the new development philosophy, but in the end, you will see the results are well worth the efforts.
Let’s now focus on the key topic of this article — one of the best solutions of this type available on the market today and called React Native.
Apparently, React Native is not just about JS, CSS and HTML – these are just the basic ingredients. First of all, knowing React is a must — React Native is essentially an extension of React for mobile development. It typically takes up to a month or so to understand React Native’s development concepts and flows, but once you are done with the initial training, you’ll be able to write highly reusable, clean and fast code at speeds you’ve never dreamt of. Professional development in React Native may also require the knowledge of the Flux framework and packages like Redux/Reflux.
React Native vs. Native Development
We are going to compare development in React Native and native app development by a number of criteria:
Ease of learning
Native development: The learning curve varies and may not be the same for both platforms. If you want to be a jack-of-all-trades of mobile development and write for iOS and Android single-handedly, this might be an immense challenge that may take years to complete. Therefore, if you need to develop native apps for a project of yours, you may need two people to get the job done.
React Native: This technology is perfect for fast prototyping and creating applications that are not performance-critical. The thing is, due to its JS nature, React Native only has one execution thread at its disposal, so when it comes to calculation-intensive components, this fact instantly becomes a bottleneck, if not a blocker. The solution is to use native components mixed with React Native’s ones (which is totally possible), to take advantage of multi-threading and faster execution of the native code.
Native development: By definition, native development is suitable for all kinds of applications without restrictions.
React Native: Fully reusable code base that works on iOS and Android without limitations. No need to modify two app version and create new builds – everything is done on-the-go.
Native development: Native code for corresponding versions of your apps.
Speed of development
React Native: Since you are working with cross-platform code, the development time is dramatically reduced; you can create two versions of your app in half the time that would be required for developing two native versions.
Native development: To match React Native in terms of timelines, you will need two experienced native developers (iOS and Android) or compromise on time and do it yourself, given that you are familiar with both platforms.
React Native: The library is full open source and free, so all you’ll be spending money on are electricity and coffee.
Native development: Some licenses or add-ons for native IDEs may not be free, so the cost will be higher.
Eugene Rudenko is a senior online marketing manager for Oxagile, a custom software development company. Headquartered in New York, Oxagile has local representatives in London, U.K., and a development centre in Minsk, Belarus. Among company clients are such industry leaders as Google, Vodafone, Disney, and others.