Two pieces of translucent paper the overlap slightly, creating a rectangle in the middle

In the world of mobile development, you can either develop native mobile apps specifically for iOS, Android or Windows, or you can opt for two other routes—hybrid apps or cross-platform apps. While native apps offer incomparable performance and user experience, not every company has the resources to develop native apps for each platform. Cross-platform software in particular has created an flexible, efficient alternative to native apps, yielding apps that can run on multiple platforms and devices without having to be entirely rewritten for each.

But accomplishing a native user experience without native app code comes with a few compromises: larger app file size, differences in performance, more code overhead, and in some cases, the cost of the platform itself. Not all cross-platform softwares are created equal, but some offer advantages that might be better suited to your mobile app goals.

So which route should you take? To help you weigh the pros and cons of native vs. cross-platform before kicking off your mobile project, here’s a comparison of native apps with one of the most popular cross-platform solutions, Xamarin.

What’s the difference between a native app and a cross-platform app?

Native apps can only run on one platform because they’ve been specifically written for that app, whether it’s an iOS app written in Objective-C and Swift, or an Android app written in Java and Kotlin. Being written specifically for that platform has its advantages: the code is optimized for the operating system, it can run natively on the device without compiling or a web wrapper, it has direct access to device features, and it gives users the most native-feeling user interface (UI).

Cross-platform apps have an advantage, however: they allow mobile developers to create one source code for an app using common web technologies, which the platform then converts into code for the native environment. The immediate benefits? There’s a much more native app-like performance than a hybrid app. Also, developers can reuse code that’s already been written, letting the platform handle the compiling. This makes it faster and more cost-effective. Read more about the benefits and compromises of cross-platform apps in this article.

So now that we’ve covered how native apps and cross-platform apps differ, let’s look at a popular cross-platform software, Xamarin, and see how its features and capabilities stack up to a native app.

Xamarin

Xamarin is a cross-platform software that generates native apps with platform-specific user interfaces (UI)s. Xamarin compiles the app’s code base and UI code by accessing native APIs for each platform, whether that’s Android, iOS, or Windows. What you get in a totally native experience you do get in file size—Xamarin has some overhead, but the native experience and launch speed users get is nearly unmatched.

Xamarin Basics

  • Programming language: C#—”anything you can do in Objective-C, Swift and Java you can do with C# in Xamarin.”
  • Platforms: iOS, Android, Windows, Blackberry
  • Open-source
  • Xamarin TestCloud: TestCloud allows you to run automated testing on your apps on over 2,000 devices, and build, test and monitor your app in the cloud after development.
  • HockeyApp: Xamarin’s mobile DevOps support, which allows you to distribute beta versions, collect live crash reports, get feedback from real users and analyze test coverage.
  • Xamarin.Forms library: This is how the native UIs are created and rendered using native controls of each platform.
  • Design patterns supported: MVC (Model View Controller), MVVM (Model View ViewModel)
  • Companies using Xamarin: Slack, GitHub, Foursquare, jetBlue

With Xamarin…

A shared code base requires less time and resources. When you’re working with the one, shared C# code base, that code base can be used among the three platforms, leaving the majority of the effort to creating the platform-specific UIs. Think of it like 70% Xamarin code and about 30% native code—and the Xamarin code is reusable with the .Forms library. Note that it can be helpful to have an experienced Xamarin expert who knows their way around the platform to keep code neat and organized.

With native…

Developers have to write one set of native code for each platform, with that platform’s programming language and frameworks. If you want to create native apps for more than one platform, that often means double the work, double the resources, and more time spent updating, patching, and debugging each app in the future. That code is optimized for that platform, but it can run there and only there.

With Xamarin…

The user gets a 100% native performance. With Xamarin.Forms, the UI is rendered completely with native controls, so what the user ends up with is a completely native UI experience. The only drawback is a larger app file size—there’s a bit more overhead (and its own runtime) required to accomplish that totally native UI, so keep that in mind for devices that need to capitalize on resources. This is where cross-platform and native can really go head-to-head.

With Xamarin…

Apps are easy to update. One of its core benefits is the ability to make updates, changes, and improvements to the app over the lifespan of an app relatively easily. With native, the process is similar, only it’s duplicated for each version of the app.

With Xamarin…

If you know C#, it’s not hard to learn. C# is a pretty common programming language that many web developers already know, so it doesn’t require learning another platform-specific language and framework. You’ll need to know languages for the native environments—whether that’s Java and Kotlin or Objective-C and Swift.

With Xamarin…

You’ll get device API access so your app can full access device features. This means your app can fully access native capabilities, just like a native app. This is one way Xamarin stands out from other cross-platform softwares.

Wondering which route is best for your mobile app?

The best way to approach your mobile app project is usually to consult with a skilled, experienced freelance mobile developer like those you can find on Upwork—someone who will be able to talk through what you’re looking for from your app so you can choose the option that will give you the best results to fit in your scope, budget, and timeline.

Read more: