Just under a year ago, I started looking at developing mobile apps using a crossplatform framework. I was never quite able to find a framework that could provide enough tools or UI elements to build an app that would hold up against native apps.
I started playing with a UI framework called Framework 7. It showed promise, but it needs a lot of work and polish before it can actually be used for more than the simplest apps. Framework 7 does do one thing that I consider critical for a crossplatform toolkit; it uses the design philosophies of the platforms it runs on.
More recently I’ve found the Ionic 2 beta. I knew about Ionic 1, but it’s UI didn’t seem very good. Ionic 2 looks much nicer, probably the best of the crossplatform toolkits. It emulates the styles of material design and iOS design very well. The tooling is also very well put together. Ionic has a very nice CLI that will setup your project for you and help you easily compile and package for various platforms.
So, I built an app in Ionic 2. It’s called tiptool, a very simple 15% tip calculator. It is about the simplest thing you could make.
Once the app is running, it feels native. The problem is that it was taking 6.3 seconds to load on my modern android phone running Android Marshmallow. Ionic 2 is beta software and there is still a lot of optimization to be done, but if performance doesn’t get a whole lot better, I don’t see how HTML5 frameworks like Ionic can ever compete with native apps.