There are several ways to create a mobile application. Do you want to know what the best way is? It depends. What technologies do you have experience with? What platforms are you targeting? How much time do you want to spend building your application?
After the introduction of the iPhone and it's software development kit, the mobile space went through a revolution. Today, there are millions of mobile applications, countless platforms, and dozens of frameworks and tools to create mobile applications.
How do you decide what is right for you? Answering that question is the focus of this article. I discuss the types of mobile applications you find in the wild, the advantages of native and hybrid applications, and I list some of the more popular platforms.
Mobile applications can be broken down into three broad categories:
- web applications
- hybrid applications
- native applications
Each of these types has its pros and cons. If you were to ask me which type best fits your needs then my answer would be that it really depends on exactly what you're trying to do. In order to justify my answer, I first need to tell you about each application type. Let's start with web applications.
You may already be familiar with web applications. Unlike other apps, a web application isn't something you can download from somewhere, it's simply available on any device which can load web pages (or has a web browser). A web application is nothing more than a website, acting and behaving as an application. Before the introduction of the iOS SDK, for example, web applications were the only option for developers wanting to create applications for the original iPhone.
Web applications have a number of distinct advantages, the most important one being development time. Because a web application is a website, it is built once and accessible on every platform that runs a web browser. For some companies, this is a very appealing solution since native development, which we discuss in a moment, can be costly and time-consuming. You could say that web applications are by definition cross-platform.
Are there any downsides?
As with any types of applications, there are a few downsides of web development. The two most important drawbacks are performance and access to device capabilities. If you are planning to develop a game, then a web application isn't your best option. It is possible, but performance won't be stellar. Websites and web applications have limited access to the capabilities of the device, such as the camera, location services, etc. This has significantly improved over the years, but it isn't up to par with native applications.
If you want to limit the development and maintenance costs of your mobile application and performance isn't the most important aspect, then a web application is certainly worth considering.
If you want to understand what web applications are about and how to get started, check out some of our other content here on Envato Tuts+:
- ReactReact Crash Course for Beginners, Part 1David Gwyer
- AngularCreating Your First Angular App: BasicsMonty Shokeen
A hybrid application is a web application that runs in a web view of a native application. Put differently, a hybrid application uses a native application as its container to make it look like a native application. This means that, to the user, a hybrid application looks and feels native, more or less. The user can download it from the platform's mobile store and the application icon appears on their home screen.
The most popular solution for developing hybrid applications is Apache Cordova, Cordova for short. When Adobe acquired PhoneGap a few years ago, they open sourced most of the code base and Cordova was born. PhoneGap still exists and is Cordova's commercial cousin.
To learn more about hybrid applications, I recommend checking out some of the tutorials we have published on Cordova:
- CordovaAn Introduction to Cordova: BasicsWern Ancheta
- IonicIonic From Scratch: Getting Started With IonicTinashe Munyaka
What do you get in return? Performance is probably the most compelling advantage of native applications. Native applications feel snappy and, especially for games, they can take full advantage of the resources of the device and operating system. Every feature and capability of the device that is exposed through the SDK's APIs is accessible to the developer. This is another key advantage native has over hybrid and web.
There are a number of hybrid approaches that make native application development accessible to more developers. The solution is simple, write code in the language of your choice and compile it to a native application. The most popular solutions at the time of writing are Xamarin and React Native.
Envato Tuts+ covers a broad range of platforms, including iOS, Android, Xamarin, and React Native. Take a look at these tutorials to become familiar with them:
- iOSiOS From Scratch With Swift: Understanding the iOS EcosystemBart Jacobs
- AndroidAndroid From Scratch: An Overview of Android Application DevelopmentAshraff Hathibelagal
- React NativeGet Started With React NativeMarkus Mühlberger
- React NativeCreating a Dictionary App Using React Native for AndroidAshraff Hathibelagal
Native or Hybrid
What is the best solution? Native? Or hybrid? Or a web application? There is no one answer. It depends on several factors. If you are a developer, then the answer is less complicated. What technologies are you already familiar with? Do you want to focus on one platform or create applications for multiple platforms?
It is becoming a true challenge to stay on top of iOS, Android, and Windows Phone. Some developers write native applications for multiple platforms, but it is challenging and if you can do it, I definitely recommend it. The mobile space evolves at a rapid pace, and if you choose native development, then that should be your goal, to become very, very familiar with the platform you're targeting.
This is one of the reasons many developers choose a hybrid solution. If you are a seasoned web developer, then you will be up and running in no time. Apache Cordova, in combination with Ionic or Onsen UI, can speed up development significantly.
Web applications are certainly something to keep in mind. They are a different category, though. By creating a web application, you have no intention of having an application in any of the mobile stores. Many companies chose this path several years ago. Nowadays, if the budget and resources are available, native and hybrid approaches are more popular.
To decide what approach you'd like to take in developing your mobile application, ask yourself these questions. As I mentioned earlier, choosing the type of
Is performance critical?
If so, native is your best option. You may also want to look into Unreal Engine if you plan to develop a game. As opposed to Unity, they only charge you 5% of the revenue you make instead of a monthly fee.
When we discussed native applications, we saw that they're able to utilize the device capabilities, and a good example of this is how Apple takes graphics performance to the next level using Metal by giving developers almost full access to the GPU on the device.
If you aren't familiar with Metal, here's what Apple has to say about it:
Metal 2 provides near-direct access to the graphics processing unit (GPU), enabling you to maximize the graphics and compute potential of your apps on iOS, macOS, and tvOS.
Now, if performance doesn't matter, you're free to choose cross-platform or hybrid apps, whichever suit your needs better based on the following few questions. Anyway, though, if you have the resources to build native apps, that's always the best option overall.
Is cross-platform support important?
If not, you should consider the native route. Native apps, as mentioned above, are definitely the best way to go for a solid user experience and best performance possible.
If cross-platform support is vital, and you cannot get native apps for all your platforms, then a hybrid native or hybrid web approach is your best bet.
Take a look at Xamarin or React Native if performance and device capabilities are equally important. My personal favorite, though, is Ionic because it gives a good deal of on-device functionalities while still having a wide enough umbrella to cover most development
Is this your next big thing?
If your goal is to become a mobile developer, then my suggestion would be to choose a native approach. This is very personal, though. I am an iOS developer and I like it this way; I think Apple is disrupting the mobile development field, and it gives you a lot of tools as a developer. By focusing on one platform, in my case, iOS, tvOS, watchOS, and macOS, I have the time to become very familiar with the platform. This is an important aspect of mobile development if you want to create compelling applications and a great user experience.
If you have a background in web development, then native is still an option. However, if you want to get something out the door quickly, then a hybrid or web app is the fastest solution.
If you were expecting a clear-cut answer, then I may have disappointed you. If you haven't made up your mind yet, then I suggest giving some of the options I listed a try. Play around with Cordova or take a learn about Swift and see how you like it. Don't take the easiest or quickest path to your goal. Make sure you also enjoy the journey because that's where the fun is.
If you already know what approach is the best for you, then you may want to speed up the development of your next application with some of these iOS and Android templates. Check them out on Envato Market: