Build mobile applications with the web code you love
If you haven't heard of it already, you'll be hearing a lot about Ionic through my content. Ionic is the most popular and powerful HTML5 mobile framework available today - we'll talk more about what exactly a HTML5 mobile framework is in just a moment
If you'd like to learn a little more about HTML5 mobile applications, keep reading below...
What is a HTML5 Mobile App?
Of course, since the applications are built with web tech, they will run on the web and users will be able to access them through their browser. In fact, this is what a progressive web app is - a web based mobile application that makes use of modern web technology to bring a native app-like experience to the user.
But what if you want a normal app that can be submitted to app stores and installed on the user's device?
No problem. We have frameworks like Ionic to help build our app, and we have another technology called Cordova that can wrap that app up into a native package. Cordova creates a native application for whatever platforms you are building on, embeds a web browser into that application, and then loads your web based application into that browser. The end result is a native application that can access all native functionality, can be submitted to the app stores, and looks no different to a normal native app (you can't actually see this "embedded browser").
Although progressive web apps are the trendy new thing (for good reason), HTML5 mobile applications built with Cordova are the most common use case - these are called hybrid apps. One of the best things about building apps this way is that you can create native apps (for multiple platforms) and have a progressive web app available on the web if you like.
So let's recap the benefits of HTML5 mobile applications that we have discussed so far...
- They are built with web tech (and the web is cool)
- They can run on multiple platforms from a single code base
- They can be deployed to the web as progressive web apps
- They can be deployed natively to app stores and installed on user's devices
- They can access all of the native functionality that a native app can
All that sounds great, but what's the downside? In tech, there is never one solution to rule them all, so yes, there is downsides. I want to highlight those downsides here because I think they are legitimate, but are often exaggerated. I'm also not trying to paint a pretty picture, I want you to know all the facts.
A common line of thought is.... Don't native apps perform better? It is a valid conern, but in most cases the answer is no, not noticeably.
Native applications do have access to more power than hybrid apps do (a native apps engine is the device itself, a hybrid apps engine is that embedded browser), and it's important to understand the limitations of the browser. If you want to build an application that is going to rely on heavy animations, high processor use, 3D graphics, or anything that is going to require a lot of power, then a native approach will likely be the better option. In some circumstances where you have huge amounts of data in your application, you will also need to be more careful in how you display and manipulate that data with a hybrid app.
The idea that native apps perform better in all scenarios is simply not true. For most circumstances, there will be no noticeable difference - if you never need to go faster than 100km/ph then there's no benefit to having the engine of a Ferrari.
The other big issue with HTML5 mobile applications is plugins. As I mentioned, with Cordova a HTML5 mobile application can access all of the functionality that a native app can - Camera, Contacts, Bluetooth, and so on. To do this, you need to use Cordova plugins. This is basically a bit of code that handles communication between your app and the Native API that you are using, like the Camera API. There are tons of plugins currently available, both official and community created, and in 99% of cases there will already be a plugin for what you need. But if there isn't, or the plugin that does exist doesn't work the way you want it to, you'll have to extend or create it yourself - which will involve diving into the native code.
HTML5 mobile applications are a great all-round approach - they are extremely flexible, reasonably easy to learn if you have a web background, and work everywhere. Hybrid apps are certainly no toy or prototyping tool either, if you want an example of some huge, kick-ass HTML5 mobile apps check out SworkIt and Untappd.
I'm a mobile developer from Adelaide, Australia. After working with a commercialisation firm and a couple of tech startups, I started teaching through my website full time. I've been teaching mobile development through this website for about 4 years - my free tutorials currently receive an average of over 3 million views per year, and over 15,000 developers are subscribed via email to receive all of my free HTML5 mobile tutorials (why not join them?).
Almost all of my content is free, but I do release paid premium content once in a while to support what I do. In the past I've released multiple HTML5 mobile books and courses, including Building Mobile Apps with Ionic which has sold over 2,000 copies, and more recently Elite Ionic that has over 500 advanced developers enroled.
I take a practical and to the point approach to teaching. I understand that people have different levels of understanding and take the effort to make sure concepts, no matter how big or small, are explained thoroughly. Take a look at some of the feedback I've received below to see if my content sounds like a fit for you.
"Josh's writing style is light and enthusiastic, making it enjoyable to consume large amounts of information easily, no small feat when addressing a technical matter." - David Izatt
"For anyone that needs a full guide to getting started with Ionic 2 I recommend Josh's book. It's without a doubt one of the best technical books I've read. I went through it during the weekend and started building my first complex Ionic 2 app on Monday, it's worth every $$." - Jorge Vergara
If you're after some one-on-one style advice or guidance, I also offer some consulting services. These services are great for people who are looking for a little extra support, but still want to remain in the drivers seat for development. I don't have time available to take on big projects, and generally limit the time I spend with any one client to 10 hours a month. I'm not always available for work, so please get in touch before purchasing.