Written By Aditya Narayan
Course Report strives to create the most trust-worthy content about coding bootcamps. Read more about Course Report’s Editorial Policy and How We Make Money.
Course Report strives to create the most trust-worthy content about coding bootcamps. Read more about Course Report’s Editorial Policy and How We Make Money.
So you want to be able to build mobile apps for both Android and iOS. Should you learn the individual native languages for each app (for Android that means Java and for iOS that means Swift/Objective-C)? Or should you learn JavaScript to use hybrid framework React Native? There are lots of considerations to take: your existing coding skills, the purpose of your app, and the longevity of the project. Here, Aditya Narayan of mobile bootcamp TurnToTech digs in deep and shares what it takes to build native versus using React Native apps for Android and iOS.
Tip: If you need any help with terminology in this post, see our Glossary.
React first came out as a way to build user interfaces for the web using JavaScript. It's like any other framework that comes with its tools and best practices except that this one’s from Facebook and web developers really love it. Every framework brings something useful and React brought a clean style to UI development based on the simple idea that the user interface is a function of data – if the data changes, UI should change.
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 React Native, for the programming language - you need JavaScript or a slightly different take on JavaScript which mixes JavaScript and HTML type syntax called JSX. The tools for React Native are mostly a text editor and the Chrome debugger and a few tools others for build and testing. And the API’s – there’s a large set of things to learn. The API’s are mostly OS based. Anything that you do on your smartphone today, there’s a programmatic way of doing that which is what the API’s tell you. Here’s a challenge though. You may not have a React Native way of doing everything.
I’d also say that some web development knowledge is a prerequisite for React Native. You can still get started with React Native without any web exposure but then you probably won’t appreciate much of the underlying architecture. You’ll need to know JavaScript, CSS, possibly some HTML, and Object Oriented Programming by the time you’re actually building an app.
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.
JavaScript is easier to learn and easier to debug as opposed to Java, Objective-C, or Swift. However, the ease comes at a cost. JavaScript is not as strict a language and many errors can hide inside your code.
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.
Swift is obviously very modern, but both Objective-C and Java continue to get modernized and aren’t really lacking in any way in terms of modern language features or performance. However, JavaScript has various well-publicized deficiencies which anyone can google.
So React Native may be easier to learn – but it comes with the downsides of JavaScript. And as with any cross-platform framework, you also have to deal with the phenomenon of ‘write-once, debug everywhere.’
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.
Find out more and check out TurnToTech reviews on Course Report. Check out the TurnToTech website.
Aditya is the co-founder and CEO of TurnToTech mobile development coding bootcamp in New York City. His background is in IT and physics, he has held senior technology roles at Marvel and Starwood Hotels, and founded companies QCD Microsystems and 1to1 Tutor online math tutoring.
Learn how to launch a career as a technical writer!
Find out the fundamentals of cloud engineering and how to launch a career in the Cloud!
Follow our tips to help you choose between these two, in-demand tech careers!
Hack Reactor's Zubair Desai shares how bootcampers should (and shouldn't!) use GenAI...
Lighthouse Labs walks us through cybersecurity jobs across 6 different industries!
Why You Should Learn CSS If You’re Not a Software Engineer
A Fullstack Academy instructors shares how AI is used in Data Analytics!
Codesmith CEO Will Sentance walks us through the importance of software engineers in the AI age
Plus, find out how to learn WebXR to become a WebXR developer!
Find out how AI is used in digital marketing!
Sign up for our newsletter and receive our free guide to paying for a bootcamp.
Just tell us who you are and what you’re searching for, we’ll handle the rest.
Match Me