• Tomasz Soroka

Xamarin Native vs Xamarin.Forms, which one should you choose to build your app?

Xamarin is a technology that you may have heard of if you are involved in programming or intending to create a mobile application. The main assumption of the technology is to enable a programmer to write application code for leading mobile systems using one language and platform.

Today I will tell you about the differences between programming in Xamarin Native and Xamarin.Forms. You will learn, among other things:

  • How is Xamarin Native different from Xamarin.Forms

  • Which solution is better?

  • When to choose Xamarin Native and when to choose Xamarin.Forms?

First, you need to understand the differences between Xamarin Native and Xamarin.Forms. Xamarin is the same technology, but it allows you to create applications using two different approaches: native applications and Xamarin.Forms-based cross-platform applications.

What are the assumptions of these approaches, advantages, and limitations?

Let's start with the native version.

Xamarin Native

Native applications are applications that are written only for one specific platform, eg IOS. Xamarin maps the entire API of Android and other systems so that the development of such applications does not differ from the usual approach for a given platform. Of course except that one is used here for all platforms. The main goal of Xamarin native is to use one C # language, not Java or Objective-C. The advantage of this approach is access to very specific functions of each system. So, using one codebase, all the logic that we put in an application can simply be copied to a project for another platform, such as Android or Windows. Importantly, with Xamarin Native, the user interface is developed in native tools.

So in native Xamarin, you can have full access to the user interface and you can create such a sophisticated user interface as in native development. But on the other hand, you can share a lot of code across platforms. So it is much more efficient and generally cheaper to develop. And what's important in Xamarin Native, you can create really big, sophisticated applications. For example, at Leaware, we have developed many applications, banking applications, financial applications in Xamarin Native.


Applications in this approach are cross-platform applications in which most of the code responsible for the appearance (interface) and logic can be shared between all projects within one solution, which is possible thanks to Xamarin.Forms library. The goal of Xamarin.Forms are to facilitate building a user interface without knowing the native tools on iOS and Android as well as Windows. With Xamarin.Forms, we can share not only the logic of the application but also its appearance, and we do not need to know the native tools here. Like any technology, however, it is not without its drawbacks.

It's nice to think you don't need to know native development details to create user interfaces. But on the other hand, there are some limitations, if our application will operate on something closely related to a given operating system, e.g. Android, Xamarin.Forms will do little too much, because the project logic for each system will have to be written differently - it may happen that some things it cannot be done on one system, although the other will allow it.

So on the one hand, the good thing is that you can share more code for appearance and logic across platforms (and you don't need to know the native tools). But on the other hand, it is a big risk when some functionalities cannot be done in one system or the other in this way.

So if you're going to build an application with a sophisticated UI, you might, say, have trouble building a sophisticated UI.

When to choose Xamarin Native and when to choose Xamarin.Forms?

And the question is, when should I use the Xamarin Native approach and when should I use Xamarin.Forms? And of course, the answer is: it depends. If you are going to develop a project where the UI is very, very sophisticated, you will likely have problems with some components in Xamarin.Forms and you should choose the native path.

If you're building an application where the UI isn't the most important thing, or it's some kind of MVP or the UI is fairly simple, then Xamarin.Forms is the better option. The better answer, because development will be cheaper and faster. You have to decide by judging the user interface and its sophistication.

Please feel free to contact me if you have any questions. For sure I can help you, and I will!