2019 Mobile App Development — Is Cross Platform still a Fad?
The invention of Mobile has revolutionized the world. Mobility has reshaped mankind by having a wonderful impact in the most fundamental aspects of our lives. With the advent of smart phones, mobility has a greater reach than any other technology. It’s amazing to see that we have 8.98 Billion mobile users now surpassing the world population of 7.68 Billion.
The worldwide smartphone market has two clear leaders now — Android with 75.55% and iOS with 22.4% market share. However, iOS is dominating the US market with 54.74% with android trailing at 44.89%. The app economy has skyrocketed with 2.6 Million Android apps on Google Play and 2 Million iOS apps on the Apple App Store.
Though Android has been leading the global market, Apple’s iOS platform offers higher monetization prospects for developers. So, as a developer — what do you do? Develop apps for both or pick one platform? Writing for one platform is already hard — writing for two or more would be even more difficult, time consuming and expensive.
However, there are solutions that allow building applications once and deploy them across multiple device platforms. The objective of this blog is to educate mobile application developers on options available, their advantages and disadvantages and a clear set of recommendations for them to make decisions.
The Concept of Build Once — Deploy in Many
The cross-platform solutions available today allow developers to create mobile apps that are compatible across multiple operating systems. These frameworks provide developers with a set of tools that help re-purpose code and increase productivity.
Now, let us look at different perspectives of users in the mobile ecosystem with respect to the cross-platform development:
- Cost Savings: Reduced development costs where you write the code once and run everywhere. This re-usability of code improves the cost-effectiveness of businesses.
- Easy Maintenance: As there is a single piece of code that works across platforms, it gets much easier to deploy and maintain it.
- Write Once Deploy in Many: A blessing for developers who do not have to write code for every platform.
- Easy Management of Code: Bugs can be debugged once and deployed across multiple platforms — making life simpler for developers.
- Performance Due to cross platform needs, the size of code gets bloated causing loading and performance issues.
- Consumer Experience There are experience differences between Android and iOS — for instance a swipe to where the settings menu is available. With cross-platform development, platform-specific experiences become difficult which results in losing on the ‘native feel’ of an app’ for that platform.
Cross Platform Frameworks 2019 — As it exists today!
Having looked at different perspectives on a mobile cross-platform, here are some competitive and top performing frameworks in the market today.
Cross Platform Frameworks 2019 — As it exists today!
Xamarin enables developers to create apps for iOS, Android, Mac, and Windows — with a 100% native look and feel.
Xamarin uses C# to develop applications and follows the MVC — Model/View/Controller method that helps determine parts of the code using native UI elements. With its Native User Experience (UX) there is a different user-interface layer for each operating system that can be used to create native-looking applications. Xamarin’s Easy integration helps re-purpose code to create native UI. It also provides 40+ cross-platform layouts & controls to develop on.
However, Xamarin’s code linkage and libraries to target OS environments increase the size of the apps — thus nearly doubling the time to download and load them. The Xamarin developer community is much smaller, thus making it very difficult to find experienced developers. Though Xamarin promotes, “write once, deploy anywhere” — some code must be written individually for each platform which is time-consuming.
React Native apps can be modified and reused on different platforms allowing immense business expansion possibilities. 90% of the code can be shared between platforms which helps in rapid & iterative development. The modular architecture helps upgrade apps at a faster pace. Since React Native deals with native components for screen rendering, execution is faster, stable and reliable.
Flutter is an SDK from Google to create native Android and iOS apps with a single codebase using reactive development architecture. It is the fundamental method for creating apps for Google Fuchsia, another operating system by Google. Flutter’s Object-Oriented Language (OOL) uses Ahead-of-Time compilation techniques that speed up the launching of an app.
As soon as the code is edited, it gets reflected instantly in Flutter. It is simple to setup and the Hot-reload doesn’t take more than milliseconds to reflect changes, helping developers to maintain high speeds and dynamicity. Flutter apps are cross-platform, so the testers do not always require running the same set of tests on different platforms, thus allowing faster testing and delivery. With built-in design-centric widgets, high-end development tools and advanced APIs, Flutter can create excellent user interfaces. The UI content do not have to be updated manually as they are visible automatically as soon as variables are updated. Debugging is also fast due to DART programming language.
Since Flutter is relatively new in the cross-platform family; it needs continuous integration support through maintenance of scripts. The limited libraries available today does not always provide all the functionality needed by developers. Flutter apps are not supported on web browsers and have larger file sizes than native apps.
PhoneGap supports native device features like accelerometer, compass, GPS, camera, storage, contact, and network through APIs. The single code base of PhoneGap can be used to create apps for major mobile operating systems and mobile web. It provides rapid testing and deployment of apps. PhoneGap can be the best bet for apps that do not require heavy usage of native OS features. The robust backend system speeds up the development process and reduces the efforts of developers. PhoneGap is powered by Apache Cordova which contains several additional tools and other services of Adobe.
However, PhoneGap is not recommended for high performance applications and hardware intensive apps like gaming due to its poor performance and lack of UI Widgets. It also does not support plugins with hooks. For the native look & feel, developers need to use 3rd party frameworks that sometimes differ in terms of quality — thus making it inefficient.
The Ionic SDK is used for hybrid mobile app development using Web technologies like CSS, HTML5, and Sass, JS enables quick development and reduced rewriting, thus resulting in low costs, and minimal maintenance. These can be deployed across different devices with different OS including native functionality, customizable tools and exhaustive gestures to enhance user-friendliness.
Ionic apps can run on different platforms without the actual need to write code individually. Ionic has many default CSS & JS components to create a mobile app. With a single code base, Ionic apps are compatible with most of the mobile devices giving a unified look and feel. Ionic also integrates with Angular JS becoming a robust structure making the code more manageable. Ionic framework is great for quick prototyping and its development cost is less compared to native apps.
However, Ionic apps do not provide as much security as native applications do. Hence, they are not recommended for developing security intensive apps. There are some native functions which are not available in the Ionic framework that result in developing plugins from scratch. Performances of animations, network operations or scrolling are not as effective as native applications.
NativeScript framework is good for building truly native mobile apps. JS, Angular, XML, and CSS-like languages are used to develop NativeScript apps while employing native APIs for each platform resulting in high performance and better user experiences. Developers can integrate CSS animations into their NativeScript projects.
The whole stack is available on iOS and Android platforms. Software development is quite fast as the framework consists of many great tools for productivity and developer consistency. Also, developers can easily use, modify, license, and distribute their software without having to classify their use as personal or commercial, as its core is licensed under Apache 2.0. Implementation.
NativeScript is new and there aren’t many official plug-ins as yet and it does not have a big community. Developers can’t use React with NativeScript yet, only their MVVM style of building applications is available.
Following are some top factors differentiating the above leading cross-platform frameworks
Cross-Platform Technology — When/Why/What/How to Use?
There is no hard and fast rules for using mobile cross platforms for app development. Nevertheless, before jumping on a conclusion on when to use and which one to choose, developers should always have an idea on the strength of each framework. Developers should always remember that there will be trade-offs as they can never become a substitute for native app development.
For developing mobile apps that have a simple UI and a uniform requirement across major platforms, cross-platform frameworks are recommended. They have the following advantages:
- Code Re-usability: The biggest advantage where code is written only once and re-purposed for multiple platforms. So, that’s half the time, effort and cost when compared to native app development.
- Consistency in User Interface: As the same framework is deployed across all platforms, the look and feel of the apps are uniform across platforms.
- Cloud Integration: With one source code, there is a universal compatibility that can help integrating with enterprise grade plugins.
- Shorter Time to Market: As the turnaround time is less for such apps, time to market is short.
- Fewer Technical Barriers: Developers don’t have to learn specific languages. They only must be proficient in cross-platform app development.
- Lower Costs: As the code is written only once, there is a lower cost of development when compared to native app development.
A cross-platform should not be chosen when a mobile app must be developed keeping the ‘authenticity’ of a platform intact. Below are some disadvantages to look for as consequences.
- Limited Features: The chosen cross platform framework may not support all the features of different operating systems which does not allow the developer from creating a striking design.
- Sluggish Behavior: As there are too many cross-compliance codes running at the same time, it is bound to affect performance of apps.
- Compromised User Interface: A single cross platform framework cannot satisfy all the requirements of different platforms. This leads to limited user experience.
- Limited Tools: Frameworks tools may not be supported by the required platform which leads in the investment of extra time and effort to use native tools to accomplish certain tasks
Hence, an app cannot be developed for one platform and expected to perform similarly for other platforms. Every platform is unique, has its own set of functionality, design guidelines, and user experience.
My Final Thoughts
Cross Platform solutions have existed for a while now. However, they did not gain enough mileage in the past due to fragmentation in mobility platforms. Now that the world order has been set with two large platforms — Android & iOS — cross platform development is bound to experience much more advancement soon.
On the other hand, there are two major issues lurking around the cross platform development.
Consumer Experience — Though cross platforms let us ‘write once and deploy anywhere’, yet every platform is unique and provides a different experience to their users. For Example — An Android device has a back button to return to the previous button. Whereas iOS has “back” chevron on the top left corner of the screen. Thus, developers need to really focus on consumer experience while developing their mobile apps for multiple platforms.
Performance — Though this may sound as an advantage but is a drawback that the current cross platforms can mostly be used for developing simple apps that don’t need major computations/graphics, faster responses or better throughput. Cross platform development is still NOT performance optimized.
With tech giants like Facebook and Google putting their resources and implementations on cross platform frameworks, they are likely to get more efficient and optimized in the next few years. However, as a developer, understand the needs of your customers and make an informed decision on which areas to go after — Native, Hybrid or Cross Platform.
Have you used Cross Platform Development and what are your thoughts on it?
. . .
. . .
This post was written by Asokan Ashok, the CEO of UnfoldLabs. Ashok is an expert in driving customer insights into thriving businesses and commercializing products for scale. As a leading strategist in the technology industry, he is great at recommending strategies to address technology & market trends. Highly analytical and an industry visionary, Ashok is a sought after global high-tech industry thought leader and trusted strategic advisor by companies.
Entrepreneur. Inventor. Product Ideation. Strategist. Visionary. Evangelist. Architect.