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