Tip: If you need any help with terminology in this post, see our Glossary.
Around two years ago, React Native came out – which brought similar ideas to mobile UI development, and by similar we mean it brings web development concepts to the world of mobile development. React Native is in the same category of frameworks as PhoneGap or Cordova, though I’d say its technologically superior.
There are two main reasons:
You need knowledge of three things for building apps in any platform:
For native iOS development the languages are Objective-C or Swift. And for Android the language is Java. Tooling wise, you’ll need to use each platform’s IDE (Xcode or Android studio) and learn how that IDE and their debugger and build system works.
While React Native has its origins in web development and borrows many ideas from web, there’s no such point of reference in native iOS or Android development. These are pure native touch-based platforms and you have to study these in their own right. However, knowing one of these makes it fairly easy to learn the other.
Finally, the frameworks – there’s probably the same amount of effort that’s needed, native iOS/Android or React Native. You need to learn how everything can be done programmatically. However, React Native is not likely to support every single API that’s available on iOS or Android.
On the other hand, Objective-C/Swift/Java are strict languages in the sense that they have a notion of compile time type-checking which eliminates many potential errors even before you run your code.
If you’re exploring app development and want to look for a job someday as an app developer - I’d strongly recommend native iOS or Android for a variety of reasons.
You can also learn React Native – it’s an interesting technology – but there are a few caveats:
Despite being new, Swift is quite well documented. I don’t think I’ve heard anyone complain about a lack of documentation in Swift. In terms of official documentation, React Native is also pretty good. Facebook has plenty of helpful tips and code samples along with regular docs.
Community engagement and StackOverflow-wise, I’d say Swift has an advantage as it has been around a year longer, was launched by Apple as an easier alternative to write iOS apps, and gets promoted by Apple at every opportunity. A quick comparison on the number of questions asked for Swift vs. React Native will show a very large delta. So for now, I don’t think Swift and React Native can be compared as alternatives – Swift is for mainstream iOS development but React Native is still somewhat specialized and appeals to a smaller subset of developers.
A cross-platform developer is someone who wants to build apps for both iOS and Android.
Here’s what you need to keep in mind.
In conclusion, I’d say that if your app is simple enough, if it doesn’t need to incorporate relatively new features such as iMessage or to incorporate existing C/C++ type code, or require sophisticated animations etc. – you should be fine with React Native as a start.
And even if your app is fairly complex but you’re an iOS or Android pro and have some web development experience – React Native may be a good choice as you’ll likely resolve everything you need to.
But if you’re new to development, I’d say launch on one platform using its native language first. See how it goes. Then move to the other platform. That’s how Instagram was launched.
Flatiron School instructor Graham Troyer-Joy explains object-oriented programming for beginners!
Thinkful Design Product Manager Terry Million explains the differences, and how to get started!