Deciding to Go Native over Hybrid App Development

This is a subject that is somewhat dear to my heart. I was introduced to application development on a fluke. I knew nothing besides the fact that Hybrid Development was the way to go, with frameworks popping up like wild fires, the process had been simplified. 

In fact, my assumptions we true. This form of development was the seam between learning native languages like Objective-C/Swift an Java. I couldn’t wait to dive in an boy did I… My first hybrid application was data intense. I learned Cordova/Phonegap quickly and build an app faster than I could believe. Little that I knew, device capabilities, signal quality, OS and payload would play a key role in my dismay later on.

The app utilized the upload of files as well as synchronous xhttp requests. Something you should always plan for especially if you expect to send large amounts of data. In my case, I was carrying a base64 signature image along with several photos and approximately 200 fields of form data. The server side scripts would process the data then stamp a PDF and email it to a selected recipient.

Most of our users were able to install successfully and use the app with no issue on and offline. The app was developed brilliantly (if I may toot my own horn) however, device capabilities would eventually make my life a living hell. Some users on old devices would complain about app crashes and weird behavior when submitting form data. Something I, an inexperienced app developer at that time had no clue why.

Before I knew it, I was debugging like hell with my QA and trying to narrow down the inconsistent issues. Long story short, it was not long after that I realized my fancy solution had outgrown its intent. The functionality was too intense for older devices and the payload was way to large for the JavaScript manipulated post requests. That was the reason for the inconsistent issues certain users on older devices were having when using the app. I honestly felt bad I didn’t catch the issue before the release but I now chalk it up as experience.

I make the claim to new app developers considering Hybrid development, ask yourself 3 things:

1. Will my app be data heavy?

2. Will I send or receive data to and from my app?

3. What type of devices will my app be used on?

These 3 things are critical. If your app is processing heavy data, sending and receiving data objects and used on specific older devices, Go Native!!! I will stress, if you answered yes to both 2 and 3, save yourself time and headache and choose to develop your app in Objective-C or Swift if targeting iOS or Java if targeting Android devices. 

Looking around the web there are many articles floating around about the beauties of Hybrid development, and I am a big fan, but there are very few resources online that point you toward decisive measures to take to determine if this method will work for the life of your app. Save yourself time an headache by doing your research and probing your clients needs and use cases. Hope this helps someone in the near future.

I did end up rebuilding the same application in native iOS Swift and I must say, the reliability has increased by 5x’s. It’s important to keep in mind that the limitations in HTML5 and JavaScript don’t always play nice with applications, especially when you are sending a large payload of data. This type of functionality is best achieved with a strong and robust native programming language.



Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )


Connecting to %s

%d bloggers like this: