If you’ve ever considered building a mobile application and wondered about different development paths there are to follow, you’ve come to the right place. Drawing on our extensive experience in building digital products for clients representing a wide range of market segments, we’ve set out to compile an ultimate guide to cross-platform mobile development in 2020.
What can you find in it? The overview of the current state of mobile development, the summary of the non-native solution’s pros and cons, the rundown of promising cross-platform frameworks to choose in 2020… Sounds good already? If so, sit back and find out for yourself what the near future holds for cross-platform app development.
Table of contents
- The current state of mobile
- Mobile development choices you can make
- How do I know if cross-platform mobile development is the right choice for my business?
- Pros and cons of cross-platform mobile app development
- Cross-platform mobile development frameworks to consider in 2020
- Is 2020 the year of cross-platform app development?
The current state of mobile
Let’s start from scratch and discuss the current state of the digital market. According to the Digital 2019 Global Overview report, the total number of internet users is growing by 11 people per second these days. This means that every day, the worldwide online community is joined by as many as one million individuals who can choose to be desktop or mobile users. What’s interesting is that the latter option is getting increasingly popular month by month.
Source: statcounter
The simplest explanation for this state of events is the change in our lifestyle. You probably know from your own experience that we spend more time online than ever before – especially in developed countries where nearly everybody has access to a smartphone or a tablet. With the statistical user surfing the net for almost 7 hours a day on average, it’s no wonder that over half of this traffic comes from mobile devices.
The preference for mobile solutions translates into pretty impressive numbers. According to Statista’s 2019 report, worldwide mobile app revenues in 2019 amounted to 461 billion US dollars and by 2023, paid downloads and in-app adverts are believed to generate over 935 billion dollars in revenue.
Mobile development choices you can make
We’ve established that apps are not only popular among the modern internet users but also quite lucrative for their owners. Bearing these two factors in mind, I’d say there’s a fair chance your business plan involves building one. The trick is, however, choosing the right mobile app development path.
One of the first steps towards digital success is deciding on the mobile operating system – which, by the way, wasn’t so easy a decade ago, when Android, iOS, Microsoft, RIM, and Symbian were all viable options.
Source: statista
Today, the choice is much simpler as the only major players left are Android and iOS, which together account for around 98% of the total mobile operating system market share. According to various statistics, Android wins in terms of the number of users but there’s no shortage of iOS supporters as well. On top of that, while Google Play Store boasts more applications right now (almost 3 million), Apple’s App Store is said to contain over 5 million active apps by the end of 2020. This fact alone is enough to show that neither of the two platforms should be overlooked.
With the choice of the mobile operating system being the question of users’ personal preferences rather than the matter of performance or availability, you’re likely to end up building a mobile app for both Android and iOS – and there are three ways to do so.
One native app for each operating system
The native solution, as the name suggests, assumes developing an application with the programming language native to a given platform: Java or Kotlin for Android and Objective-C or Swift for iOS. Being system-specific, native app development can be considered a mixed blessing. On the one hand, it provides access to all features of a given OS, enables unlimited interface customization, and prevents any performance issues from happening. On the other hand, if you want to reach both types of users, you’ll simply need to build two separate apps which call for more time, money, and effort.
Progressive Web Application
Wait, aren’t we talking about mobile solutions? That’s true, but web apps can do the job of a mobile app pretty well. A good example is that of Progressive Web Apps (PWAs) which are basically websites that mimic the behavior of native apps, e.g. in sending push notifications, working offline, or simply being added to the mobile device’s home screen. Just like any other option, however, PWAs are not flawless, as they consume more battery and can’t access all features of a given device.
One cross-platform app for two systems
Last but not least, there’s cross-platform development which allows covering two operating systems with one code. It doesn’t assume writing code with a native programming language; however, if you take a closer look at it, you’ll notice that it ensures much a near-native experience thanks to rendering interface using native controls.
How do I know if cross-platform mobile development is the right choice for my business?
With at least three different ways to materialize your mobile app business idea, you might be wondering how to choose the most suitable one. Below, you’ll find a list of criteria that you need to take into consideration if you wish to make a truly informed choice.
- platforms
First and foremost, you need to decide if your app is going to be available on one or multiple operating systems. If you’re targeting a larger audience comprised of different platforms’ users, cross-platform development will be the go-to solution. If it’s enough for you to reach only Android or iOS users, on the other hand, providing flawless user experience with a native solution will be your priority.
- complexity
This criterion pertains to how far you want to go with the product. One way to address this issue is to clarify whether you’re aiming at testing your vision with an MVP or you’re ready to hit the ground running with a fully-fledged application. The other question you need to answer is that of your product’s functionalities, e.g. access to mobile device’s hardware or platform-specific functions.
- native feel
The next thing to consider is how native your mobile application should feel to the user. Designing a mobile application with Material Design (for Android) or the Human Interface Guidelines (for iOS) in mind is what makes the digital product intuitive and user-friendly – but you can achieve a similar effect with some of the most popular cross-platform frameworks.
- price and time
One thing is for sure: native development is neither cheap nor fast. Building separate applications for different platforms requires employing a higher number of developers, which may cause a freshly-minted entrepreneur to exceed the tight project budget early on. At the same time, going for the cross-platform approach, you’ll end up outsourcing a smaller but equally professional team which is both a time-efficient and a cost-effective solution.
Pros and cons of cross-platform mobile app development
Let’s assume you’ve asked yourself all the above questions and you’ve arrived at the conclusion that native development is not your cup of tea. You’re leaning towards cross-platform mobile app development but before the die is cast, you need to conduct a thorough analysis of this solution’s pros and cons. Afraid that the research will take too much time? Don’t worry, we’ve got you covered.
Cross-platform mobile development | |
---|---|
pros |
cons |
wide market reach | possibly slower performance |
single codebase | UX and UI discrepancies |
faster and cheaper deployment | |
reduced workload | |
platform consistency |
How cross-platform mobile app development benefits your business
You’ve probably concluded that we wouldn’t devote an extensive article to the cross-platform approach if it wasn’t advantageous to all sorts of businesses, ranging from startups to large corporations. And you were right in doing so. Choosing to build your digital product with a cross-platform mobile framework, you’ll enjoy the following benefits:
- wider market reach
While each of us has their favorite mobile operating systems, you shouldn’t let personal preferences get in the way of your business success. Making your mobile application equally available to Android and iOS enthusiasts, you’re paving the way to the significantly increased revenues in the future.
- one codebase
As the very name suggests, the cross-platform approach allows you to write code that covers multiple operating systems at once. Of course, there will be cases in which handling platform differences will require more time and effort. Nonetheless, one codebase will surely influence all stages of the software development process by allowing you to save money you’d normally spent on fixing and upgrading two separate sets of code.
- faster and cheaper deployment
In spite of requiring one codebase only, cross-platform app development still requires developers to think about ways to handle OS differences such as UI or platform-specific store publication procedures most effectively. At the same time, one can’t deny that this approach will reduce the sketch-to-launch time. This, in turn, can translate into the possibility of saving a large proportion of the initial project budget which you can later devote to perfecting your app according to the user feedback.
- reduced workload
We won’t lie: when working on a cross-platform project, it’s still advisable to hire developers with a deeper understanding of Android and iOS. Why? Just to name one reason, they’s expertise will come in handy during deploying the app in Google Play and App Store since both have very specific requirements. At the same time, however, deciding on cross-platform mobile development, you’ll need to hire a significantly smaller developers’ team. You’ll especially appreciate this benefit in case of outsourcing IT professionals since the cross-platform approach will call for a smaller team.
- platform consistency
There’s no doubt that Android and iOS differ significantly in terms of both UX and UI. With cross-platform app development, most of these disparities are handled by default which makes design and navigation inconsistencies less likely to happen.
What can go wrong with the cross-platform solution
Notwithstanding all the above-mentioned advantages, cross-platform app development is not all fun and games, as you may be already suspecting. The main drawbacks of this approach include:
- possible lower performance
It’s not a secret that time is money – and the longer it takes for your app to load, the more users give up on it and the more money you lose in the long run. Cross-platform apps are faster to deploy; however, there are situations in which they may turn out to work slower than their native counterparts. If you’re up to developing a mobile game or an app with a complex video chat, for example, React Native or Flutter won’t work as efficiently as native technologies. At the end of the day, however, it all boils down to the type of project you have in mind.
- inferior UX and UI
Another issue pertains to the graphical user interface. If you take a closer look at Android and iOS apps, you’ll notice that they differ in terms of navigation, buttons, lists, etc. When building a cross-platform mobile app, developers need to be aware of these discrepancies and put special effort to making the final product user-friendly to the supporters of both operating systems. And the end of the day, it may turn out that the cross-platform approach won’t save them that much time at all.
Cross-platform mobile development frameworks to consider in 2020
Cross-platform mobile app development has both pros and cons. But if you’re still reading this guide, benefits such as shortened development process, major time and cost savings, and near-native user experience that requires less workload must outweigh the drawbacks from your perspective. And you aren’t the only one to recognize the value of this approach. In fact, the ever-growing demand for cross-platform mobile applications has resulted in the sea of specific tools being available to businesses these days.
We know that choice overload can give you a serious headache. That’s why in this guide we’re focusing only on the most prominent cross-platform mobile development frameworks: React Native, Flutter, NativeScript, and Xamarin.
Source: Google Trends
To give you greater insight into what makes each of these tools a viable option for software development in 2020, we’ll examine them according to the following criteria: community support, programming languages they’re based on, code reusability, performance, interface, and prominent apps build with their use.
React Native | Flutter | NativeScript | Xamarin | |
---|---|---|---|---|
backed by | Telerik | Microsoft | ||
programming language | JavaScript | Dart | JavaScript Typescript |
C# |
performance | near-native | near-native | near-native | moderate to near-native |
code reuse | up to 90% | up to 90% | up to 90% |
up to 96% |
user interface | uses native UI controllers | uses custom widgets | uses native UI controllers | uses native UI controllers |
major use cases |
Facebook |
Google Ads Alibaba Groupon |
Sennheiser PUMA |
OLO MRW Storyo |
React Native
React Native is an open-source, cross-platform app development framework released by Facebook in 2015. Born as a product of an internal hackathon held in 2013, it has soon become one of the most popular alternatives to native development with 2043 GitHub contributors and over 82 900 GitHub stars.
The ever-growing community recognition is what makes it relatively easy to find a reliable and knowledgeable developer team to kick off your React Native project.
Learn once and write anywhere
Based on React.JS, React Native utilizes JavaScript (which, by the way, is the most popular programming language according to the 2019 Stack Overflow’s survey) to provide both Android and iOS users with a truly native look and feel of an application. What makes this framework stand out from the crowd is that, if need be, React Native allows for using Java, Objective-C, or Swift to write native modules responsible for the smooth handling of complex operations like video playback or image editing.
While these components can’t be shared between the different platforms and require more work on the developers’ part, up to 90% of React Native Codebase can be reused. This value shows pretty well that the framework’s motto is not “write once, use everywhere” but rather “learn once, write anywhere”.
Continuing popularity of React Native makes finding an experienced developer team easier
As far as the GUI is concerned, React Native can provide an almost native user experience thanks to using controllers native to both Android and iOS. It also employs the ReactJS library with UI elements, which accounts for speeding up the UI design process. Another interface-related factor that makes this particular framework worth considering when developing a mobile application is hot reloading that allows introducing changes to the UI without losing the state of the app.
Talking about what makes React Native one of the go-to cross-platform mobile development frameworks in 2020, it would be a shame not to mention the regular updates which help the framework respond to the developers’ and users’ needs better. Versions 0.60 and 0.61 introduced for example:
- multiple accessibility improvements,
- a revamped, clearer, and more user-friendly start screen,
- fast refresh, which merges live and hot reloading, thus significantly accelerating the development process.
And mind you – that’s just a small sample of how well React Native is adjusting to the changing expectations.
React Native: pros and (very few) cons
While React Native is not a flawless solution (for instance, it’s implementation requires at least basic knowledge of platform-specific components), it’s been trusted by some of the world’s largest companies, including Facebook, Instagram, Tesla, Uber, Pinterest, and Skype – and that happened for more than one reason.
Pros of using React Native include:
- time and cost efficiency,
- the nearly native look and UX,
- performance close to that of a native app,
- strong community support.
All of that makes this framework a convenient choice not only to startups wishing to build a functional MVP regardless of a tight budget but to larger companies as well.
Flutter
The second framework to consider in 2020 is Flutter. Announced at Google I/O 2017 and released in 2018, it’s still a newbie to the cross-platform world. Nonetheless, with over 80 500 GitHub stars and the vast majority of engineers dubbing it one of the three most loved frameworks in the 2019 Stack Overflow survey, Flutter is undoubtedly a force to be reckoned with.
How Dart makes Flutter one of a kind
The programming language behind Flutter is Dart, which Google calls “client-optimized” and suitable for building “fast apps on any platform”. Introduced in 2011, it’s a responsive objected-oriented language that is considered relatively easy to learn for two reasons: one, it draws from C/C++ and Java; two, on Dart’s official website you’ll find an extensive and pretty straight-forward documentation. It’s also worth mentioning that Dart comes with a substantial repository of Flutter-compatible software packages allowing you to make your app even more complex.
The frequent meetups devoted to Google’s framework are the proof for the growing popularity of Dart and Flutter. Here’s a snapshot of Andrzej, our Backend Developer, speaking at Poznań Flutter Developer Group Meetup held at Merixstudio in autumn 2019
One major advantage of Flutter is that it performs better than most cross-platform mobile development frameworks. This can be attributed to Dart’s native compilers and Flutter having its own set of widgets. The result? Faster and direct communication with the platform stemming from no need for JavaScript bridge (as is the case with React Native, for instance). Speaking of widgets: with Flutter’s “UI-as-a-code” approach, they’re written with Dart only, which translates into increased code reusability.
Efficiency is inextricably linked to user experience and interface. As mentioned before, rather than relying on a set of native components, Flutter makes use of the visual, structural, platform, and interactive widgets for Material Design and Cupertino, all of which are rendered by the framework’s graphics engine. What’s more, Flutter leaves plenty of room for customization and emphasizes visual details, which makes it a good choice if you’re looking to design a pixel-perfect interface. We've actually seen that for ourselves while working on Ginny - our parking management app with backend written in Go, Python and Flutter.
When it comes to Flutter’s updates, the latest stable release took place on December 12 – just as we were about to publish this article! According to the official release note, it involved merging almost 2 thousand pull requests from 188 contributors. Among improvements introduced in version 1.12.13, there are:
- breaking API changes,
- new features such as the SliverOpacity widget and the SliverAnimatedList,
- fixes to crashes, customer critical issues, and performance problems,
- web support in the beta channel.
This is by no means a finished list as Flutter’s goal is to make each of the four releases that happen every year act as a step towards greater usability of the framework.
Flutter is a young cross-platform mobile app development framework; thus, it shouldn’t come as a surprise that it hasn’t been adopted by as many fat cats as React Native. This doesn’t mean, however, that Flutter isn’t doing well on the digital playgrounds. As of December 2019, it constitutes the core of Alibaba, Google Ads, Groupon, Philips Hue, or Hamilton apps, just to name a few.
Pros and cons of Flutter
What made these brands choose Flutter? It might have been one or more of the framework’s advantages, such as:
- comprehensive documentation,
- high app responsiveness,
- hot reloading feature that facilitates designer-developer cooperation,
- pixel-perfect UI and customizable widgets with a truly native feel to them.
Just like any other technology, Flutter is not flawless. One potential issue is that it may make applications quite large in comparison to other frameworks – this, however, is the risk tied to the nature of a given project and the experience of the hired developer team. A problem you’re more likely to encounter when choosing Flutter is that – being still relatively new – it sometimes requires to write their own functionalities which can’t be found in Flutter supported libraries.
Nonetheless, the numerous benefits of building your product with Flutter are enough to make you consider this framework for 2020 cross-platform mobile app development.
NativeScript
If you’re about to start working on your revolutionary product, React Native and Flutter aren’t the only solutions out there. An alternative framework that may prove just right for your business at the beginning of the 2020s is NativeScript. This open-source framework was publicly released in March 2015 and quickly became a popular solution. For example, within just two months after its launch, it was awarded 3000 GitHub stars, it attracted the attention of over 1500 followers on Twitter, and – as of today – there are over 700 plugins available on the market.
When building a cross-platform application with NativeScript, developers first write code in JavaScript and its superset, TypeScript. Then, the codebase is compiled to programming languages native to respective platforms. One major tech-related advantage of Telerik's framework is that it gives software engineers great freedom in terms of choosing the accompanying tech stack, as the framework goes well not only with JavaScript but also with Angular and Vue.js. Speaking of different solutions, it’s worth mentioning that developers working with NativeScript can also utilize third-party libraries (CocoaPods and Android SDKs) without wrappers.
Here’s a visual summary of how Telerik’s framework works. Source: NativeScript.org
Similarly to React Native, NativeScript allows for accessing Android and iOS native API, which has an overtly positive impact on the cross-platform app. The difference is, however, that while the former calls for building bridge APIs, the latter – in the words of TJ VanToll, Principal Developer Advocate for Progress – “injects all iOS and Android APIs into the JavaScript Virtual Machines”. Another similarity to Facebook’s framework lies in the code reuse which in both cases can equal as much as 90%.
As far as the technical aspect of the final app’s looks is concerned, Telerik’s framework stores UI in XML files with CSS styling. In fact, NativeScript’s approach to the GUI is well summarized by the “write once, run everywhere” motto. In practice it means that while it allows for creating the interface with a platform-specific fell to it, the framework ultimately puts greater emphasis on code-sharing than on individual native styling.
NativeScript: use cases and benefits
NativeScript may not be as often talked about as React Native or Flutter these days – yet, it’s the core of apps such as Sennheiser Smart Control, MyPUMA, California Court Access App or Portable North Pole (the latter being quite topical if you take into consideration the time of this article’s publication ;) ).
What makes NativeScript a cross-platform mobile development framework worth considering?
- seamless performance thanks to entire native API access,
- platform-native UI,
- ease of learning.
Xamarin
If you’re about to start working on your revolutionary product, React Native and Flutter aren’t the only solutions out there. An alternative framework that may prove just right for your business at the beginning of the 2020s is Xamarin. This open-source framework was created in 2011 – which makes it the oldest one on this list – but it hasn’t gained momentum until five years later when it was acquired by Microsoft. As of today, it boasts a community of over 60 thousand contributors.
Technically speaking, to build a cross-platform mobile application with Xamarin, you need to have a good command of two technologies: .NET and #C. The former is the developer platform that allows the use of multiple languages (including C# programming language), editors, and libraries. Xamarin supplements the said platform with a set of tools that facilitate building cross-platform applications, e.g. platform-specific libraries, editor extensions, and XAML. The second technology is C#, an object-oriented programming language which is considered slightly harder to learn than JavaScript. Xamarin utilizes this programming language to write the entire app, from backend, through native API, to business logic.
Xamarin.Native and Xamarin.Forms: two approaches to performance and UI
What distinguishes Xamarin from other frameworks is that it offers two ways of compiling cross-platform mobile applications: Xamarin Native (also referred to as Xamarin.Android/iOS) and Xamarin.Forms. The former approach prioritizes sharing business logic and, by making use of the native interface controls, enables almost native performance. The latter focuses on sharing code rather than business rationale, which results in the increased proportion of the code reuse on the one hand (with Xamarin, developers can reuse up to 96% of their C# code) and the decreased code performance on the other.
You might have already noticed that the performance and the GUI of the cross-platform mobile apps are closely related so I probably won’t surprise if I say that Xamarin’s two approaches to building apps have a major influence on the final look and feel of the interface. While Xamarin.Android/iOS allows developers to work with native controls and layouts, Xamarin.Forms is based on the standard UI elements, which allows for designing apps from a single API but at the same time might not be enough if you’re looking for an impeccably native look.
Xamarin: popularity check
When it comes to the use cases, Xamarin hasn’t managed to attract the attention of the world-renowned brands.
At the same time, OLO, MRW, Storyo, and Captio – to name a few – appreciate the benefits of using this framework, such as:
- complete development ecosystem,
- full hardware support,
- high proportion of code reuse and near-native UX,
- stability ensured by Microsoft’s support.
All of these make Xamarin worth considering if you’re looking for a cross-platform mobile app development framework to power the enterprise solution.
Is 2020 the year of cross-platform app development?
Yes and no – at the end of the day, it all depends on your business objectives, budget, and time-constraints. Nevertheless, cross-platform is sure a direction worth considering, especially if we’re talking about React Native and Flutter.
The former is a mature and stable framework utilizing one of the most popular programming languages and boasting an unwavering support of a large developer community. The latter, on the other hand, is a rapidly evolving technology which, regardless of being much younger than React Native, has already managed to win the hearts of many developers all around the world.
Whether you choose React Native, Flutter, or any other framework, the cross-platform approach is bound to save you both time and money while ensuring a maximized market reach.
Looking for a reliable partner for building your cross-platform app? Check out why it’s worth choosing Merixstudio.