DEV Community

Cover image for Native apps vs Cross-platform Apps
Kshitij Gajanan Gavhane for GDSC SVPCET

Posted on

Native apps vs Cross-platform Apps

Today is all about apps…..about iPhones and androids so,
How to build apps for these cool devices?
Of course, if you want to be an ios developer you're going to need a mac or if you want to build android apps you can use a mac or pc or Linux. You have some opportunities there but let's dive in and talk all about apps and app development.
Do you know what question App developers get every single day? “Should I do cross-platform app development or native app development?”
Which ones to choose? Swift vs Kotlin vs Java vs React native vs Flutter and Dart vs Ionic vs Xamarin, so many technologies and so many questions. There are different answers depending on what you want to do with your life and your products can also depend on which technology you use so there's going to be some very great information in here. We'll talk about jobs, freelancing, the quality of the platform and so much more.
So here we go, first off let's talk about native apps
What is a native app?
A native app means that you're building with Swift for ios or Kotlin for android. It could also mean Java for android. IOS apps support objective c and they support swift also. Those would both be considered native apps. Though nobody is using objective c anymore🙃. Now with android, Kotlin is the new hot programming language that's replacing java for the android platform. Let's talk about ios… When would you want to build an app natively with swift?
Logos for Native and Cross-platform

Well there are a few reasons first off, if you want to get a full-time job as an ios developer- you're going to want to learn swift, that is your fastest path to a full-time job. Most companies that want to build an app for their business are going to go with native because it will deliver a great performance, it's going to be super fast and there are the most amount of developers available for them to hire. Native app development is the fastest app development you can do, there are no intermediary layers and this goes the same for android but native app development is going to give you the most performance of any app that you could ever create. Now to native android. The options here are Kotlin or Java. We used to build android apps all in Java but now we do it in Kotlin. Although android still supports java but it's now a second-class citizen. Google, who's the main backer behind android, also favours Kotlin. They want everyone on Kotlin as future of android is going there, so if you ever have the question ‘should I learn java or Kotlin for android?’ I suggest Kotlin. That's where all the jobs are going to be now. However when you've learn the core foundation of android and Kotlin, make sure to learn some java because you're going to encounter it on a full-time job and again when would you want to use native android well ,especially if you want to get a full-time job or if you're building a product or startup that you need extreme performance native android , that’s way to go. Again, medium or large companies often start with native apps.
Now let's talk about cross-platform apps for a little bit.
What is a cross-platform app?
The idea is that you write code once and you can deploy it to multiple platforms. Facebook made this popular with something called react-native. What is React you may ask? Well React is a web component framework that helps you build cool web apps with this super elegant component modularized framework and now they have brought it to mobile which means that with react native you can write code in javascript and react but you can pull out the native features of the device of the phone like the camera ,the GPS, all those things. It basically talks to it natively so you could build an app and deploy multiple places. Now let me tell you something, a lot of people make the mistake of just writing it once and deploying it everywhere when they are building a native app but that doesn’t work well with the react-native. When Facebook actually invented react native ,and it's still there in their docs, they say “react native was not designed to make one code base and deployed everywhere”, the reason why they designed react-native was so that they could use web technologies to iterate faster, their apps had become so big; the facebook ad had become so huge that it takes hours to compile single small change, so they wanted something where they can write the code in javascript and get real-time updates because javascript is an interpreted language, it changes instantly. So they could just write the code once and deploy it everywhere.
Now,
Why don't a lot of companies immediately just embrace cross-platform when you think it saves money?
Well, javascript's a slower language, it's a very very slow language. In a recent test where 10 million lines of code in c++ and 10 million lines of code in javascript were compiled javascript took 59 seconds to run while in c++ it only took one second, that's the difference we're talking about with a compiled language versus an interpreted language like javascript.
Now let's suppose you have apps that don't need intense hardware rendering and things like that, react native is a great choice. You may think Instagram is built on react native and they've got video stuff, well keep in mind it has a team full of developers whose whole life is solely dedicated to performance and making things great. As a single app developer though you are not going to squeeze out crazy performance in javascript for your native apps.
You can also learn flutter and dart which is the new big competitor to react native (flutter is the framework & darts the programming language).Flutter is backed by Google, it's way newer than react-native but it is so powerful which gives you an amazing developer experience you can already tell.
The approach used by flutter is just different, their approach isn't about apps and deployment is everywhere. So what is it about if not that?
“We want you to build an amazing experience for your users whatever your users need and we don't want you to worry about the various platforms we want to handle so that you focus on your experience”. Flutter and Dart are all about creating the experience of writing the code once and then deploying as needed to the various platforms without having to put any thought into it. Flutter also is a super user-friendly environment, it uses the dart programming language which is fast but it also uses web assembly which is also faster than javascript so right off the bat it's going to perform better than javascript. Again it's still new in recent years and it's only going to get better as we move along.
NOW! let's talk about just the money and freelancing behind cross-platform apps. You are not going to find any jobs for a flutter or react-native but the real jobs are in native. They're innate now if you want to become a top freelancer where you go to clients and you say ” I can build you an iPhone and android app for your business to help you make more money”, you have huge opportunities with cross-platform.
You can go far with a cross-platform system but there are no jobs there, the jobs are in native. So there's some overview of native and cross-platform and I just want to mention a few more, one is Xamarin. Xamarin allows you to build cross-platform apps in c sharp. Professional opinion states you should only ever use
Xamarin if your team is well versed in it. If your team is c-sharp experts and you don't want to learn new stuff that's when you should use Xamarin, it does not have as many features as react native or flutter and there are lots of problems with that might come with it. Also in my experience the apps just don't come out as high quality. Again you can try it out for yourself but Xamarin allows you to build cross-platform apps with c-sharp and even though the platform isn’t the most reliable option we can still built an app in the company for it.
Similarly with ionic, ionic is like a third-party type of framework for building cross-platform apps. It's been around for a while, some people like but…. better to go for the open-source route of react native or flutter and dart where huge companies are backing it. There are some other older ones too like phone gap and things like that but, really the true contenders for the cross-platform are flutter versus react native.
Flutter is faster by design because it's going to be used with a web assembly under the hood….
Javascript is typically a slow language, as mentioned earlier but if you are a javascript developer and that's what you know, obviously do react native, it makes sense
So at last moving forward to some tips related to cross-platform…the jobs are in native, you can do great things with freelancing and cross-platform if you're a small business or app and you want to focus on your business without having to hire a bunch of developers. If you need extreme performance use native swift or native Kotlin and android.
If you enjoyed this post, I’d be very grateful if you’d help it spread by emailing it to a friend or sharing it on Twitter or Facebook.

Thankyou

Top comments (2)

Collapse
 
pauldubois777 profile image
Paul DuBois

Thanks for the article Kshitij!

You shared a LOT of good information. One thing I would add is that I believe Flutter and React Native compile into a native app, whereas Ionic and Xamarin compile into a web application that runs inside a native app's web browser.

What this means is that with Flutter and React Native, you are limited to using the language's pre-built components, and with Ionic and Xamarin, you can create any component you want using JavaScript, CSS, and HTML.

Anyone please feel free to correct me if I am wrong, since I am not super current with the technologies, but this is what I think is how they all still work.

Thanks again for your aricle!

Paul

Collapse
 
kshitijgavhane profile image
Kshitij Gajanan Gavhane

yes Paul, You are absolutely correct

Some comments may only be visible to logged-in visitors. Sign in to view all comments.