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

Hybrid Web Frameworks