Native vs. Cross-Platform Apps – Which are Best?

By: Bradley White | Published: October 31, 2017

The decision of whether to develop a native app, or to go cross-platform, is one that any budding appreneur will face when they consider building an app. Do a little digging and it won’t be long before you turf up all kinds of opinion pieces on the subject. If you’re wondering what on earth are native apps? What does cross-platform mean? And which is best for me? Then you’re in the right place.

The first thing to note is that there is no right or wrong here, and any article that you read on this subject will always be biased by the authors’ own preferences. At BMDI Software, we are native app developers and as such, we will undoubtedly be arguing the case for native. We have worked with most of the major cross-platform libraries at one time or another and whilst we do think they have a place, we believe that native is the right choice for the vast majority. But first let’s get back to basics, what exactly do we mean by native and cross-platform?

Native and Hybrid app development

Native Apps

As you know, developers use programming languages to create computer software and for the most part, the language metaphor holds up. With that in mind, a ‘native’ language is very much what you might expect – it’s the language(s) ‘spoken natively’ by a particular platform. For iOS, the native development languages are Swift and Objective-C, while for Android the native development language is Java. Much like with spoken languages, a native language will be fully understood by its associated platform making a well-designed native app beautiful, slick, fully-expressive, efficient and custom-fit for purpose.

However, it’s important to note that each platform is only able to understand it’s own native language. Therefore, if creating software natively, you must write multiple sets of code – one for each platform you support.

Cross-platform Apps

Cross-platform apps (also known as Hybrid apps) enable you to write one set of code that caters for multiple platforms. Popular cross-platform tools include Ionic, React Native and Xamarin, which are written in languages such as C# and Javascript. Mobile platforms don’t understand these languages directly and some kind of ‘translation’ needs to occur. As anyone who’s ever used Google Translate will tell you, translations aren’t always perfect – words and contexts can be misinterpreted, subtleties and unique language features are lost and idioms that exist in one language often come across as gibberish in another.

Of course, the ability to write a single codebase for multiple platforms is often the major draw for those considering using cross-platform tools; the idea being that development times are shorter, meaning that costs are lower. In our experience, this is rarely the case and the small positives you do achieve in this regard are eclipsed by the negatives of cross-platform development.

Native Apps are the Right Choice for Most

We believe that native app development is the right choice for the vast majority and below, we have listed the the main technical factors that form the foundation of our preference for native apps.

Native Apps Cross-platform Apps
User Experience
  • Work directly with the dedicated tools for the job.
  • Highly optimised.
  • User experience feels fluid and effortless.
  • For simple apps – few differences between the native and cross-platform versions. As the app grows, issues emerge.
  • Common examples: Stuttering scrolling views or non-smooth transitions between views.
  • Fixes or workarounds are costly and time-consuming.
Complexity
  • Toolchain is simple.
  • Require one coding language.
  • Dedicated debugging tools help you find and fix issues quickly.
  • Require many different coding languages.
  • For specific feature requirements, you are still required to write multiple sets of native code.
  • Bugs are time-consuming to fix.
  • Require many third-party dependencies, which are out of your control and can introduce complex issues.
Longevity
  • Generally easier to update and maintain.
  • OS updates usually require little development work.
  • Android and iOS are now quite mature, so language changes rarely break native code.
  • Changes to the operating systems you support (iOS, Android etc.) or the cross platform library can break your code.
  • Cross-platform apps difficult to maintain over time, due to dependencies and the rate at which cross-platform libraries change.
  • Historically, cross-platform libraries have had a limited shelf-life.
Compromise
  • App is designed for a specific platform.
  • App follows the latest design trends and human interface guideline standards for a system.
  • Unrestricted access to all of the device’s features.
  • Native developers are specialists – they spend all day, every day, writing code for a specific platform.
  • App is generalised, not aimed at any platform in particular.
  • Optimisation possibilities are limited.
  • Need to find workarounds or fixes for additional issues that aren’t present in native development.
  • Can suffer restricted access to device features.
  • Cross platform developers are generalists – they split their time between cross platform tools, iOS, Android and third party libraries.
Risk
  • Can develop applications solely within the eco-system.
  • No requirement to rely on third-party libraries.
  • Reduced complexity makes projects easier to estimate accurately.
  • Risk of cross-platform libraries and third-party services being discontinued is relatively high (ex: Sencha Touch, Parse etc.).
  • Need to agree to additional terms with cross-platform vendors.
  • Support networks are smaller and are often community driven only.

As discussed previously, there is no strict right or wrong and there are always times where one approach is more suited over the other. We are advocates of native app development and believe that native is the correct choice for most.

However, we do see the value of cross-platform tools in some cases. If you’re wanting to develop a fairly simple application that does not make significant use of the device’s native features (camera, GPS etc.), or demand heavy data processing or network requests, then it may be worth considering cross-platform as an option. Alternatively, you may be looking to get an MVP to market quickly and cheaply to prove your concept, in which case you may decide to accept the compromises. It’s certainly worth considering your options carefully as you don’t want to regret your decision further down the line.

Whatever your goals for your application, we advise that you give real thought to native as your preferred option. Contact us today and we will guide you through the options and discuss what all of this means for your project, finding the best fit for you.