React Native - Yes or NO???
Like many developers, I was confused on whether 'React Native' is the right development choice for my app?
There is no Silver Bullet for this particular answer.
Yes, React Native has a lot of advantages like
- Single Code base
- Cost Reduction
- NPM Packages
- Out of the box Unit Test Cases
But at the same time, there is a big challenge on performance. You can achieve good performance results in React Native if you carefully implement the thread / data management.
Based on the various articles I read & my personal experience, my suggestion is go with evaluate whether React Native is the right choice based on parameters
- Security - Does your app need High level of security? For example, I would not recommend React Native for Banking apps as JavaScript is prone to hacking easily compared to the robust security available in native technologies.
- Animations - If your app makes heavy usage of Animations, then React Native is not the right choice as the user experience may not be optimum.
- Native Features - If your app makes usage of a lot of native features, anyways we have to write separate code for both platforms. It is as good as writing code in native technologies.
I don't give much weightage to app upgrade on the new OS releases. Even though 'React Native' may take time to adopt, most of the apps in the world today are not that new OS sensitive.
Many of us worry about the future of React Native as Facebook has history of dropping popular frameworks / product like Parse. My take on this is, any app needs to be rewritten / language upgrade every 3 years as there would be new enhancements and new patterns, solutions available. Saying that, even if FB decides to kill React Native organizations will have sufficient time to port their code.
Last but not least, many of us are attracted to the 'Over the Air (OTA)' update of the app remotely. Yes its very attractive, but Apple has started rejecting apps with this feature
Dear Developer,
Your app, extension, and/or linked framework appears to contain code designed explicitly with the capability to change your app’s behavior or functionality after App Review approval, which is not in compliance with section 3.3.2 of the Apple Developer Program License Agreement and App Store Review Guideline 2.5.2. This code, combined with a remote resource, can facilitate significant changes to your app’s behavior compared to when it was initially reviewed for the App Store. While you may not be using this functionality currently, it has the potential to load private frameworks, private methods, and enable future feature changes.
This includes any code which passes arbitrary parameters to dynamic methods such as dlopen(), dlsym(), respondsToSelector:, performSelector:, method_exchangeImplementations(), and running remote scripts in order to change app behavior or call SPI, based on the contents of the downloaded script. Even if the remote resource is not intentionally malicious, it could easily be hijacked via a Man In The Middle (MiTM) attack, which can pose a serious security vulnerability to users of your app.
Please perform an in-depth review of your app and remove any code, frameworks, or SDKs that fall in line with the functionality described above before submitting the next update for your app for review.
Development Consultant -Mobile Applications at SAP India
6 年I have a point here regarding raised security concern: -React Native supports SSL pinning as well as encryption & decryption on both iOS and android. -When using React Native, you're going to be running your JavaScript code in two environments: 1.In most cases, React Native will use JavaScriptCore, the JavaScript engine that powers Safari. Note that on iOS, JavaScriptCore does not use JIT due to the absence of writable executable memory in iOS apps. 2.When using Chrome debugging, all JavaScript code runs within Chrome itself, communicating with native code via WebSockets. Chrome uses V8 as its JavaScript engine.
Experienced Mobile solutions architect | Specialist in Banking & Retail | Delivering Innovation for 14+ years
6 年A good read:? https://medium.com/@prashantramnyc/microservices-architecture-for-mobile-application-development-part-i-20b4f4089a24