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

Fred Mastropasqua

Fred Mastropasqua is the CEO of at Clearly Agile and Managing Partner of Synuma, LLC, and the only Certified Scrum Trainer based out of the Greater Tampa Bay region. He boasts over 25 years of IT experience building enterprise-level business applications, both infrastructure and software development, in roles such as Director of Application Development, Senior IT Manager, Software Engineer as well as Agile Coach and Trainer. Fred is a selfless leader and persistent problem solver that thrives on devoting time to each team member’s development and creating innovative solutions. When leading enterprise transformations, he coaches leadership on effective portfolio/product management and scaling techniques, mentors Agile professionals, and trains development teams on successfully implementing the Scrum framework. As a trainer, he leverages cognitive science, making classes exciting, collaborative, and engaging. Clients relish his hands-on approach to creating custom business applications for both cloud and mobile platform and his product visioning for Synuma SaaS. Fred currently holds several certifications in the areas of Agile, Scrum and Scrum@Scale, Software, and Networking and is consistently adding to his expertise.

Previous
Previous

Using NSubstitute to Check if a Method is Called With a Particular Object

Next
Next

Using the Visual Studio Android Emulator with Android Studio