We use Xamarin for all of our mobile app development. Like working in C# and in Visual Studio.
Using Xamarin with Visual Studio allows us to create mobile apps without learning a new IDE or tool. It does make publishing a little more complex than I think it should be, but that's just my opinion.
Pros
Writing in C#
Uses Visual Studio
Shared code base (99%)
Cons
I wish it would deploy and debug faster
The Apple connection is a bit tenuous occasionaly
The Xamarin forms updates can get really painful
Likelihood to Recommend
Xamarin is well suited for mobile app development. It's nice to share almost all of our code between Apple and Android as well as between phones and tablets. We have our own PC tool, I don't use it for PC or Mac development but would like to go there with some shared code at some point.
Xamarin was used in a couple of projects by my organization. When it comes to faster development one should go for it. Yes, there are challenges but compared to developing two separate applications for the same purpose in different platforms this is the best choice. This application is better in performance compared to hybrid applications.
Pros
Native application
Code based to some extent. It is the same except specialized UI for different OS
Faster development compared to native application development.
Cons
teaching a Microsoft developers who has no experience in mobile application development is a challenge
Should be simpler for deployment to devices.
Likelihood to Recommend
Business application its the best bet. For game-like applications, it may not be the best bet.
I've been using Xamarin for 100% of my mobile work since 2012. In my current organization, we have a Xamarin mobile app for nearly all of our projects.
Pros
Sharing code with other parts of an application, including backend and web
Not having to re-write the same application multiple times
Not having to maintain multiple versions of the same application in parallel (features, bugfixes, etc.)
Getting to use C# and all of its wonderful features for mobile development
Cons
Xamarin could provide more recognition and support to those of us who have been with them since the beginning
Likelihood to Recommend
I've introduced Xamarin to multiple organizations. Unless you have engineers who insist on not knowing C#, there are rarely any instances where it's not the best choice.
As an independent consultant, I use Xamarin with many small companies. Often, they bring me on in the early stages to evaluate and recommend improvements to their mobile strategy. Xamarin addresses the business problem of speed and resources. With Xamarin, you can develop mobile apps faster as well as utilizing existing resources. Some companies may have existing .NET developers in which case Xamarin fits well and the learning curve of mobile is less because of the familiarity with .NET.
Pros
Xamarin allows you to write cross platform code. This allows companies to build apps more quickly by writing less code. Having code abstracted and reused across multiple platforms allows for more testing and less issues overall.
The ability to use Visual Studio is a huge plus. Visual Studio is one of the best IDE's available and being able to write cross platforms apps while in a great IDE makes everything less painful.
Xamarin is now free with a large company backing. This means that bugs on the platform get fixed more quickly and there is a large community of developers.
Cons
Having also done a lot of native mobile development, some of the IDE's features need to emulator their native counterparts. For example, trying to extract a string resource on Android in Xamarin Studio is painful. There are many useful tools in Android Studio that Xamarin should implement.
Xamarin will always be behind on native platform features. They must catch up when Apple and Google release new platform versions.
The biggest pain point is the random issues Xamarin continues to have. Having a large code base on top of a native platform makes it very difficult to debug issues. Every developer must decide if its an issue with Xamarin or the native platform. Bugs don't get fixed very quickly. Hopefully that will change with the Microsoft acquisition.
Likelihood to Recommend
Xamarin is well suited for several reasons. The first, it allows companies to share code across platforms. If the app has a lot of business logic and a fairly simple UI, Xamarin is great for this use case. Xamarin also works well if the developers who will work on the app are already fluent in .NET. Xamarin is less appropriate if the company has a lot of developers. If there are plenty of resources to develop apps natively then the headache of dealing with Xamarin's issues are not worth the effort. If the UI is very complex and has difficult animations it's difficult to debug visual/performance issues in Xamarin.
VU
Verified User
Engineer in Research & Development (Internet company, 1001-5000 employees)
We use Xamarin for cross-platform development. We like the idea of a code base sharing between platforms. Our apps are either built with Xamarin, or will be built with Xamarin. The problems it addresses is the amount of time and money it costs to have two full native applications.
Pros
Code sharing - I mean, you can do the work in half the time. Great way to release to multiple markets without having to write code twice.
Robust - Basically anything you need on the OS level is available.
Intuitive - Xamarin gives you the capability of a code share project, and then platform specific projects. You can communicate between the two and it makes it very nice to develop in.
Cons
Forms - not 100% there. Still needs work but is production ready.
iOS - sometimes errors can be hard to understand, if they even show up.
Insights - Xamarin offers their own crash analytics software. However, it's not perfect and sometimes doesn't pick up crashes.
Likelihood to Recommend
Xamarin is great for any scenario, even if you don't utilize Xamarin Forms, which is the code sharing capability. But even if you just utilized the platform specific code, it's still all in C#. Makes it easy to not only maintain, but later hire developers who might not have any Xamarin experience to be able to come on board quickly and make an effect.