Xamarin.Forms is a great tool. I strongly advocate using Xamarin to help you develop cross-platform apps quickly. However, Xamarin should not be the only tool in your toolbox. Like any tool, it has its strengths and weaknesses.
1. Xamarin.Forms is not for gaming
If you are developing a game, look elsewhere. Xamarin and especially Xamarin.Forms shines when building business apps or simple utility apps. Xamarin struggles with graphically intense user interfaces. You will be better off using the native languages for each platform. Going native will give you more control over the graphical interface. It will also allow you access to more packages and tools.
2. No Mac No Apple App
If you think you can develop an iOS app for Apple using your Microsoft Windows based machine, think again. Apple strictly controls how developers use their platform. While you can use a Microsoft Windows based machine to right your code, there are several steps that are going to require a Mac. Apple has a certificate application process which can only be originated from an Apple device. An Apple device with XCode must be connected to your network in order to compile any Xamarin for iOS code you write. No Apple, no apple app package.
3. No Native Devices
This is a close cousin to item number two. You can marginally get away with coding to the emulators. However, you are going to run into failures that only occur on the emulator. You are also going to run into failures that occur on the devices, but not the emulator. This doesn’t mean that you need to have one of every iPhone or Android Phone ever created. However, having at least one of each for testing will come in handy. I’ve struggled before with a bug that only appears in the emulator or only appears on the device. Trust me, you don’t want to release an app that works great on your emulator but fails on 90% of the devices your users install them on.
4. You don’t know C#
Okay, this problem can be remedied. If you don’t already know C#, then you will struggle a bit to get started. Everything you code in Xamarin is going to be in the C# language. You’re going to need to learn the basics.
5. You Lack Patience
This last one is tricky. I could write a post on all the issues I’ve run into with Xamarin. On second thought, I could write several posts on each.
Xamarin is not without its quirks. I’ve run into a few problems that caused hours of struggles.
Issues with Xamarin
- Emulators Fail
- Xamarin Installation Fails
- Random build failures
- Code examples fail – underlying bugs
- Intellisense fails
- Dependency Madness
- Platform Changes
- No real WYSIWYG GUI builder
Emulators and Installation>
These issues can be maddening. If the emulators completely quit working or your Xamarin installation fails, good luck. I struggled with these problems early on. One day, Visual Studio 2017 was working perfectly. Then, an update or two later and it quit. The emulators wouldn’t load at all. Reinstalling failed. Some of the apps installed by the Visual Studio installer refused to uninstall. I once wiped a machine clean for a fresh start.
The next three items can appear randomly. You’ll spend hours sorting through the web to find a solution. You’ll apply 100 code changes on advice of those who have gone before you. Then, finally, you’ll stumble upon on a post that says Xamarin sometimes gets confused and needs a reboot. Only, now you’ve made so many changes you won’t know where to start after you reboot. When weird things happen, I close and reopen Visual Studio. Most times, that fixes the weirdness.
Random Failures and Dependency Issues
The Dependency and Platform issues are necessarily a problem with Xamarin, but it will drive you nuts. I tend to be one who sees “update available” as a requirement. Xamarin is curing me of that disease. Why? You’ll find that when you upgrade a package your app may quit working. Then you’ll discover that your favorite method has been deprecated by Google. Or, you’ll run into compatibility issues with one of the many Android library requirements. You need to update Support.Compat, but you cannot because of Build.Download dependencies.
Lack of a Real Designer
Finally, there is no good visual designer for Xamarin.Forms. Yes you can use live player or some other hacks, but I’ve not had a good experience with these methods. Certainly the Xamarin way is not like the old WPF or Windows Forms or even UWP designer. Blend would be great. You’ll be in real trouble one day when Intellisense quits working.
I have found that searching for “Xamarin” and then your error usually gives you a correct answer. However, sometimes you have to play with the language to get the right results.
What next?
I hope I haven’t scared you all away. Despite the challenges, I’m still a proponent of Xamarin. However, I do have to be fair and acknowledge some of the weaknesses upfront. The good thing is Microsoft is making an investment in Xamarin. There is a good community of developers with answers. Still, I am reminded of other products Microsoft supported in the past like the Zune or Windows Phone. Microsoft does have a way of abandoning a product if it does not compete at the top. Xamarin still holds hope of further maturing and becoming an even better product. I will continue to use it as long as it continues to mature.
Feedback
Have you run into problems with Xamarin? Add your comments below and become part of the conversation.
Leave a Reply