Most iOS developers have a very strong negative reaction towards cross platform frameworks. Some even advice to not learn cross platform as it will negatively impact your career. In this post, I will discuss my personal experience of working with cross platform frameworks and how I started to appreciate them.
I started iOS development in 2010 with Objective-C and manual memory management. Even though, Objective-C was a strange looking language, I enjoyed every second of it. I worked for several oil/gas companies in Texas to build their iOS native applications. Unfortunately, native iOS development opportunities started to dry out in my city and cross platform frameworks started to take over. These includes Xamarin, PhoneGap, Ionic, Sencha and even IBM Worklight.
During that time remote work was not as common as today and I was left at the mercy of the client to decide which technology they want to use. 80%-90% of the time, they end up selecting a cross platform platform. When I asked why not native iOS I get the following replies:
We don’t have developers who know how to develop in native iOS
We want to create a single codebase that works on all devices
I hated all the above reasons. I just wanted to develop in native iOS because, I enjoyed it so much. I ended up writing apps in Xamarin, Sencha and even Ionic. It is no surprise that I did not enjoy any of them.
Now I look at my hatred for these frameworks and I feel ashamed. I think it was childish of me to have such a narrowed view of mobile development. When making a decision, it is always a good idea to look from both the sides. I only looked at it from my side. I wanted to have fun writing apps. I wanted to enhance my iOS native skills. I wanted to write in Objective-C or Swift. It was very self centered.
If you look the other side (company’s side) then you will find out that choosing the native iOS framework to build the app will not change the company’s financial picture. Most of the apps were used internally by their employees, so the apps were not the main source of income for the company. And no employee leaves a company because their internal apps was mediocre. If that was the case, payroll apps would have claimed their millionth victim.
The companies I was working for were not interested in the best user experience (Audience = Internal Users). They were only interested, if the work can be performed using the app. That’s it! We see these kind of apps every single day. I am sure you are using these apps at your work. You despise them but the company has no intention of replacing them because it gets the work done.
Looking back now, I may also choose cross platform over native to save on cost and to provide a decent experience for my employees. On the other hand, if my app will be the main source of income then I would implement it in pure native. There is no one size fits all solution. Sometimes native is better and other times cross platform returns higher returns on your investment.
If your app is a consumer based then my advice is to use native frameworks to build the app. This way you will be able to create the best experience for your users.
Apart from that, I think hating on a particular technology is never helpful. I am sure you can find my countless posts/tweets/rants where I am talking negative things about a particular technology. That was wrong and also unhealthy. I believe we should always evaluate different technologies and if it does not match our criteria then we should just move forward and choose a different technology.
Instead of fighting and complaining, let’s just choose best technology for the job. Sometimes it can be native but sometimes it can be cross platform like (React Native or Flutter). I learned so many things from React and Flutter, which I apply in SwiftUI. It is true that learning different languages and frameworks can make you a better developer. When I am teaching React for a coding bootcamp, I always encourage my students to take a look at React Native since it is similar and it will allow them to write mobile apps. Some of my students ends up working as a RN developer. This makes me super proud and happy!
The bottom line is choose the best technology for the job. Keep learning and enjoy!