Quick Links

Xamarin.Forms Feature Roadmap

Posts

A while ago, I outsourced (at my own expense!) development of drag & drop functionality for use in my first app. There's still work to be done (the biggest bit is that UWP is not working currently), but the code so far can be found at https://github.com/johnshardman/XF_DragAndDrop

If nothing else, it shows that it can be done (subject to getting it working on UWP). Any chance of the Xamarin.Forms team taking this over, completing & enhancing, to get it built into ListView at some point in future, even if a fairly distant future?

I don't mind building a DraggableGestureRecogniser similar to what I did with the SwipeGestureRecogniser?

@DavidOrtinau - Accessibility is a NFR that many developers overlook. A big thumbs up from me for getting it visibly on the roadmap. The statistics for how many potential users are excluded by not supporting accessibility come as a surprise to most devs. Supporting accessibility is not just the right thing to do, it also increases potential revenues by increasing the number of potential users of an app.

(It's also one to bear in mind when looking at drag & drop, which is inherently accessibility-unfriendly. Any functionality that is implemented using drag & drop also has to have a more accessibility-friendly method of use).

Data protection legislation is another area that often gets overlooked. Whilst I understand you are looking primarily at XF, is anybody publishing a roadmap for Insights/HockeyApp? It's vital that it takes into account data protection legislation in different parts of the world. In the work I am doing with Xamarin.Forms, I am using Insights & HockeyApp during development, but I will be replacing it before going to production unless legislation is taken into account. I hope that the Microsoft acquisition of Xamarin will result in Microsoft's understanding of global issues resulting in products being updated, but a timescale would be useful.

@DavidOrtinau - thanks David. At last, it feels like the XF product team are listening to what the community really wants, rather than getting excited about lots of cool new features (understandable as developers always want to do something new, but not what we need!). XF is now feature rich enough to be a serious candidate for mainstream development, however stability and performance (especially on Android) are serious concerns. Thank you to the entire XF team for recognizing that and seriously planning to address those.

Does this mean native XAML and XF XAML can live together in the same view or are we saying a separate view for native and XF ?

This would be a really great feature especially enhancing XF with more native UWP desktop PC form factors. Can't wait !! Any plans to work closer to the template10 guys on UWP ? They doing a great job and it would be awesome to see closer integration between Xamarin and Template10.

@JohnHardman said:
Data protection legislation is another area that often gets overlooked. Whilst I understand you are looking primarily at XF, is anybody publishing a roadmap for Insights/HockeyApp? It's vital that it takes into account data protection legislation in different parts of the world.

I just wanted to say that I also feel like this is pretty important. I personally have zero knowledge of all the different laws.

The EU used to allow data to be transmitted to US companies under what was called Safe Harbor. A recent court ruling has ruled that Safe Harbor does not offer the necessary level of protection. This is why Xamarin.Insights only using servers in the USA is problematic if the data transferred might be personally identifiable. I would hope that the migration to HockeyApp would resolve this, but I do not know.

Some (non-EU) countries require that data be stored not just within the same region, but within the same country.

There are even countries that impose a firewall around themselves, which can prevent reliable or performant communication with servers elsewhere. The Great Firewall of China is the best known example of this. Trying to test mapping software across that firewall caused me some headaches. I certainly wouldn't try using blockchain across it any time soon.

And then there are specific company requirements. Some corporate customers may require that analytics are stored on the company's own infrastructure rather than being sent to Xamarin/Microsoft servers. That's not legislation, but the rules of individual companies.

A while ago, I outsourced (at my own expense!) development of drag & drop functionality for use in my first app. There's still work to be done (the biggest bit is that UWP is not working currently), but the code so far can be found at https://github.com/johnshardman/XF_DragAndDrop

If nothing else, it shows that it can be done (subject to getting it working on UWP). Any chance of the Xamarin.Forms team taking this over, completing & enhancing, to get it built into ListView at some point in future, even if a fairly distant future?

I don't mind building a DraggableGestureRecogniser similar to what I did with the SwipeGestureRecogniser?

A while ago, I outsourced (at my own expense!) development of drag & drop functionality for use in my first app. There's still work to be done (the biggest bit is that UWP is not working currently), but the code so far can be found at https://github.com/johnshardman/XF_DragAndDrop

If nothing else, it shows that it can be done (subject to getting it working on UWP). Any chance of the Xamarin.Forms team taking this over, completing & enhancing, to get it built into ListView at some point in future, even if a fairly distant future?

I don't mind building a DraggableGestureRecogniser similar to what I did with the SwipeGestureRecogniser?

I know that this is an old platform, but this is a dealbreaker for us.

We have a major customer with thousands of devices in many countries around the world, and replacing them all is prohibitivly expensive. If this happens, we will not be able to upgrade to any future version. Please reconsider.

I know that this is an old platform, but this is a dealbreaker for us.

We have a major customer with thousands of devices in many countries around the world, and replacing them all is prohibitivly expensive. If this happens, we will not be able to upgrade to any future version. Please reconsider.

Let's talk about this and what your options might be. I'll reach out directly.

Any word on push notification support? It appears Google Could Messaging (GCM) is deprecated (I can't even register a GCM API key anymore in Azure, since Google stopped accepting new keys that aren't Firebase), and Xamarin Forms is still maintaining a hard dependency on Google Play Service 29.0.0.1. As far as I can tell, push notifications with XF/Android are broken for new projects - this has showstopper quality for the whole platform IMO.

@PhilippSumi said:
Any word on push notification support? It appears Google Could Messaging (GCM) is deprecated (I can't even register a GCM API key anymore in Azure, since Google stopped accepting new keys that aren't Firebase), and Xamarin Forms is still maintaining a hard dependency on Google Play Service 29.0.0.1. As far as I can tell, push notifications with XF/Android are broken for new projects - this has showstopper quality for the whole platform IMO.

As mentioned in the 2.3.4.184-pre1 thread, the dependency is still present and thus nothing is changed on that front yet. It's a well known pain point and we hope to have a way forward soon. I'll eagerly share progress on this as I have it.

If Azure is an option for you, push notifications are working there last I checked.

@DavidOrtinau said:
If Azure is an option for you, push notifications are working there last I checked.

I am running an Azure Notification Hub, but Azure relies on GCM. I tried registering my GCM key with my Azure Notification Hub but got an error from the Google side - apparently, they stopped supporting new registrations in September, but require FCM server IDs. Registering my FCM server key works of course, but that gets me to the FCM problem on Android.

@BBright said:@PhilippSumi
Hi, Push notification is working fine for me on XF/Android.
I registered on Firebase and got a key (FCM).
And I use it with GCM framework on XF/Android.
I'm not using Azure server.

Is this what you're talking about?
Maybe not?..

Yay! I got it to work with a completely new GCM setup:

Created a new project in the Google API console

Enabled GCM and created an API key for it. Restricted the API key to my Android app.

Created a new Firebase project by importing the Google project

Registered the Firebase Server key (the new long one) in Azure Notification Hub

My relationship with Xamarin development has been a kind of love / hate event from the start. I love developing in C# cross-platform. I love how .NET core came along and allowed me to develop the back-end API as fast as my fingers and thoughts will allow and have it sitting on a cheap Linux box with Postgresql to store and serve my data.

But the front-end? SIGH. I hate how clunky it feels by comparison. I hit compile about 2 minutes ago and it's still going. So here's a thought - when we're looking at optimization, as developers we seek out the big gains, the steps we deduce are taking too much time, and we address those first. So why not devote 1-2 iteration cycles to this, but looking at the entire development process.

My votes would be:

Android linking - specifically zipalign.exe and building the APK . Let's get the android compile time to the same level as the PCL compile time. And why compile the APK again if I haven't made any changes? Visual Studio should intelligently just check and relaunch what I had before.

Mono / forms startup & screen display time. I began developing my app in Xamarin Forms. That gave me a 6 second cold startup time and a noticeable lag in screen to screen navigation on my Note 3. Abandoned that for Xamarin Native which shows my splash screen after 1 second but still takes 4 seconds total (sometimes 5) to cold start. My app doesn't do any complicated processing. Surely this can be bettered? I don't currently anticipate getting close to any of the best times logged here: http://blog.nimbledroid.com/2016/02/17/cold-start-times-of-top-apps.html?top?=25&category=MUSIC_STREAMING People really started paying attention when kestrel started to fly ()

UI design. The android screen designer currently doesn't render everything and also slows down to the point of crashing if you use it too many times. I think these are in the process of being fixed, but what about drag and drop screen creation?

Design templates. OK, I admit - I'm graphically challenged. Make it easy for professional graphic designers to produce high quality designs (IN AXML!) that can be quickly integrated to make good looking apps.

On a separate note, my ultimate development fantasy (I do need to get out more) is to create a XF implementation from the group-up which uses a managed C# HTML 5 renderer that is implemented across all platforms and supports C# view models behind the HTML UI. Forget about slavishly following all of the vendor UI changes in XF, just tweak the CSS and it looks like Android, iOS or WP - compiled or interpreted, you choose. Team that with fully supported cross-platform implementations for purchasing, push messaging, secure storage, device info etc and you're looking at the most capable mobile development platform on the planet :-)

Finally, release Xamarin Profiler for everyone with a professional VS subscription. Pretty please?

While I'm on a roll. Just compiled my app for release and it won't talk to my server, whilst the debug version works perfectly. No idea why, but I'm sure I'll find out in about 4-8 hours :-( That's my average TTS (time to solution) when something doesn't work in Xamarin. It's all about the cycle.

@PaulVipond said:
While I'm on a roll. Just compiled my app for release and it won't talk to my server, whilst the debug version works perfectly. No idea why, but I'm sure I'll find out in about 4-8 hours :-( That's my average TTS (time to solution) when something doesn't work in Xamarin. It's all about the cycle.

Hey Paul, thanks for all your feedback. We are doing work on performance, both in the near term as shown on the roadmap, as well as long term.

2 minute compiles and issues talking to your server in release are NOT to be expected and you've every right to put that in the "hate" column. Let's get that looked at. I'll message you directly and let's find the right channel for you to get some answers.

@PaulVipond said:
While I'm on a roll. Just compiled my app for release and it won't talk to my server, whilst the debug version works perfectly. No idea why, but I'm sure I'll find out in about 4-8 hours :-( That's my average TTS (time to solution) when something doesn't work in Xamarin. It's all about the cycle.

@PhilippSumi said:
Any word on push notification support? It appears Google Could Messaging (GCM) is deprecated (I can't even register a GCM API key anymore in Azure, since Google stopped accepting new keys that aren't Firebase), and Xamarin Forms is still maintaining a hard dependency on Google Play Service 29.0.0.1. As far as I can tell, push notifications with XF/Android are broken for new projects - this has showstopper quality for the whole platform IMO.

As mentioned in the 2.3.4.184-pre1 thread, the dependency is still present and thus nothing is changed on that front yet. It's a well known pain point and we hope to have a way forward soon. I'll eagerly share progress on this as I have it.

If Azure is an option for you, push notifications are working there last I checked.

David, could you tell us please, just approximate dates when planned to implement FCM support for Xamarin Forms (dependence on Android.Support v. 24.2+). One week, one month, one year? I just have a big problem now.

Our company developing an application for a customer within the last 6 months using Xamarin Forms. Now the development has reached the Push-notifications integration (without Azure) and I cannot integrate the FCM in our project. Moreover, for the other customer we now launching a new project, also on Xamarin Forms. A few months later the same problem will arise in new project too.

So, I don’t know what I should to do now. What I must say to my current customer, and how to plan my new project?
I'd be very grateful for any advice.

Great to see the focus on performance, android especially could use some improvements. Its a shame you don't offer the easy ability to just AOT selected assemblies instead of the entire app, from my experiments hacking at the msbuild files you really only need to AOT the main app assembly and a couple of xamarin assemblies to get improved startup and performance on android. AOT adds bloat to the already large apk, so some sort of UI to select which assemblies should be AOT'd would be nice.

Talking of bloat, xamarin currently stores the assemblies uncompressed in the APK, where as with the enterprise version of xamarin you bundle them into a native lib (which gets compressed). Why not compress the assemblies in the non enterprise version - i'm not bothered about the additional 'security' of bundling, but would like the smaller APK size.

@PaulVipond said:
On a separate note, my ultimate development fantasy (I do need to get out more) is to create a XF implementation from the group-up which uses a managed C# HTML 5 renderer that is implemented across all platforms and supports C# view models behind the HTML UI. Forget about slavishly following all of the vendor UI changes in XF, just tweak the CSS and it looks like Android, iOS or WP - compiled or interpreted, you choose.

I like the base concept, but would prefer something like flutter from google. I believe the presentation layer is based on Skia : https://flutter.io/faq/

Watching a flutter presentation a while back, I remember them saying that most of the the award winning apps don't follow vendor UI anyway. So what was true a few year back (stick to the platform UI paradigms) does not necessarily apply anymore. XF might as well supply a new category of UI widgets. Come on XF team. Dip your toes in those waters

@DavidOrtinau Do you have an ETA for the CarouselView release? Do you think it will be early or late February? I'm doing a project and I'm not sure whether I should add the CarouselView or not since it needs to be live in a couple of weeks.

@PaulVipond@BBright
Thanks for your answer, but is this a reliable solution to use FCM with GCM library? FCM doesn’t have to support GCM protocols, am I right? Nevertheless, we will have this solution as a plan “B”. Still waiting for @DavidOrtinau ’s answer.

Watching a flutter presentation a while back, I remember them saying that most of the the award winning apps don't follow vendor UI anyway. So what was true a few year back (stick to the platform UI paradigms) does not necessarily apply anymore. XF might as well supply a new category of UI widgets. Come on XF team. Dip your toes in those waters

I've played around with using SkiaSharp for rendering controls in a couple of ways, its certainly a quick library.

I while back i had a go at porting Xamarin Forms to the Raspberry PI using SkiaSharp (https://github.com/roceh/Xamarin.Forms/tree/skia) it actually ran quite well using a non accelerated pure frame buffer (with what few controls i ported) so I've no doubt GPU accelerated SkiaSharp Xamarin Forms running on Android/iOS would be quite snappy.

I also did a partial SkiaSharp xaml layout container which I've used primary for complex viewcells for performance reasons on Android (https://github.com/roceh/MycoLayout), I was surprised it was faster (as it creates and destroys bitmaps at a fair rate), but the multitude of views on complex layouts that Xamarin Forms Android creates and the interop costs surrounding all that really hurts performance. One of the reasons the May update looks really hopeful.

So removed new NativeMessageHandler() from the constructor and yay - it starts working in release mode. I commented it back in to check that was definitely the issue and ... you guessed it, erm, it was still working. This platform plays with your mind :-)

I've played around with using SkiaSharp for rendering controls in a couple of ways, its certainly a quick library.

I while back i had a go at porting Xamarin Forms to the Raspberry PI using SkiaSharp (https://github.com/roceh/Xamarin.Forms/tree/skia) it actually ran quite well using a non accelerated pure frame buffer (with what few controls i ported) so I've no doubt GPU accelerated SkiaSharp Xamarin Forms running on Android/iOS would be quite snappy.

I also did a partial SkiaSharp xaml layout container which I've used primary for complex viewcells for performance reasons on Android (https://github.com/roceh/MycoLayout), I was surprised it was faster (as it creates and destroys bitmaps at a fair rate), but the multitude of views on complex layouts that Xamarin Forms Android creates and the interop costs surrounding all that really hurts performance. One of the reasons the May update looks really hopeful.

Cool stuff. Thanks for sharing!

XF has been plagued by instability from the get go. I've come to believe that this will continue for architectural reasons. The XF abstraction footprint on the platforms beneath are simply to big. Crack ans crevices will form every time the platform expands, changes og moves - and developers will complain. Adding new platforms will only make the problem bigger.

Make no mistake, I'm here to stay. But I do hope that Xamarin will be looking at initiatives like flutter.io and your links.