As of June 2020, a staggering 3.5 billion people own a smartphone. That’s more than 45% of the world's population, according to BankMyCell.
Never before in history has there been such a large market for mobile apps.
But there’s an issue.
These users are fragmented. Globally, users are split between:
- Android (74.14%)
- iOS (25.26%)
- and other platforms (0.6%)
And these percentages shift regionally, too. In the US, iOS has a bigger market share (56%) than Android (43.5%), while the opposite is true in South America and Asia.
This means, when developing a mobile app, you need to choose your platform carefully; considering the location and preferences of your target audience. The numbers above are from Statcounter — a great resource for discovering which platforms are popular in your area.
But even when you have chosen a platform (or platforms) to focus your energies on, there’s another big decision to be made: how.
In native mobile app development, you’ve got three options. You could build a dedicated app for each platform, use a cross-platform framework to re-use code for each platform or build a progressive web application (PWA).
In this guide, we’ll explore each of these approaches; helping you decide which is right for you.
What is a native app?
A native app is one that’s developed specifically for a target platform, using that platform's preferred programming language and tooling. For iOS, this means Swift. For Android, you could use Kotlin or Java.
Apple and Google offer native app developers a range of tools and resources to encourage them to build apps for their platforms. This includes standardized interface elements, development environments (Xcode and Android Studio), design guidelines, and various libraries that make development easier.
Advantages and disadvantages of native apps
Reasons to choose a native app include:
- Speed: As native apps are built specifically for their target platforms, they are faster and more reliable than their cross-platform counterparts.
- Functionality: Native apps get direct access to hardware, such as the camera, compass or accelerometer. Apple also gives sole access of some features to native apps, for example, notifications.
- Quality: Native apps effortless blend into their target platform, making the design consistent and the application easy to use. Users tend to prefer native applications, even if they don't understand the technology underneath.
But there are drawbacks to native development, too. Such as:
- Cost: You'll need to build a specific mobile app for each platform. Your iOS code will not work on Android.
- Specialist: Native apps need developers who know Swift, Kotlin or Java.
Examples of native applications
Many popular applications are built natively, including Twitter, Pokemon Go and Waze.
What is a cross-platform app?
A cross-platform application runs on multiple platforms with only small modifications required.
Advantages and disadvantages of cross-platform apps
Cross-platforms apps bring a number of advantages to the table, including:
- Cost: Code can be shared between all your target platforms, reducing development costs and making cross-platforms apps cheaper to develop than native ones. Instagram published stats that revealed the amount of code shared between their iOS and Android apps was over 90%.
- Speed: It is often quicker to build a React Native app than a native app.
But with cross-platform development, you lose out on:
- Flexibility: A cross-platform framework makes some decisions for you, and therefore adds some limitations to your project. For example, it’s difficult to build custom UI elements with React Native and certain device features will need native code to work properly.
- Quality: Cross-platform frameworks can produce an app that feels inconsistent with the target platform when compared with a native app.
- Performance: Cross-platform apps are slower than native apps.
What is the best cross-platform framework in 2020?
Should you choose to push ahead with a cross-platform build, there are three main choices for cross-platform development in 2020.
Pros of using React Native:
- Speed: React Native provides various ready-made components, helping speed up development. The React Native community is huge, which makes it easy to find help and documentation online, too.
- Multi-platform: React Native can be reused on both Android and iOS, saving development costs. As the same code is used on both platforms, adding new features is easier as well.
Cons of using React Native:
- Native still required: If you need access to various hardware features, such as the camera, GPS or accelerometer, you might need to write native code to access these.
- Quality: React Native apps are quite performant, but still are slower than a well-optimized native app.
Vue Native is a community open source project, allowing Vue developers to build native applications. Importantly, it compiles to React Native, so you can use a Vue developer to build a React Native application.
Pros of using Vue Native:
- Talent: If your development teams specialize in Vue, Vue Native lets them build mobile applications using their existing skills and tooling.
- Independence: If Facebook's involvement in React Native is an issue, Vue Native is an MIT licensed alternative.
Cons of using Vue Native:
- Small community: Vue Native has a much smaller community than React Native. This means not as many resources are available, making it difficult to find help online.
- Quality: A Vue Native app will always feel slower than a well-optimized native app.
We'll save the technical differences for a future article, but NativeScript works differently from Vue Native and React Native and provides a more native-like experience for developers.
Whereas React Native uses a bridge to empower native functionality, NativeScript provides direct access. This means you can use CocoaPods and Android SDKs within NativeScript.
Pros of using NativeScript:
- Licensing: The core of NativeScript is licensed under the business-friendly Apache 2.0 software license.
Cons of using NativeScript:
- Community: NativeScript has a significantly smaller community than React Native. However, they do offer paid support plans.
- Quality: A cross-platform app, even with NativeScript's direct access to native APIs, will be slower than a well-optimized native app.
Examples of cross-platform apps
Many popular applications are built with cross-platform technologies, including Uber Eats, Instagram and the Bloomberg app.
What is a progressive web app?
A Progressive Web App (PWA) is a midway point between a mobile accessible website and a mobile app.
The key differences between a native app and a PWA are how the user accesses them. Whereas native and cross-platform applications are found on an App Store, PWAs are accessed via a web address. PWAs cannot be listed on the iOS App Store. However, they can be listed on the Google Play Store — if specific PWA requirements are met.
Advantages and disadvantages of progressive web apps
The key benefits of a PWA are:
- Speed: You can build a PWA that works everywhere, including on Android, iOS and other web-connected devices. The latest version of Chrome of the desktop includes enhanced features for PWAs, including the ability to install it.
- Cost: As only one code based is needed, development costs are reduced.
The disadvantages are:
- Functionality: Your device feature set is limited with a PWA. For example, PWAs on iOS cannot use push notifications. Instead, you'll need to build your notification method. If your app relies on device-specific features, such as GPS or the camera, we'd recommend you do not use a PWA.
- Quality: As PWAs don't use the native UI of the platform, they will feel inconsistent, leading to poor user experience.
Notably, the founder of Facebook, Mark Zuckerberg said:
“The biggest mistake we’ve made as a company is betting on HTML5 over native,”
He was referring to the original Facebook mobile app, which was built as a web app back in 2012. Web technology has moved on since then, but it suffered from slowdowns and other issues, allowing their native app based competitors to gain market share at Facebook’s expense.
Examples of progressive web apps
Many web publishers and companies are using PWAs to enhance their existing websites, such as the Financial Times, Twitter and Pinterest. However, these run alongside their existing applications.
So, what is the best way to create native mobile apps in 2020?
If we’re honest, the answer to this question is very specific to your needs and requirements for your application:
- If you need a prototype to show customers and get feedback, go for the fastest option that has the features you need. For simple apps, this could be a PWA.
- If you need access to hardware features (such as the camera, GPS or compass), restricted iOS features (push notifications, payments, Healthkit) or need high levels of performance (such as AR, VR or video games) a native application is the only option.
- If you want your app to be listed on the iOS App Store, you'll need to pass strict and constantly changing App Store acceptance criteria. In our experience, it is easiest to meet these criteria with a high-quality native application.
- If your app is in a hyper-competitive segment, we'd recommend a native app. In these segments, the quality difference between a cross-platform app and a native app could be the difference between success and failure.
If you are considering building a multi-platform application and need some guidance, why not get in touch? We’ll help you map out every stage of your mobile app development journey and choose the development approach that will work best for your needs.