When to use Xamarin.Forms vs Xamarin Native?

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

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.


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