Do you have web development skills and want to get into mobile app development?

Good news! You can now build hybrid mobile apps, that look and perform just as good as native apps, with the Ionic Framework.

What is a Hybrid Mobile App?

A hybrid mobile app is built with HTML, CSS and JavaScript and is contained in a native wrapper so that it can be installed on a mobile device.

This allows web developers to build mobile apps without having to learn the native programming languages (e.g. Swift, Java, Objective-C). It also means that you can have one codebase for all the different platforms.

Cordova/PhoneGap

The most popular native wrapper is Cordova (the engine that powers PhoneGap) and has been around since 2009. Cordova is responsible for loading your HTML/CSS/JavaScript in a web view when the mobile app is started.

The other big feature of Cordova is plugins that allow you to communicate with the native features of your mobile device, for instance accessing the Contacts list or Camera, using just JavaScript.

Ionic 2+

The Ionic Framework uses Cordova and provides you with a UI framework that mimics the native UI. That means that you don't have to worry about implementing a native-like UI and debugging all the quirks between web view implementations on different platforms.

Ionic is built on top of Angular, a very popular framework (made by Google) for developing web applications.

Both frameworks were completely rebuilt from scratch offering better performance and simplified code and were initially released as Ionic 2 and Angular 2. They have now adopted semantic versioning, which means that the major version numbers are changing faster, but don't necessarily mean a complete rewrite of the framework. The current versions are Ionic 3 and Angular 4.

You'll find that most of my tutorials for Ionic 2 will still be applicable to newer versions of Ionic.

What about Ionic 1?

If you need to work on an existing Ionic 1 app, you can have a look at my 6-part tutorial to get started with Ionic 1.

Keep in mind that if you have an Ionic 1 app and want to upgrade to Ionic 2+, you'll encounter many breaking changes.

For an impression of what you can build with Ionic, there is the official showcase on the Ionic website, but there is also this unofficial list in the forums.

What about React Native, NativeScript, etc.?

In the past year we've seen the rise of compile-to-native frameworks like React Native (made by Facebook) and NativeScript (built by Telerik). These frameworks allow you to build native apps by writing them in JavaScript and compiling to native.

I haven't explored these frameworks yet, but I do think that native apps will always give you a better performance than hybrid apps because you won't have that extra layer in-between (the web view).

However, depending on the type of app you're building, this difference in performance is probably not noticeable to the user and that is what matters in the end.

Mobile devices are getting faster with every new release and so are the mobile browsers. With the support of Service Workers in the browser, we can now even build web applications that will behave just like an app on mobile devices negating the need for app stores.

Why you should go hybrid

One of the cool things about hybrid apps is that you can update your app without having to republish it through the app stores. Your app is basically just a bunch of HTML, JavaScript and CSS files and you can use a service like Ionic Deploy to update any of those files in the app. This is especially useful on iOS where it takes more than a week to publish apps.

Also, if you don't have a good eye for design but still want to build a beautiful app, you can buy themes for your Ionic app on the Ionic Marketplace or on Ionic Themes.

So if you're a web developer and if you want to leverage your current coding skills, the fastest way to get started with app development is by building a hybrid app. Ionic is the most popular hybrid mobile app framework out there and has an amazing community who will help you out whenever you get stuck.