When developing mobile applications for our clients, a common question asked during the scoping process is "Should we build a native application or explore a cross platform solution?". The answer isn't always a simple one and usually starts with "Well it depends on...". While there are definitely some trade offs in developing a cross platform mobile application compared to a native app, there are also some benefits.
In this blog I'll discuss what a native app is, what a cross platform app is, and the advantages and disadvantages of both. If you have any questions, feel free to leave a comment at the bottom of the page.
What is a Native application?
Native applications are applications that are built using the native development languages of the specific operating system. For iOS (iPhones, iPads, Apple Watch) we're talking about objective-C, and for Android, we're talking about Java. It's also possible to develop Android in C and C++ but it isn't something Google promotes.
Benefits of Native development?
Native apps are built with a specific platform in mind. They take advantage of the operating systems native services (email, messaging, calendar, etc), hardware (camera, GPS, accelerometer), and user interfaces. Native applications usually look and perform better than cross platform applications because they are developed using the same development tools and languages that the operating system was created in.
In terms of an end user's experience, native applications provide fast and smooth performance that feels consistent with the operating system, almost as if the app was built for the specific device a user is using (hint: it was!). Certain features are only available with native applications, both from a user's perspective (Multi-touch capabilities, fluid navigation, easy to use, etc) and a developer's perspective (seamless service integration, APIs, development kits, etc).
When a developer builds a native application, the app can only be deployed to one app store. You cannot reuse code that you created for a Android app in an iOS app. The two programming languages are vastly different and do not contain any similar attributes.
What is Cross Platform Development?
These cross platform apps utilize the same code up until the apps are built for their specific platform. At this point, the applications are placed in an "app wrapper" for whatever platform it is being released to, so it allows the cross platform application to be recognized as a platform specific application.
So can anyone who knows web development build an app? Probably yes. Should a web developer who doesn't have any experience developing apps build an app with cross platform tools? Probably not. These tools take some expertise, prior knowledge of mobile technologies, and a good deal of testing to be bug free and ready for the wild. I would suggest hiring a professional app developer to build a cross platform app and not a web developer.
When to build Cross Platform Applications and when to go Native
The decision to go cross platform or native really relies on the answer to one question. How interactive do you want your app to be?
By interactive I mean, is the app using the GPS, camera or any other hardware? Is it accessing the address book? Is it a 3d game? Are we integrating into different APIs? Is the app data intensive? Does it need to be visually stunning? Does it rely heavily on core elements of an operating system? If you answered no to most or all of these questions, cross platform applications could be a very good option for you. If you find your self answering yes to a few of these questions you're probably going to want go the native development route.
Currently there are 2 major platforms in the mobile market that I'm sure anyone who is reading this blog is familiar with; Android and iOS. By developing an application for both of these platforms, your app would cover almost 95% of the market.
While it may make sense to create a cross-platform application to cover most of the market, you will probably spend less time and resources developing an application for one platform, learn from your users and iterate until you have the app that you want. Once your app has gained traction and users are demanding the application on another platform, I would suggest to develop a native application for that platform.
If you have any questions, comments, or you feel deeply about native apps are the only way to build mobile apps (or cross platform apps rock!) leave a mesage in the comments.