What is our primary use case?
We mainly build mobile solutions for enterprises. In most of the cases, it does require a lot of complex domain knowledge and multiple integrations with various internal systems, pretty often legacy ones.
We decided to work with Xamarin, since it does give us a lot of advantages compared to fully native solutions, which use Java or Swift/Objective-C. First, it allows us to reuse our knowledge of C# and .NET Framework. Next, since .NET and Java are the most common choices for enterprise platforms, it allows us to reuse some parts of business logic without the need to re-write/port them. Then, there is the possibility to apply well-known MVVM patterns to both Android and iOS targeting apps with reuse of up to 70% codebase between platforms, not to mention automated testing possibilities.
How has it helped my organization?
Xamarin brought various benefits to our clients. For example, we were able to optimize the service organization for one of our clients. Customers can use now a branded mobile application to submit issues within the customer products. It allows for QR code scanning with error details. It makes it much easier for customers to report issues and for service employees to collect all necessary data, then quickly respond to the customer’s needs.
What is most valuable?
The possibility to share business domain model-related code between iOS and Android.
What needs improvement?
It would be great to have some quirks of Xamarin.Forms solved. However, the number of community developed libraries and components are growing rapidly, so this should be another advantage soon.
Nowadays, it is common to find a problem that you would need to develop from the start since there are no third-party components to reuse.
For how long have I used the solution?
One to three years.
What other advice do I have?
It does have its drawbacks. From time to time, it is a bit harder to code some specific scenarios compared to the native approach. Since Xamarin is the another layer of abstraction, it also adds its own bugs to the whole process. However, the overall experience is really positive. The benefits listed above are much higher than the costs associated with the overhead needed to work with Xamarin.