Cross-platform apps: Yay, or nay?
It is a question we often evaluate at Appster. While much has been written about choosing the right mobile platform for your product, there has yet to be a conclusive answer.
After all, it is a complex decision to make. While developing a cross-platform app that allows businesses to reach their target audience spread across various platforms simultaneously sounds good in theory, the practical aspect is far from perfect. Not only does every platform has its own set of advantages and disadvantages, the specific benefits and downsides they they have on your business depends upon your specific requirements, as well as the objectives of your business.
Below, I will dive into what cross-platform development means and how it works, along with a in-depth look into various cross-development platforms and the pros and cons of each. Next, I will elaborate on five questions that will help you assess if cross-platform apps are indeed the solution for your business.
What is cross-platform app development?
Cross-platform mobile development refers to the development of apps that can be used on multiple mobile platforms, such as Android, iOS, Windows and BlackBerry. Moving away from the concept of native app development for every platform (where an app is developed exclusively for a singular platform which has its own unique code), the cross-platform app development process entails the development of a singular app source code on a cross-platform software, which is then compiled into native code for different operating systems.
How does cross-platform app development work?
The main purpose behind the creation of any application is to attract as many users as one possibly can. That becomes easier said than done, since mobile platforms are scattered across millions of users using different and diverse platforms (like Android and iOS).
One thing that businesses can do to reach multiple platforms at the same is to develop apps in each target platform’s native language and release them at the same time. This would require them to hire a separate team of developers (one for each platform) with back-end experts to boot. While this approach is helpful, it involves spending a lot of money behind native app development in each platform, which may turn out to be counter-productive in the long run. Cross-platform mobile development helps cut back on this excessive spending of time, money and resources by making a singular source code “adapt” to working in varied digital environments.
Another reason why cross-platform apps are becoming the go-to option for businesses is the growing trend of BYOD (Bring Your Own Device). With a consistent rise in the number remote workers, occasional office-goers, and even regular office-going employees who use their personal devices (instead of company-issued devices) in the workplace, it is important for business entities to make their corporate mobile apps seamlessly adaptable to multiple mobile devices and digital environments. The easiest and most cost-effective ways to achieve this is to develop cross-platform mobile apps.
Pros and cons of cross-platform mobile app development
As is the case with any method in development, cross-platform app development has its own set of pros and cons. Listed below are the pros and cons of mobile app development platforms with an emphasis on two emerging platforms – Xamarin and React Native.
Two advantagesThe Pros of cross-platform app development
1. Lower development costs and less time taken
Native app development for multiple platforms requires a business to manage multiple codebases, developer teams and toolkits, languages and methodologies at the same time. Not only is this a time-consuming process, it needs much more manpower and is costly to boot.
With cross-platform app development, businesses can work with a singular developer team to develop apps for multiple platforms within a limited timeframe. All that the developers need to do here is create the source code for their app and then “tune” the functional and visual platform specifics according to the target mobile platform. With such a system in place, developers can target any number of platforms at the same time, and even adapt to new platforms – should the need for it ever arise. Making updates in the app and fixing problems would also work in a similar manner, which will make the process of debugging and maintenance just as fast and uniform across platforms.
Thanks to a faster development process, businesses can spend their saved-up time, manpower, money and other resources on other aspects like research and development.
2. Bigger reach, better exposure
Behind every mobile app development project, there is a clear two-fold goal – to engage customers completely, and to engage as many customers as is possible within a certain timeframe. This becomes difficult with mobile use using platforms based on diverse. Covering platforms separately will take a longer amount of time for businesses to reach their audience, no matter how smart they are with their money and manpower.
Cross-platform app development helps businesses to reach a larger user base in a shorter span of time by serving different platforms simultaneously. When a given app is available across multiple mobile platforms at the same time, the question of favouring one platform over the other gets eliminated. This allows users on different platform to engage seamlessly with the app, and with other users who may or may not be on the same platform.
Cross-platform app development also helps further B2B goals and improve business-employee working. In an age when location-independent working and BYOD is on the rise, having an app that works on varied platforms comes very handy.
Tapping into the advantages that every cross-platform tool brings
Native user experience
One of the main concerns that arise during the use of cross-platform tools is to make apps that look and feel as close to native as possible on any given platform. Xamarin helps developers get closest to this nativity by allowing them to take advantage of native UI toolkits.
The biggest strength of Xamarin lies in the fact that its IDE enables code completion in C#, which lets developers tap into the advantages of native UI, gives them access to specific-device features, and therefore allows them to make apps which work just as well as their natively developed counterparts.
Xamarin also allows for quick and seamless code sharing across platforms, which helps in shortening the development cycle.
Works well with large enterprises
Xamarin uses C# complemented with the .NET framework, which makes it a a good match for large enterprises that utilize Microsoft tools or already have a team of C# or .NET developers in place.
A modern version of C++, C# is an object-oriented, simple, type-safe, general-purpose programming language. While being object-oriented allows the simplest of data types to be treated as objects, the type-safety feature helps avoid typing errors which can skew the program behavior. C# also has a simplified syntax, which eliminates the need for using headers and pointers. Complemented with Microsoft’s .NET framework, the two form a coding environment that makes asynchronous programming a smooth-running process.
Has its own education portal
Yet another feature that sets Xamarin apart and makes it more user-friendly is Xamarin University. This is an e-learning portal meant to help users become familiar with the package. Xamarin University consists of classes for every skill level and offers various formats for learning, from guest and office lectures to self-guided courses and live online classes.
In contrast to other cross-platform apps, React Native offers a ‘hot reloading’ feature which allows developers to make changes to an existing app without having to rewrite any code or change the state of the app (even temporarily).
The developer can simply apply React Native UI components to the code without having to rewrite the app – while the app is running! Changes to the app show up as soon as the change is made. Even if the app has been built using frameworks like Cordova or Ionic, the code can also be reused easily with a plugin.
These features of React Native helps in in increasing productivity within a short timeframe, and therefore helps save on time and money.
One of the biggest reasons why React Native attracts a large number of developers (despite its emerging status) is the fact that it has been developed by the efforts of the developer community.
React Native has its roots in a hackathon effort that had started in 2013 to develop a mobile alternative which would combine the separate worlds of mobile app development and powerful and agile native React environment. The result of this was the creation of React Native, which continues to be contributed to by the development community.
Working in community-driven environment has certain inherent advantages, such as an entire community of JS and native developers who are happy to share their knowledge and expertise.
The Cons of Cross-Platform App Development
1.Limited feature support
Cross-platform app tools make serving every mobile platform their priority. In trying to achieve this, however, they often have to exclude the more customised and unique features of mobile platforms. As a result, cross-platform tools tend to not provide certain attractive, eye-catching (through mobile platform-specific) features such as graphic support and 3D, which in turn make for an app which may not end up as customised and it should.
2. Compromised User Experience:
The key metric behind the success of any app is the amount of positive user experience it can generate. This often becomes a challenge with cross-platform app development, which while offering a uniform user experience over different mobile platforms, tends to miss out on harnessing the unique features, style and layout that is specific to a platform.
3. Adherence to App Store guidelines
Getting apps approved by the App Store is a key stage that any app developer needs to successfully pass through in order to get it published. This tends to make things complicated as some platforms (such as Apple) have guidelines that are more strict than others. With cross-platform app development, where the source code is reused for each platform, there is a significant risk of apps getting rejected due to App Store guideline violations.
While developers have the option of write user interface code specifically for each platform (a feature that some tools enable) with the help of native IDEs, this may end up consuming the time which cross-platform tools intend to save.
4. Lags behind in terms of implementing new features:
When it comes to mobile platform, updates are pretty much the norm. Any mobile platform makes regular updates to fix problem and upgrade its UX. This often ends up being a massive shortcoming for cross-platform tools may since they tend to lag behind when it comes to incorporating platform-specific updates in their own system. Therefore, it takes a while for new plugins and changes to show up on cross-platform tools.
Dealing with the disadvantages that each cross-platform tool brings
Larger app size
Depending on its functions and level of complexity, Xamarin apps are generally larger than native apps. Here’s an example to illustrate the difference: on a Xamarin forum thread, developer VinirShah shared that a Xamarin app coded by his team occupied 3 MB, while a similar app written in Objective-C occupied just 172 KB. As such, Xamarin apps require additional optimisation to keep the file size reasonable.
Compared to the community of Android and iOS developers, the number of Xamarin developers are very less. This makes finding and hiring experienced Xamarin developers a very difficult and challenging task.
Requiring a basic knowledge of native languages
In case of Xamarin.iOS and Xamarin.Android, the developer will need to write at least a layer of platform-specific code. This will require the developer to have some basic knowledge of native platform technologies.
Not suitable for apps with heavy graphics
Although developers can share code across platforms with Xamarin, this ability is limited to the app logic, while the UI code will largely be platform-specific. For those building gaming apps, or apps that require features like rich custom UI and/or complex animations, using Xamarin becomes counterproductive as only a small amount of code will be shared.
The young ecosystem of React Native means that the tool is constantly evolving, with library updates released just about every month. While this means that users are getting additional tools, they would also need to invest time and effort in studying the documentation to ensure that these tools work with previously created APIs.
In some instances, a lack of custom components may mean that developers need to build their own solution from ground up. This was a problem faced by the Netguru team – they had problems with making shadows work in their React Native app as the custom library was only available in beta version. As a result, they had to build the required module on their own.
Having a young ecosystem also implies a less-than-ideal user experience, especially when it comes to navigation between displays.
Lack of multithreading
React Native is created and owned by Facebook, which pours in several of its own resources to make sure that the platform remains reliable and guarantees constant development of the platform. On the flip side, this means that any developer working on the platform is ultimately dependent on Facebook and operates on its license.
Facebook also reserves the right to suspend revoke the licence (BSD) to use React Native should developers ever get into a patent-related dispute with the company.
Does my business need a cross-platform app?
So there is a solution that will help your business solve the problem of having to prioritise one mobile platform over the other by publishing apps across platforms simultaneously. Sounds good to just move along with it, right?
Well, not quite.
As mentioned above, it is one thing for cross-platform app development and cross-platform tools to have their own set of pros and cons, and another for the effect they will have on your business. Whether cross-platform app development is the right for your business or not depends upon the nature of your business, its objectives, and your priorities.
Here are five questions to help you decide if cross-platform apps will be a good fit for your needs:
What is my timeline?
The first step you’ll need to take is to map out your app development timeline. If you’re planning to release both the iOS and Android versions of an app, which will you launch first? And how much time do you have until you release the other version?
Once you have your timeline mapped out, you’ll have a clearer idea of which method will better suit your needs.
For example, if you need to release an iOS app on a tight deadline, and intend to launch an Android version at a later stage, native app development may be a more suitable option. Swift, the programming language developed by Apple is one of the newest programming languages, and it’s designed to be easy to use. Developers can see what they are creating with the code as they write it, and the language incorporates common words and phrases like “add” and “remove”. As such, it’s much faster to develop in.
In a reverse scenario – where you need to launch the Android version within a short span of time – cross-platform development may be a better option. That is, because Java, the default language for Android development is more complex, and may present greater difficulties.
What’s my budget?
When you’re deciding between platforms, you will need to look beyond the current costs of the project, and instead, evaluate the total cost over time.
While cross-platform development is typically cheaper, it may incur additional costs gradually. As cross-platform frameworks are newer, hiring or putting together a team of experienced developers may be costlier or take a longer time. On the other hand, it is comparatively easier to hire Java or Swift developers.
You’ll also need to assess the requirements of your app and business. For example, if you are planning to release new features or implement changes on a continual basis, cross-platform development will create greater cost savings as you’ll only have to manage a single codebase.
What’s the intended feature set and scope of application?
If you are creating a business around your mobile app, or intend to implement complex features or animations, going native is the clear winner. Native apps offer fast integration of new features, allow full access to a device’s services and features, automatic monitoring of the app’s performance and better performance with animations and rendering.
Companies that have gone native in a bid to improve their app performance include Facebook and LinkedIn. Facebook encountered issues such as the lack of smooth scrolling, delays in image loading time and broken AppCache, while LinkedIn wanted to resolve problems such as the lack of memory space for users, absence of debugger and performance tools, as well as animation performance issues.
But what if a simple app that requires little customisation will fit the bill? In this case, opting for cross-platform development is a good start. Some examples include to-do list app Tasky, consumer banking mobile app Burgan Bank and expenses management tool Captio.
Who is my target audience, and where are they at?
If you are targeting users across multiple platforms and devices, a cross-platform app is likely the best option.
This was the case for international express transport company MRW. With more than 10,000 employees over 1,300 franchises, the organization needed an app that worked across multiple platforms to facilitate delivery coordination. While it had started off with a native app for Windows, MRW switched to using Xamarin so it could build for Android and iOS while keeping within time and budget constraints.
Does cross-platform development fit in with my overall digital strategy?
Start off by reviewing your current digital strategy and resources. If you have built a responsive website with complex functionalities and interactivity, it may require extensive resources to adapt these features for a cross-platform app that will match up to the demands of your users.
On the other hand, if you do not/ t yet have a website, cross-platform develop may present greater cost savings by enabling developers to build a mobile, desktop and website app using a single codebase.
7 Top cross-platform development tools
As of 2018, there is no dearth of cross-platform apps in the market that allows developers to write their code once and then reuse it on different platforms.
Here are some of the top cross-platform development platforms in the market today. We will be taking a closer look at some of these in due course:
The Microsoft-owned software company allows developers to apply its C# codebase to iOS, Android, and Windows simultaneously. Developers can take full advantage of the in-built Git integration and the ability to work with native IDEs, APIs and languages, and therefore build their app at a reduced cost. Xamarin also boasts a cloud service, allowing developers to to test on and across multiple devices and platforms.
This open-source framework allows developers to build their apps with C# Microsoft .NET and the Mono framework while retaining full access to native device APIs – even during the coding process.