React Native vs Just Native

Alexandru Rosianu
AR.Blog();
Published in
3 min readSep 14, 2019

I initially wrote this comparison for a friend when he asked me for an opinion on React Native vs. real native apps. I figured I might as well publish it, so here it is!

https://hackernoon.com/react-native-vs-real-native-apps-which-is-better-a8383d6f7ca5

Context: There’s Android and iOS. Both platforms are mature and have established tools, IDEs, languages, practices, and dev communities.

The reasons React Native has gained popularity are:

  1. Developers who already know JavaScript or React can create mobile apps easily. Easily = without having to learn a lot of Java, Android Studio, Android’s standard API, Xcode, Swift, iOS’s standard API, etc (however a small amount of knowledge is still required and a programmer who knows all 3 will always perform better).
  2. JavaScript and React are easier to learn than Android and iOS. Thus, RN is more attractive to beginners who want to create cross-platform apps. Even developing for just 1 platform might seem easier with RN.

Both (1) and (2) save time, which in turn saves money. However, “no free lunch” — there are drawbacks.

At a high level, choosing between the two is a matter of choosing between “lower quality but faster” (React Native) and “slower but better” (Just Native™). The 2 choices are not equal though. In some cases the drawbacks of React Native might be worth it, in some cases it might not.

React Native — The good parts

  • Quicker time to get from start to finish
  • It is mostly “write once”, run on both Android and iOS
  • JavaScript and React are easier to learn than Java, Android, Swift, iOS
  • During development, iterations are quicker because changes to the code can be previewed instantly (for Android/iOS you have to recompile and reinstall the app)

React Native — The bad parts

  • A minimal amount of Android or iOS knowledge is still required
  • Less mature ecosystem: there are fewer libraries available, the libraries might not be mature enough (not tested enough and buggy or inefficient), RN itself might have bugs and need frequent updates
  • Worse UI/UX: some components will look different, animations feel different (compared to the other native apps on the phone)
  • Harder to maintain the native UI look

Just Native — The good parts

  • Native UI with consistent components, animations, UX
  • Many established libraries, tools, books, resources to aid development
  • Support from the platform manufacturer itself (Google or Apple), not someone who doesn’t have stakes in a mobile OS (Facebook) and not from the open source community

Just Native—The bad parts

  • Development takes the combined effort of both Android and iOS (in time and money)
  • Developers must know both Android and iOS for cross-platform apps
  • Developers must have deeper knowledge into the OS, its framework, how it works

From my experience:

  • It really is quicker if you use RN, but definitely not 2x as quick. You’ll save time on some things, but spend more time on others.
  • RN is not independent from Android and iOS. To build a RN app, you still need to set up Android Studio / Xcode to build a native app. A RN app is still a native app, it’s just that that app runs React Native and your JavaScript instead of your Java/Swift.
  • The 2 choices are not exclusive: Instagram for example has mostly native apps and uses RN in a few places such as the ad previews for advertising campaigns.
  • There are not many libraries for React Native, and out of those that exist, many of them are not mature. For any serious project, there will eventually be a need to get dirty and write some Java / Swift as well.
  • RN apps usually look and feel differently, albeit barely noticeably. It’s extremely hard to reproduce in JavaScript the look and feel (aesthetics and animations) of the native UI of Android / iOS.

--

--