Should I go back to Cross-Platform Mobile App Development?

Mobile App Development

With nothing much specific to develop in mind, today I decided to do some mobile app development.

Immediately after I made this decision, I was bombarded with waves of questions regarding which language/framework I should pick. The mobile app development market is full of  platforms like Android Native Java/Kotlin, React Native, Xamarin, Ionic and NativeScript and many more. Although I have already worked with Phonegap, Xamarin, Ionic and even Android Native in the past, my current mind set is that I am not at ease with any of those.

My Experience With Various Cross-Platform App Development

Phonegap

My journey into Cross-Platform app development had started back in 2015 with Phonegap. I was delighted to be able to develop apps just using Javascript, HTML and CSS. I even built one and shipped it to Google Play Store. It was quick and easy. But later as I wanted to add some Native features to it, I realized it would have me go bald for sure. I realized it was just a WebView and I am completely restricted from the native hardware. So, I quit pursuing Phonegap development.

Xamarin

After a few years, I was again delighted when Xamarin became freely available in Visual Studio. Coming from a .NET background, I immediately dived into it. It was definitely a lot better than Phonegap but definitely not as easy as I had expected just because it was .NET. It had it’s own platform specific libraries that I needed to master. I would have given time to master those, however, there was this another big issue with Xamarin.

Just simple package downloads or updates from Nuget would explode and blow up my projects and they would stop building. Even though I tried to stick with it, I couldn’t find much resources/community around it. And that was the end of Xamarin for me.

Ionic

By this time around, Ionic 2 was already in the market so I decided to take my chances with it. Again, I could use Javascript, HTML and CSS to build apps with it. I was happy again. I could build apps rapidly again, but there was just this another problem of generating the APK builds. While with Xamarin, I could easily generate builds with Visual Studio, with this Ionic, my Command Prompt wouldn’t listen to me at all! No matter what I installed, I could never have the right kind of Environment to generate the apk.

I believe I had all the necessary setup in my machine like Android SDKs and Gradle, but I kept facing different issues when I tried building for Android. I had written my app in just a few days but couldn’t get it to build even after trying for 4 days. And that was it for me with Ionic.

One good thing I got from Ionic though was I got to learn Angular which I absolutely love.

NativeScript

After that I also tried NativeScript but again I had similar issues as that of Ionic. I didn’t even write a single line of code on it because I couldn’t setup my environment for it.

React Native

No experience here. But from what I have read, I would need to learn React first then move onto React native. Plus it has it’s own learning curves.

Native Android

After pursuing all these frameworks and platforms, I realized that if I had actually picked up Android Native development platform back in 2015, I would have been at least quite proficient with it by now. So, I decided to give it a try. I mean I can already code in C#, how hard would JAVA be?

After downloading Android Studio and playing around with it, I was able to create an app (IT Work Remotely) and push it to Play Store. Although there is a large learning curve associated with developing Native apps, in my experience, it is definitely worth learning and developing on the native platform itself if somebody wants to stick with Mobile App Development industry.

Nothing (at least the ones I tried) can compare to Native app development. And I am not just talking about performance-wise. From the perspective of learning curve as well, I think one has to spend equal amount of time to master either Cross-Platform framework or Native framework.  So, why not rather invest that time and energy on learning the Native framework?

I know it is definitely tempting to write once and deploy in multiple phone environments. However, with my own experience, I have never deployed anything on iOs play store ($99/month Developer fee!! Are you kidding me?) and I think I will mainly stick with Android phones for now, at least for the apps that I create for fun.

So, if I am just targeting Android, I feel like there isn’t much use for me to learn a Cross-Platform platform given that the Cross-Platform environments are always either lacking in native performance or have unpredictable environment/build failures.

Concluding Thoughts

Yet, again for someone like me, who isn’t much proficient with JAVA or Kotlin, developing complex apps on Android demands long hours of research and study. I would have loved if I could build mobile apps with just the tools that I already had in my pocket. That’s the only reason I am not at ease with Android Native development.

With that thought, coming back to today, I actually had decided to give Ionic one more shot (just for the sake of Angular).

After installing the framework on my machine and following their tutorial to create a “Hello World” app, guess what I received?

Error on Ionic Start Project

Error on Ionic Start Project

Good bye cross-platform?

Leave a Reply

Your email address will not be published. Required fields are marked *