A great developer experience or a great user experience? A familiar web technology for you to code in or native-like performance for your users? And these are just some of the questions “taunting” you right now, while dealing with a PhoneGap vs React Native dilemma, right?
Each platform comes with its own “temptations” to... lure you in:
React Native promises you to inject native-like performance into your app and thus... to perfect the user experience
So, which one to go with?
PhoneGap: A Brief Overview
A compromise! This is, in my opinion, the perfect word/metaphor to describe PhoneGap.
a JS/CSS/HTML app having a browser-based UI (giving you the freedom to work in any of your preferred web technologies)
that exposes native mobile device APIs and data; accessing phone components through the API navigator
While a more “formal” definition would go something like this:
PhoneGap is a distribution of Apache Cordova — coming with a few tweaks and custom packages — that you can use for embedding websites in mobile apps via WebView.
In short: more than a website, yet not a fully native mobile app. A hybrid app compromise!
A Few Words About React Native
In a PhoneGap vs React Native debate, the latter would always have its native components rendering “trump card” up its sleeve:
For a React Native-powered app is written in JS, like a PhoneGap one, yet it doesn't just render a webview, but REAL native components instead!
And that, my friend, would also win over users: it's better user experience and zero compromises on performance that you get “rewarded” with for using React Native.
You could also take this mobile app development platform as the answer to users' becoming more and more demanding:
If hybrid, HTML 5 and/or mobile web apps used to be enough to “satisfy” their needs, while being a “blessing” for developers' budgets, as well, mobile users started to crave native-like performance. And so, React Native emerged!
It's a convenient “bridge” between JS and native platforms:
they “play by the rules” and meet the standards of the operating system
... while accessing a big part of the native platforms via this metaphoric “bridge” that React Native creates
PhoneGap: Tempting Benefits vs Discouraging Disadvantages
Now in order to get an accurate score to our “PhoneGap vs React Native” debate here, we'd better go “pros and cons harvesting”, right?
So, without any further ado, I'll list some of PhoneGap's “irresistible” advantages first:
it “spoils” the developer with a wide range of frameworks/libraries to choose from; if you're a big fan of web technologies, if you enjoy building UIs in HTML and CSS, you'll love the rich collection of choices that PhoneGaps puts at your disposal
therefore, PhoneGap is easy to work with and developer-friendly
it's not bound to any specific framework
PhoneGap-based apps perform within wrappers targeted to each platform and use API bindings that comply with the all the given standards for accessing each mobile device's data, network status, sensors
it's based on the “write once run on every platform” philosophy: you get to “reap” the benefits of cross-platform development; just “work your magic” in any of the web technologies that you're comfortable with and have your app running on all available platforms
… with no need to get yourself tangled up in each platform's native development language
your app will have a similar UI on all native platforms
And now, the limitations that you need to consider when building mobile apps using PhoneGap:
by far the biggest inconvenience is the sluggish performance (leading to poor user experience, needless to add); and it's a more than predictable drawback considering that the web was created for web pages, not for heavy, animations-loaded, complex apps
you risk to get all the issues of the web, as well, right out-of-the-box, along with your PhoneGap hybrid app. Bugs specific to certain browsers or styles that work differently depending on the browser here included!
In short: on one hand, you get to enjoy a great developer experience, on the other hand, you risk to compromise the user's experience!
React Native: Top Pros and Cons
In a PhoneGap vs React Native “competition” the former would always fall behind when it comes to performance: React Native is undoubtedly faster.
And here are some other benefits to "reap" for using React Native to build your mobile app:
it renders real native components instead of a webview
also, since it renders NATIVE views without using webview as an intermediary, expect to face no browser compatibility challenges
there's strong social proof, highly relevant evidence for its reliability: Instagram, Airbnb, Uber
it's committed to the “learn once, write everywhere” philosophy; once you're familiar with React, you'll be writing native apps in no time, with no need to delve into Java or Objective-C coding, unless you want to extend your app's functionality
moreover, React's backed by a huge community, so during your learning time and then during your app development process, you can rely on plenty of “expert” support
the user experience is significantly improved: a React Native app will always have a native look and feel to it compared to a mobile web app
also, since it renders native views, expect smoother, high performant animations, as well
Yet, React Native does come with some drawbacks, as well, that might discourage some (even you!):
you need to be familiar with React, there's way around it
you'll need to write an app for every native platform (due to that above-mentioned JS-native platform based structure) since some of the components might be platform-specific
don't expect to be able to use HTML: it's native components that you'll need to "juggle with"
And The Answer to “Your PhoneGap vs React Native” Dilemma” Is...
If you've already used React for the web, so you're definitely not stepping on alien ground, go with React Native!
It would be a pity not to leverage your React knowledge and not to benefit from all the top performance that you get to inject into your mobile app!
Not familiar with React? And, moreover, you love having an entire “palette” of familiar web technologies at hand, to just “grab and use”?
Then you'll love PhoneGap's “developer friendly” approach!
The END! Hope I've included all the most relevant pros and cons and managed to pull off some good explanations on why some developers get seduced by Facebook' baby, React Native, while others prefer to tap into familiar PhoneGap's own advantages.
How about you? Where do you stand now?