What is the difference between Xamarin.Forms and Xamarin Native?

Xamarinxamarin.forms

Xamarin Problem Overview


I am confused between Xamarin.Forms and Xamarin native.

What is the difference between the two?

So what are the technical positives and negatives of using Xamarin.Forms over Xamarin Native?

Xamarin Solutions


Solution 1 - Xamarin

Xamarin.Forms

Pros

  • Create one UI for all platforms
  • Use basic components that are available on all platforms (like Buttons, Textfields, Spinners etc.)
  • No need to learn all the native UI frameworks
  • Fast cross platform development process
  • Custom native renderers give you the ability to adjust the appearance and feeling of controls

Cons

  • It's still a new framework and still contains bugs
  • Especially Windows RT is not yet stable
  • It's sometimes slower than accessing the native controls directly
  • Custom native renderers have boundaries and are poorly documented

Xamarin.Android, Xamarin.iOS, Windows Phone, Windows RT

Pros

  • Create one UI per platform
  • Easy ability to adjust the platform specific UI features and components
  • Get the maximum out of your UI

Cons

  • Cross platform development process is much slower
  • You need to learn all native UI frameworks
  • You may result in having duplicate code (as you describe almost the same UI in three different platform specific ways)

In addition to that Xamarin says on https://xamarin.com/forms:

Which Xamarin approach is best for your app?

Xamarin.Forms is best for:

  • Data entry apps
  • Prototypes and proofs-of-concept
  • Apps that require little platform-specific functionality
  • Apps where code sharing is more important than custom UI

Xamarin.iOS & Xamarin.Android are best for:

  • Apps that require specialized interactions
  • Apps with highly polished design
  • Apps that use many platform-specific APIs
  • Apps where custom UI is more important than code sharing

Solution 2 - Xamarin

Aside from the points shown in the Xamarin Website, you should also consider:

Your team's background

Does anyone in your team have a previous experience coding natively for Android or iOS (using Java or Obj-C/Swift)? This experience is reused in native Xamarin, but they'll have to learn another platform to code in Forms.

The same is true if they know nothing about iOS/Android but know some XAML. Sure Xamarin.Forms are different from WPF/Silverlight, but knowing XAML surely helped me using Forms.

Performance

Xamarin Forms still has some issues, such as initialization time. You should consider whether or not this will be a problem for your final user. I wouldn't bother to wait a while for a dashboard app that I use once in a while to open, but I'd be angry if the same happened to a messaging app.

Time until delivery

Since the code sharing is bigger when using Forms, you may expect a quicker delivery time.

Complexity of your app

Considering the previous point, using Forms you may stumble on some show stopper bug (it's a very new technology after all) that will null the time gains. Consider the complexity of your application before choosing.

Solution 3 - Xamarin

From the Xamarin Website

Xamarin.Forms is best for:

  • Data entry apps
  • Prototypes and proofs-of-concept
  • Apps that require little platform-specific functionality
  • Apps where code sharing is more important than custom UI

Xamarin.iOS & Xamarin.Android are best for:

  • Apps that require specialized interactions

  • Apps with highly polished design

  • Apps that use many platform-specific APIs

  • Apps where custom UI is more important than code sharing

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionAjay KumarView Question on Stackoverflow
Solution 1 - XamarinWosiView Answer on Stackoverflow
Solution 2 - XamarinWilliam BarbosaView Answer on Stackoverflow
Solution 3 - XamarinGuilherme Torres CastroView Answer on Stackoverflow