Enterprise Approach to Mobile Applications, Part 2: Native vs. Web vs. Hybrid vs. Cross-Platform
In the second part of our blog dedicated to mobile application development, we’ll review existing approaches and factors to consider when you’re choosing a mobile application development platform.
First, let’s take a closer look at current platforms and review some numbers and graphs. Alternatively, you can skip this paragraph and move straight to the review of development approaches.
The diagram below, published by Statista, illustrates the data on the market share of mobile operating systems in the context of sales to end users starting from 2009 till the Q1 of 2017.
The similar figures are given by IDC as seen below: in 2017, Android OS continues to dominate the market with an extensive 85% of the world handheld devices sales volume.
At the same time, according to NetMarketShare research, the market share of platforms based on devices in use as of June 2017 is a bit different:
As we may see from the graphs and figures above, the smartphone market is split between the two major platforms – Android and iOS. A lot has been said about them, and they need no introduction. Developing and targeting each of these two platforms differs a lot, as they both have their own standards, guidelines, and specifics.
The third mobile platform, which is currently lagging behind, but should be named, is Microsoft’s UWP. Microsoft has gone through a long way of introducing and killing their own platforms, and its latest Windows Mobile and Window Phone are slowly fading away. However, UWP is alive and kicking, and here’s why. UWP is a new standard introduced in Windows 10, which allows building scalable and elegant cross-platform applications for desktop PCs, Xbox, HoloLens, IoT and mobile devices at the same time. Despite the current withdrawal of Microsoft from building standard mobile devices, UWP will play a major role in reportedly upcoming ARM-based cellular handheld PCs, powered by full Windows 10. Thus, developing a UWP or converting your standard apps into UWP, may become an important strategic task for enterprises, which use and rely on Microsoft stack.
At the same time, most enterprises these days are looking for iOS/Android development and very few opt for UWP applications yet. Businesses are still reviewing and considering adoption of Windows 10, with 68% of companies still using Windows 7.
Thus, selecting the right approach to application development is an important, strategic and, sometimes, hard challenge.
Approaches to Mobile App Development
When selecting the right approach, you’ll need to consider a lot of factors, such as user base and targeting, time to market, distribution, code reusability, app scalability and performance, and of course, the amount of costs and availability of required skill sets.
Right now, there are 4 main approaches to mobile application development:
- Native app development
- Web apps
- Hybrid webview (wrapped web applications)
- Cross-platform applications
Native vs Web vs Hybrid vs Cross-Platform
Each approach to mobile application development has its own pros and cons, so let’s review them one by one.
Native Platform Development
Native application development is a traditional and the most reliable way to develop mobile apps. When opting for a native application development, you can be sure your app will be developed according to the official guidelines and will be fully compliant with platform standards in terms of UI and UX. Normally, native apps work well in terms of performance, security, and reliability, having a flawless integration with mother platforms.
When it comes to development, each platform has its own development kits and technologies specifically tailored to the needs of developers, making native development for the developers smooth and silky:
All of this, however, comes at a price. Native application development requires large budgets, and here’s why. Unfortunately, native code, used for development on one platform, can’t be reused for another one. At the same time, native applications require different sets of skills per each platform. Thus, if you want to target users of two or more platforms, you’ll need to increase your team size and find appropriate specialists. In its turn, this leads to an increase in costs you need to invest in development, and, consequently, into the maintenance of the application.
Moreover, when adding new features to the application, their implementation and functionality may differ – some things easily achieved on iOS can take a lot of time on Android, and vice versa. The time to market may differ as well. As a result, your users might end up with different versions of the same app, leading to inconsistent user experience across different platforms.
B2B and B2E native application development is always a perfect bet for large enterprises, which require excellent productivity, performance and high availability of their apps, and have no concerns over budgets, long-term planning, and availability of developers. If, however, you are limited by budget, you may still consider native application development by selecting and targeting the primary platform of your users.
Web Apps – Adapting Websites for Mobile
Building web apps is a very popular and cheap way to create HTML5-based applications. All you need is to tune your website to get a mobile look and feel. This can be done especially fast nowadays, as lots of website platforms come with the integrated responsive design. Thus, the creation of such apps requires a relatively moderate knowledge of CSS, HTML-5, and JS. While making a web application results in cutting costs on additional programming and very rapid time-to-market, this approach comes with many limitations. Web application opens in a device browser just like any other website, thus, users do not need to install them, which, however, effectively results in fewer options for marketing. Moreover, web apps can’t use most of the mobile device features yet, may be limited in terms of browser compatibility and require its users to have an online connection.
Hybrid WebView Containers
Another approach is to wrap your web app into a container, e.g., with the help of PhoneGap, Cordova or Ionic. In this case, your application may mimic standard UI/UX of a platform, and even have some basic integration with the system. In order to tune a web view app and uncover the full (to a certain extent) potential of a specific platform, you will still require conducting extra native programming and use additional plugins. Most modern native features and integrations will most likely be missing from such app. Such application can be uploaded to the relevant app store and will look just like a native application. However, WebView apps will be limited in functionality and will feel rather different to native apps in terms of animation or scrolling, as they won’t support advanced graphics or animations.
Comparing native vs hybrid vs mobile web, the weakest point of both web and hybrid webview applications is their scalability: the more features you add, the heavier and clumsier such apps become. This results in unwanted slowdowns, bad and unstable performance. At the same time, it will be much harder to update, maintain and support such app, which again leads to increase in costs and resources.
Building webview apps is only feasible when you need to quickly roll out your mobile app with minimum features to your end-customers or test your product idea while being rather limited in resources.
Cross-platform Solutions: almost pure Native approach
Cross-platform approach is the best choice if you want to develop your applications once and run them anywhere. This approach allows saving time, cutting costs for development and maintenance, and getting an app with almost perfect performance and excellent scalability. Cross-platform development enables accelerated and quick time-to-market, as you can reuse approximately 75% of the code, used for business logic, data access, and relevant services. Unlike Hybrid approach, cross-platform frameworks allow access to all devices APIs. This approach comes bundled with simplified testing and maintenance, meaning you need to spend less time to polish the app. You may still need to hire extra specialists to design an appropriate platform-specific user interface (such as markdown or icons) and integrate platform-dependent features.
Right now, there are several platforms, allowing to build cross-platform mobile applications. The best way to develop cross-platform mobile apps is to engage a team with profound knowledge and mastery of the following development languages and IDEs.
- Microsoft Xamarin. With the recent acquisition of Xamarin and its subsequent integration with Visual Studio, Microsoft has empowered developers with one of the best ways to build cross-platform mobile solutions for iOS, Android, Windows, and even macOS simultaneously! Xamarin requires knowledge of C# (Mono .NET) or F# and Microsoft tools. Effective and smooth, Xamarin offers a variety of sub platforms for building native app code, UI, testing, etc. With Xamarin it’s possible to develop up to 75-80% of the shared code, which then should be tailored to suit the platform UI guidelines. Xamarin.Forms can boost this number to up to 90% of the UI code, if you want to create a unified UI for all platforms. Xamarin comes with lots of community-developed components and is suitable for both small teams and large enterprises. Used by thousands of companies, such as Bosch, Cognizant, or Kimberly-Clark, Xamarin is a top choice for cross-platform development. However, finding available Xamarin developers might still be a challenge.
- Appcelerator Titanium. While not being purely cross-platform, Titanium is another open-source platform for building native apps coming with a large array of extensions and mods and allowing to reuse 60-90% of the code. It helps to speed up the development process and saves developers’ time, as they need to write fewer lines of the code with Titanium. Unfortunately, that works well if you do not need to design complex app, as the simplicity of the code makes future app support rather limited.
In the end, selecting among Xamarin, React Native, NativeScript or Titanium is more a matter of preference or availability of necessary skills. Backend developers, who are already familiar with Microsoft technology stack, can quickly learn Xamarin, as they already know C#. At the same time, frontend developers can quickly master other technologies, which require knowledge of JS. Ideally, companies need to have full-stack developers as well as domain specialists and invest in employees’ talents and skills development. Domain specialists effectively solve specific challenges cutting through them like a hot knife, while full-stack experts can be constantly shifting from one technology to another, which is heavily sought for due to quickly evolving development environments and tools. Large IT Service providers have an advantage here, as they constantly update and enhance their technologies, platforms and strengthen their intellectual capital, which allows them to quickly form a team, suiting specific project needs.
In the next part of our article, we’ll review how various enterprise application components interact and correlate with each other during cross-platform mobile app development.