Cross-Platform vs. Native Mobile Apps
Introduction

Cross-platform apps have become a go-to-market solution for many startups in the tech industry. They promise to be able to easily write one codebase that deploys to both iOS and Android devices. However, many companies still choose to go the traditional route and develop natively despite the potential advantages.

Both solutions are valid — there isn’t a single “right” way to do things (at least not yet!). Choosing the right path forward for your team depends on your goals and constraints, and your choice in technology should come from that more so than a personal belief. This post will draw a comparison between the two options to help you make the best decision for your company.

Cross-Platform

Currently, there are several competing options for cross-platform development: React Native, Flutter, Xamarin, Ionic to name the mainstream ones. In this post, we are going to avoid explaining each one and discuss the pros/cons of cross-platform development as a whole.

Each of these platforms allows your team to write the code for one app, which can be deployed, to both the Google Play Store and App Store. The cost-savings potential of this is obviously huge if done effectively.

Pros to cross-platform

It is possible to deliver to both mobile markets at a budget far less than it would take two develop two separate native apps. About 60–70% of the code can be shared with the remainder being custom for either platform.

You can have a single mobile development team, simplifying your organization. This can also benefit in bringing some cohesion to your Android and iOS apps that is hard to achieve otherwise.

Depending on the chosen technology, you may have developers in house that are already familiar with the languages and development styles (JavaScript, C#/.NET, Dart). You may be able to build a team without having to start hiring from the ground up.

New features are deployed to your iOS and Android users at the same time, rather than having a “feature leader”.

Drawbacks to cross-platform

It is much harder to hire developers experienced in this tech compared to native.

When you do hit a roadblock, it often takes a really highly skilled engineer to solve the problem.

iOS or Android specific features (ex. Health Kit / Apple Watch) are extremely difficult or impossible to work with.

Developing intricate UI/UX takes a lot longer than Native. If there isn’t an out-of-the-box component, a custom one needs to be created for both platforms which is time consuming.

Cross-platform is often not as efficient as Native, sometimes causing some jank that can’t really be solved. This has more impact the more complex your application.

The technologies have less mature ecosystems than native. This means less tools for your team to utilize and less help available when they run into issues.

The apps do not “feel” like iOS or Android apps. They create unfamiliar experiences for the user, which can make the app feel unattractive.

There is risk of the chosen technology dying out and losing community, creator or company support.

When it makes sense to use cross-platform

You want to target both Android and iOS markets for your MVP.

Limited budget for mobile is one of your primary constraints.

Your mobile app is not a core part of your business.

User experience should be standard between your apps and you are not seeking to “feel” like an iOS or Android app.

Your application is straightforward in terms of user experience and features.

Your designs are nearly identical on both platforms.

Our Thoughts

Cross-platform technologies are a great way to get to market quickly to the widest audience possible and validate your idea. If your app isn’t going to require platform-specific technologies, intricate UI/UX, or complex business logic you should strongly consider going with a cross-platform solution. Post-MVP, this can allow you to focus on product iteration entirely, whereas going native might mean you have to consider building a completely new team/app for iOS or Android. Native can always come later if needed.

Native Development

“Native” development refers to the traditional style of developing an entire application using the first party tools supplied by Apple and Google for iOS and Android. The ecosystems have evolved, but today, the industry standard is to use Android Studio & the Kotlin programming language for Android, and Xcode & the Swift programming language for iOS.

This approach necessitates having two separate codebases for each app. Teams will usually have engineers focus on one platform or the other, or sometimes have two completely separate development teams for each platform.

Many times, companies will release their app either to the App Store or Google Play first and focus on iterating on the product. If delivering the app on the other platform is part of their strategy, once they have traction or success and enough funding, they will invest in building a team to handle the other platform.

Pros to native development

Apps can take advantage of all the iOS or Android-specific features.

The user experience can be tailored to a greater or lesser degree to what an iOS or Android user expects.

Custom, intricate UI is a lot easier to develop generally.

If there is complex background processing, that will run smoother than cross-platform due to technical limitations.

Native apps done well “feel better” in a way that cross-platform apps are not capable of right now.

Your following team should be able to catch up to your first team pretty quickly. They will not have to go through the same mistakes and learnings that the first team did.

In terms of job market, there are many more developers experienced in native iOS or Android development. Your hiring will be a lot simpler.

The tools and community support have been developed since the inception of mobile apps and are far more robust and mature.

If you can imagine it, it can often be done 99% of the time.

Drawbacks to native development

It can be very expensive to fund native apps for both iOS and Android.

You essentially need two teams worth of developers to deliver to both.

The following platform is often lagging behind in terms of features and it can be difficult to achieve parity.

It is challenging to achieve cohesion between the iOS and Android apps and teams.

When it makes sense to go native

You care deeply about a fine-tuned, high-quality or impressive user experience.

You want to take advantage of platform features (ex. Health Kit / Apple Watch integration).

You have computationally intense features in mind such as video or live streaming.

It is not highly important that you deliver to the widest audience possible at first.

You are targeting a specific demographic that tends to use one platform or the other.

When your designs heavily leverage native components and styles.

Our Thoughts

If you want to deliver a very high-quality app that feels the most natural or satisfying to the user, or you need to integrate closely with native APIs and features for either platform, then native is the way to go. Even if you are anticipating this in the future, you should consider doing native. When everything goes smoothly, developing two native apps is a lot more expensive. If you run into a roadblock in terms of what features you can create, often those are solvable in native, while cross-platform might leave you tearing your hair out.

Conclusion

At QuarkWorks, we have experience developing in a variety of cross-platform technologies as well as our extensive background in native development since the inception of the App Store.

There is no “one true way” when it comes to developing mobile apps. For developing lightweight prototypes and MVPs, we like the concept of using cross-platform when possible to get our ideas in the hands of the widest audience quickly. However, when we want to create something to perfection and really deliver that highest quality user experience, we still prefer to go with native development.

We appreciate the apps that just “feel” good and there is no way to recreate that feeling quite the same with cross-platform technology currently. We’re excited about some of the new solutions like Flutter, that are aiming to provide not only a single codebase for mobile, but also being able to share code between mobile and web. It does all this while being as efficient as native apps. Although it’s not perfect, we see that as the metaphorical Holy Grail that the industry could one day achieve.

Right now, many of these technologies are promising that, but fall short in ways that can become really frustrating to work through.

As ever, QuarkWorks is available to help with any software application project — web, mobile, and more! If you are interested in our services you can check out our website. We would love to answer any questions you have! Just reach out to us on our Twitter, Facebook, LinkedIn, or Instagram.
['Jacob Muchow']
['Technology', 'Software Development', 'Startup', 'Apps', 'Coding']