Hybrid vs Native Mobile App vs Progressive Web App
We are often asked what the differences are between a native mobile application and a hybrid one. I was starting to put down some notes on the topic when I came across this article, written by Nic Raboy, that mirrored many of my own thoughts. So, I created a post to go through it and summarize the key points.
The article focuses on evolving your development to use hybrid apps and later goes into NativeScript, a cross-platform tool that we find more useful then Xamarin at times.
If you read through Section 1.0, you'll have a really good understanding of the differences and when you'll want to use them.
Hybrid Applications
Strengths
Low barrier to entry - You can use common web technologies such as Angular, JavaScript, HTML and CSS. This saves time on development if your team isn't as familiar with Java, Objective-C or Swift.
Reduced Development Time - Because of the low barrier to entry and the fact that you can write a single code base to handle both iOS and Android, development time for a multiple platform apps can almost be cut in half. There will be some areas where you need to split off the code base but you don't need to build two completely separate mobile applications. Or three if you count Windows phone (anyone?).
Weaknesses
Performance - Now, for the most part you'll never notice an issue here but you need to understand the needs of your application to determine which route to go. If your app is mainly simple forms and has limited or no animations then you'll be fine with a hybrid approach. When your app requires more work from the GPU, such as animations or 3d graphics, performance will suffer if you go the hybrid route.
Plugins - Plugins are used to access the hardware such as the camera, location services (GPS) or accelerometer. Most of these plugins are already part of hybrid platforms but if there's something you're trying to do and there isn't a plugin out there for it, then you'll have to create your own.
When to use Hybrid
Business Forms
Brochure or Restaurant Menu type of applications
Mobile versions of static websites
Quick prototyping for proof of concept apps
When to avoid Hybrid
Games
Heavy Animation applications
Media heavy applications
Applications with large amounts of data
Applications where you need to use the native hardware but there are no plugins available.
Progressive Applications
Progressive applications are basically mobile websites. They can work offline. If you don't need to access any of the device's hardware or native functionality then they are great. You can't use or create plugins to access device hardware like the camera with a Progressive Application.
Conclusion
Here at ClearlyAgile we work with both native and hybrid mobile applications that communicate to back-end systems we build for our clients in the cloud. Both work well. It's a matter of knowing when to use one over the other and also dependent on budget or timeline requirements of a client. Typically, a two platform native app (ios/android) will require two developers, doubling the required effort. On the other hand, a Hybrid application for the same two platforms can typically be completed by 1 or 1.5 developers.
Read the original article, it's a great read.
Other resources
Native Mobile Frameworks