Ionic – the truly Progressive Web App framework

There have been countless blog posts, presentations, articles etc over the last few years about the seemingly endless debate about which is the better approach for mobile development, native app or web apps.

Despite the title of this blog I’ve always been pretty technology agnostic.  I’ve developed applications with  Appcelerator Titanium (almost native), Sencha Touch (hybrid),  Objective-C (purely native) and Java (purely native).  And over the last 12 months I’ve been working with Ionic (hybrid).

How you choose to develop an app usually comes down to requirements and resources. If the requirements absolutely demand native development you go with native development. But in the majority of cases they don’t and it comes down to what skills you have and what resources you have available (time, money, people and so on).  Companies like Facebook, Google etc with armies of native developers will probably always develop apps natively to get the slickest performance possible.  And that makes sense.  But they’re in a different world to the rest of us.

What got me thinking about this subject this week was the idea of Progressive Web Apps that I talked about here and here.   This concept brings another factor into play – the ability to have a web site start out as a normal web site but then as you gradually engage with it more it becomes more app like (using Service Workers). This really brings the power of the web into play and its why I think it’s a really exciting time to be developing hybrid apps and in particular, hybrid apps with Ionic.

Having developed native apps with Titanium and then in Objective-C and Java and spent countless hours working out how best to do this or that on each platform, what I have always loved most about working with Ionic is that it truly is a write-once, run-anywhere framework.  I never have to adapt code for iOS or Android.  It just works, all the time, on all devices (well, 99% of the time). It’s a fantastic feeling – if you have developed apps natively in separate codebases – to work on an Ionic app and know that it will work across platforms without any hacks or work-arounds or separate components.  And recently, Windows Phone support was added to Ionic 2 (apparently it took Brandy Carney just three days to add support for it).

But what I’ve never really thought too much about is how my Ionic apps, because they already work in the browser,  are already servable websites.

So the Ionic app that I currently compile to native could initially be sitting on a server somewhere and be that Progressive Web App that operates as a normal device responsive web site but which – upon a certain level of engagement with the user – becomes more app like when added to the user’s home-screen.  And then maybe when engagement reaches a further level (or requires certain device features), the native version of that app is installed.  The user gets the experience they need but only when they need it.

From URL to tab.  From tab to home-screen.  From home-screen to app.

All with the same single codebase.

And although I’ve not tried it yet, with tools like Electron, that very same app with the very same single codebase, can become a desktop app for Windows, Mac or Linux.

How exciting is that?

I think (?) at the moment – until Safari supports Service Workers – the truly Progressive App experience described above is only possible on Android. But hopefully it’s only a matter of time before Safari supports it too.

What an extraordinary time it must be for the Ionic team right now and what an exciting time it is for us, as developers, to be part of it.

 


I’m a mobile applications developer based in the UK, concentrating primarily on hybrid application development with Ionic and Ionic 2 but also with native development skills. Please visit www.crossplatformsolutions.co.uk for more information about me and how I may be able to help you with mobile application development, particularly with Ionic 2 but also with other mobile frameworks and technologies.  Thanks for visiting.

 

 

 

4 thoughts on “Ionic – the truly Progressive Web App framework

  1. Ben Sperry (@benjsperry)

    Thank you for the great write up, Richard! I really think you hit the nail on the head here.

    We’re incredibly proud that Ionic is one of the only frameworks in mobile that actively supports deployment to both the native App Stores *and* the mobile web (“Progressive Web Apps”) right out of the box, instead of only focusing on the native platform (which to us, feels like a step backward).

    We’ve always been massive fans of the web, and we will absolutely be expanding on this focus in 2016. Deploying to the mobile web will be treated as a first class option for anyone building with Ionic!

    Reply
  2. Stephen Adams

    Great post Richard. I think you’re right Ionic is very progressive. I’m also looking forward to seeing how ‘Progressive Web Apps’ take off. I need to look into them more. But apps that can be installed/run from a website means that getting out of the apps stores will speed up updates on apps, again I need to look into them further.

    Reply
  3. Lin Pei

    Hello.
    Great Tutorial.
    I am a cross-platform developer and very interested in IONIC 2.
    And developing BLE app with IONIC 2.
    I hope your HELP.
    Could you provide sample BLE App?
    I already read you Tutorial but there is no characteristic page.
    Hope to get your Great Help.
    Warm Regards.

    Reply

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s