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.

Abhishek Kumar

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.

回复
Surbhi Jain

Experienced Mobile solutions architect | Specialist in Banking & Retail | Delivering Innovation for 14+ years

6 年

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

Vamsi Krishna Katragadda的更多文章

  • App Entry Points for a User

    App Entry Points for a User

    In my previous article, I wrote about various 'Authentication / Login' methods, now I am going to write about the…

  • Authentication aka Login Methods in Mobile Apps

    Authentication aka Login Methods in Mobile Apps

    Apps may vary in the features they provide. But one of the must provided feature is 'Authentication/Login'.

    1 条评论
  • Secure Mobile Apps

    Secure Mobile Apps

    A 'Secured' mobile app is not a requirement for a Banking app anymore. Today almost all of the apps deal with Customers…

    17 条评论
  • Deep Linking & Universal Linking - Are they same or different??

    Deep Linking & Universal Linking - Are they same or different??

    Ever since Apple introduced Universal Links in iOS 8, a confusion comes into the developers mind is Deep Linking &…

  • Feature Flags - Good or Bad?

    Feature Flags - Good or Bad?

    While I worked with variety of clients (large, medium & small) I have observed the usage of Feature flags as a way to…

    2 条评论
  • My experience in building a QSR (Quick Service Restaurant) App

    My experience in building a QSR (Quick Service Restaurant) App

    After working on multiple apps, I am going to share my experience in building a Mobile App for QSR (Quick Service…

    1 条评论

社区洞察

其他会员也浏览了