Are you still writing native iOS or Android code for creating mobile apps? May be it is the eternal love for platform specific programming languages and tools, skill set issues, a very specific need of the application or just ignorance. It is high time to re-evaluate the approach to mobile app development and choose right set of tools and frameworks to get the job done for higher ROI and rapid development.
I spoke to many developers around and most of them do not prefer developing mobile apps in native iOS (Swift, objective C), android (Java) or Windows (.Net) specific programming languages and tools since their apps target multiple platforms.The reasoning is that native development requires specific skill set for each platform and higher development efforts in general.
We started off with React Native few months back and I must say that it is a very powerful option for app development and fun to work with. Ever since Facebook included Android support in React native, we are more or less settling for it. Having said that, React Native is not the only animal in there, there are other great options like Xamarin. Xamarin is among the most feature rich, established and easy to use platforms for rapid mobile app development.
Course not to be missed (Have a look for sure, 80% discount) - The Complete React Native and Redux Course. In this course, you build iOS and Android apps from scratch, at blazingly fast speed.
I will not be covering here all the platform options for app development but different development approaches, with a representative platform, to understand the concepts and methodology of each development approach.
Mobile App Development – Platform Options
There are many platforms and tools available out there in the wild when it comes to mobile app development. Over the last couple of weeks, I have been evaluating various development options and came to the conclusion that there are five different categories to choose from, as listed below –
- Native Development
- Cordova based Hybrid app development -
- Mobile app development in React Native
- App development using Xamarin
- Last but not the least DIY (Do It Yourself) tools
All the tools falling in one or the other category mentioned above offer different set of features and require specialized skill set for app design and development. Selection of the right tool/platform upfront is a very crucial factor in the long term mobile app development strategy.
Which Mobile App Development Option is Better?
Different alternatives to native code development have their own advantages and philosophy behind. No one tool or approach can be clearly marked as a winner since it all depends on multiple factors. The most prominent factors in choosing a specific app development platform or approach depends on the below key factors –
- Skill set of the individual or development team
- Unique requirements of the app
- Targeted user segment
- Long term strategic vision of the individual or an organization.
If you are making apps for one specific platform only, then going native (swift, objective c for iOS and java for android) is the preferred choice, simply because you get the best performance and the latest APIs and features to work with.
You are targeting only one platform, so, no worries about code reusability. The main reason to deviate from native should be the skill set of the development team, though not the only one.
Let us look at some of the key aspects of various alternatives to native development.
Cordova Based Mobile App Development
You might want to check out this popular article - Best Hybrid App Development Frameworks.
How does your App access the hardware components?
The biggest advantage you get here is the single code base to develop and maintain, and that too, without learning any new technology, if you are already a web developer.
The key point to notice here is that the application runs in the webview, and not natively on the hardware, which makes it less performant than the native Android or native iOS applications. But then, all apps are not required to be super performant, it is a tradeoff and decision that you need to make upfront.
Cordova is free and open source under Apache license and is distributed by The Apache Software foundation. You can read more about Cordova here at - cordova.apache.org.
Mobile App Development Using React Native
React native is relatively new but an excellent option for rapid mobile applications development, and you can target both iOS and Android. Android support has been added recently. React native is the open source framework from the house of Facebook and is used for developing native iOS and android apps.
Even though React Native is a new entrant in the market but many developers and organizations across the globe have started developing cross platform mobile apps using React Native, Some examples apps include SoundCloud Pulse, Discovery VR, Facebook Ads Manager, Bit Wallet, Squad, Myntra and Running.
Apart from React framework, you need to understand JSX, JSX is the XML like syntax extension of ECMAScript. Once you get hands on with JSX, writing React native UI components become absolute breeze.You also need to work with Xcode, iOS simulator and command line tools for building Android version of the app. Additionally, Knowledge of application architecture framework like Flux and related packages like Redux and Reflux etc. help organize and speed up app development.
React Native vs Cordova or PhoneGap
For example: Tab Creation – For UITabBar of iOS there is TabBarIOS component in react native and for Drawer of Android there is DrawerLayoutAndroid component in React Native.
Above example also conveys that code reuse between Android and iOS apps in react native is not purely 100% but can easily be targeted anything from 85 % - 100%, depends on what you are developing.
Recommended Course - The Complete React Native and Redux Course.
You can know more about React Native here at - react native.
Mobile App Development Using Xamarin
Xamarin is another animal in the wild for building native mobile apps and it is one of the most used platform for app building. With Xamarin, you can build native android, iOS, windows and Mac apps in C# language.
Xamarin is not the easiest to work with but gives you the performant mobile applications. You develop code in C# and Xamarin compilers compile the code into native packages of respective platforms, may it be iOS, Android or Windows Phone. For iOS, the code is directly compiled to the ARMS assembly binary, so it is purely native.
Xamarin.forms is another feature rolled out recently by the Xamarin folks, using which you can achieve 100% code reuse while developing native user interfaces for android, iOS or Windows. The UI controls of these forms are mapped to native controls at run time and hence 100% reuse is possible. Though, it doesn’t cover each and every native control but cover what 90% of the applications need.
Xamarin is the adopted baby of Microsoft. Microsoft recently acquired Xamarin after which its usage is increased further and more features are getting added faster than ever before.
C# developers feel home developing applications in one of the most advanced IDE's, visual studio. Mac users use equally feature rich Xamarin studio for development.
You can know more about Xamarin here at - xamarin and also check out this fantastic course - Xamarin Forms: Build Native Cross Platform Apps With C#.
Mobile App Development Using DIY App Builder Tools
Do it yourself tools are not for innovation or for developing new applications, but, these are quite useful to get an app to the market in just a couple of days. These tools come packed with tons of app templates that are ready to be published on apple’s app store or Google play.
Most of these tools are cloud based app development platforms, and let you build mobile applications without the worries of setting up your system. Do It Yourself tools offer intuitive app building interface that can be used to build apps without any prior development experience.
You can choose an app template, customize and configure it your way and you are all set with an application of your own. Individuals and small organizations are creating mobile apps using these tools and getting good ROI and faster time to market.
UI/UX designers have always been dependent on programmers to get their dream app to the market, but now days, UI/UX designers can create mobile apps with these drag and drop tools, and have an edge over developers. Graphic designers can create and incorporate great looking graphics in ready to use app templates to make apps look unique (not that much though). The branding touch given by unique and brand specific graphics and colors make the app standout and look personalized.
In this fast paced world, when your target is revenue generation, it may not always be a good idea to focus on innovation and creativity and start building apps from scratch, existing app templates customized to your or your customer’s needs may just work great.
You might want to check out this popular article - Top 10 DIY mobile app makers.
There are different methodologies to app development and many platform choices, not one is the universal fit for all kind of app development needs.
Many developers just love Java and continue to do Android development in Java without thinking twice about other available options, same goes with developers working in Objective-C. Not to argue, Native app development gives the best performance and smooth user experience.
Xamarin is no different than React native, but then C# and .Net technology expertise is less common among web developers. However, for Microsoft .Net lovers, Xamarin arguably always becomes the platform of choice.
Last but not the least, DIY (Do it yourself) Platforms – Smart app developers do not ignore DIY tools specifically when it is not about enterprise app development. These drag and drop tools are a blessing for non-developers who want to get their apps listed on App Stores without bearing the development costs.
Hope you enjoyed the article. Do share your thoughts with noeticforce.com community via comments. Cheers!
Recommended Course - Xamarin Forms: Build Native Cross Platform Apps With C#.