Disclaimer: This is just my opinion. Do not take it to heart; but rather with a grain of salt.
Second Disclaimer: The Xamarin.Forms community is one of the best I've seen in my life. And I fully acknowledge and appreciate the fact that the Xamarin.Forms team is small. I appreciate every single hard-working developer on the team. Thank you from the bottom of my heart.
I am sitting here in my chair, embarking on learning Kotlin and later native Android development. I snapped, I was tired of Xamarin.Forms.
Why was I tired of Xamarin.Forms? Let's have a look at 4 reasons why I quit:
1. Xamarin.Forms apps are impossible to customise:
With Xamarin.Forms apps, you use 'XAML' to customise the UI - it's basically like XML. This is not just regular XAML (which is actually fairly malleable with WPF), this is a different type of XAML only used with Xamarin.Forms.
This XAML flavour is very limiting. Apart from the basics (such as background colour, etc.), it is hard to customise a control with plain Xamarin.Forms-XAML.
Let me tell you something: changing a button's text to lowercase was only possible with custom renderers until one of the newest versions. What are custom renderers, do you ask? Xamarin.Forms controls are not rendered natively, they are passed through a renderer and then, they will be converted into a platform-specific control.
If you want to customise a control, you would need to create your own custom renderer. This means you need to create your own class and extend the base renderer. It also requires additional code, which is a nuisance in my opinion just to change a button's text to lowercase.
If you are looking to create a full-scale application, it may require tens of custom renderers. This is a lot of work, and hard to maintain.
2. Xamarin.Forms apps are incredibly LARGE and slow:
Now, I understand that many people don't think Xamarin.Forms apps are slower than native apps; but in my opinion, yes - they are slower.
On to the main topic: Xamarin.Forms apps are EXTREMELY large. If you create a basic app with nothing inside of it, it can easily be up to 50 MB in size. This is obviously because of the whole layers of abstraction and rendering that needs to be performed (I am just assuming).
I was launching my apps on an old phone with barely any storage. Every time I created a new app, I had to delete the old apps I had created just because I had literally no space left on my phone.
3. The Xamarin.Forms previewer is buggy!
The Xamarin.Forms built-in previewer is practically useless in many scenarios. In the newest Xamarin.Forms, you can change a button's text to lowercase. But - the thing is - you cannot even see these changes until you've actually launched the app on your phone. Only with a custom renderer can you see the changes in the previewer, but even that sometimes is buggy.
I do admit, you could use Vysor to share your phone screen on to your computer. Except you would need to pay for the full version for better quality.
4. Xamarin.Forms is buggy. Period.
As a Xamarin.Forms developer, I encountered around 5, 10, or even 20 bugs a day. This is one of the core reasons I stopped using Xamarin.Forms: Even though it's passed years after it was initially released, it still feels as though it was created yesterday.
Xamarin.Forms - in my opinion - is still immature. You could say it's like a child: it has a lot of growing up to do. The core concept is great: Cross-platform mobile development with up to 95% code reusability (not only iOS and Android but also Tizen - and in the future - desktop and macOS) but it comes at a cost; and everyone who wants to learn Xamarin.Forms should be made aware of these costs.
I heard someone sum it up nicely: Xamarin.Forms creates more problems than it solves them.
Xamarin.Forms is good for cross-platform business-oriented applications that are need to be shipped fast - regardless of how ugly the UI is.
And honestly, there are so many things I love about Xamarin.Forms. I love how it's built upon the .NET framework. You get all the benefits of C#. Using MVVM with Xamarin.Forms was also amazing for me. I don't think anything will ever compare to MVVM-development with C#.
I also appreciate the hard work the small team is putting into fixing these bugs - and just making it better overall. I am grateful for all you do very much.
Thanks for reading,