==UPDATE: My updated opinion about web based mobile apps (31 January 2017)==
I can exactly remember when i made my first mobile app. It was at the time where Apple ruled the world with iOS and you had very limited possibilities in comparison to what we have now. I tried to get used to objective C, but there was something about it i couldn’t stand. It was completely different to all languages i’ve known then. As a result i looked up for alternatives and i found some. I tried out Phonegap and that was the moment i wrote off web technology (at first). It was all laggy and not comparable to the real native thing. So i’ve ended up using Appcelerator’s Titanium Framework.
It has been over 6 years since then and technology has moved forward. With more and more HTML5 and CSS3 features, we’re getting great performance of our web apps with such little optimization. With my new job i started using more and more web based technology. I realized if you do web stuff the pro way, you can get unbelievable performance out of it. With the time i completely changed my opinion on that topic. Actually i think with todays technology you can develop web apps which feel the same as a native app and if you don’t screw it up it can even run better. And the best part about it: You’re completely independent on which OS it’s gonna run on.
Use 3D acceleration for heavy animations
You want to move something around? Use transform3d. Even if it’s just for one axis. With the magic word “3d” you’re telling the browser to use the GPU leaving you with a free CPU which you can use for other calculations. And there’s much more. You can rotate, skew, scale, change the opacity, the background color and much more. Even all together. Be careful to not overuse this extra boost and test on mobile devices.
Web workers for multi threading
Dual cores, quad cores, hexa cores, octa cores, etc. It’s crazy how much cores a mobile CPU packs these days. Wondering why your app still doesn’t run faster? A reason may be you’re not using web workers. What that means is you’re doing all your stuff on a single core/thread. Use those extra cores by using web workers.
Coming from a object oriented world? Have a look at TypeScript. It will make your life a whole lot better.
Web technology will move forward. Even without you.
This one is an important thing to know when developing web based applications. Even if you don’t do anything, your app will become faster and better. With other developers pushing those web technologies forward you don’t have to touch a line of code.
With all those great experiences i’ve made in the past years, i can’t live anymore without the web and it’s technologies. Heck you can even doweb based robotics (see: Cyclon.js). I won’t decline that there are still some cases where you have to go native but it’s just a matter of time.