Xamarin is a cross-platform mobile app development environment that uses .NET/C# to develop Android, iOS and Windows Phone apps.
There are many obvious benefits to using Xamarin. First, the learning curve is substantially reduced. The developer only needs to be fluent in .NET/C#, whereas if you are developing native applications in iOS and Android, the developer needs to be fluent in both Objective-C and Java. It is rare that a single developer is fluent in both.
Second, the fact that the application only needs to be coded once substantially reduces the time to market. Furthermore, because there you are using a shared code base between platforms, you will encounter fewer platform specific bugs. The biggest, and most advertised advantage of Xamarin compared to other cross-platform tools is that it supports native user interfaces and therefore can provide the type of user experience that iOS and Android users are accustomed to.
So what are the disadvantages to using Xamarin? The first issue is app overhead. Xamarin based apps have built in overhead that often makes them have a larger footprint, which can affect download time and the amount of storage space a Xamarin app uses on your devices. The Xamarin team has been doing a good job in working continually to reduce the size, but app users are still somewhat impacted.
A second disadvantage is the lack of ability to share code outside of Xamarin. In other words, any code written by a team of developers using Xamarin and C# cannot be shared with other developers or teams that are only using Objective C, Swift or Java, whereas you can import and bind Objective C and Java with C# in Xamarin. This may never be an issue if you’ve already made the commitment to standardize on Xamarin and C# for all your apps, but it is something to be considered.
The last, and arguably most significant downside is the lack of community support for Xamarin. There is a wealth of information online (in forums, groups, communities, etc.) for iOS, Android, and .NET developers to turn to when they face issues. Developers run into issues on a daily basis, and when they can perform a quick Google search to find all kinds of answers, it keeps development moving forward. Due to the fact that the Xamarin community is relatively new, there are far fewer resources available, and when developers hit roadblocks it’s quite possible they won’t find a solution online. Therefore, obstacles may need to be figured out by the team, which will ultimately increase development time. This is the reason why it often makes sense to a hire a Xamarin Certified Partner, since they will have access to more support resources through the partner program.
As time goes on, Xamarin online support will grow. It is definitely the best cross-platform development environment available today and is attracting more and more developers to the community every day. Xamarin is gaining acceptance with large corporations, including Microsoft, Kellog's, Honeywell and others. If you're looking to develop a cross-platform, native mobile application and are willing to accept some minimal downside, then Xamarin may be just the right tool for you.