So it has been a while since my post in May about .Net Maui and not a lot has happened since then in terms of official announcements about it and very little seemingly committed to the github repos either. I’ve seen a lot of chat about whether or not this is actually happening, or if it is just one of those ideas that falls to the way side after announcing and then realizing it is alot of work to make happen.
Most recently, the most recent Xamarin Community Standup addressed this so is a quick summary for those of you without an hour to spend watching it! Full credits for the screengrabs here to the Xamarin team!
.Net 5 General Release and Xamarin Forms 5
This is the biggest announcement, as .Net Maui is to be shipped with .Net 6. This means that now that .Net 5 is out, focus is on .Net 6 and development of .Net Maui can start in earnest against the pre builds. To find out more about .Net 6 and the ‘themes’ being developed for it, head over to themesof.net to see the epics in proposed .Net 6 release.
Along side .Net 5, comes Xamarin 5. Again, a big milestone for the road map as now all focus is on the next major release, which we know is .Net Maui. Expect to see a lot more about .Net Maui as the specification starts to get defined.
.Net Maui Focus Areas
The Xamarin team have promised that all the learnings from Xamarin over the last 6 years are under focus in Maui to help them deliver real value to developers.
First off, lets confirm that .Net Maui is Multi Platform App UI. Xamarin is being fully integrated into .Net and as such, is truly multi platform at release. In reality this means that they are aiming for this to be fully functional at release, but value adds like Intellisense on XAML would come later. There is also an exception here with Linux, which is not currently in scope by the Xamarin team.
The big work over the last ten months has been on Xamarin 5 as a stepping stone to .Net Maui. So what is actually going to be different between the two? Queue greate slide ware from the Xamarin team.
One of the big areas for all Apps is the UI, so getting full control over the interface is a major milestone for me. The change here is the introduction of interfaces for UI elements and what this actually means is that it is decoupled from the implementation, allowing you (or communities) to make your own handlers depending on your needs. It also looks to introduce a way to register the types you are using to reduce the need for assembly scans which is great for performance.
Migrating to .Net Maui
So what is the migration path? First off, you don’t have to migrate. .Net 5 is fully supported for 12 months and lets be honest, most companies have applications that are old and off of official support (not an endorsement, a sad fact).
There will be a supported tool TryConvert as the starting point for an initial migration. This is not a full migration and most projects will require more work by updating dependencies, building and seeing what breaks. There could be issues with namespaces or your libraries that you are using might not have updated to support it yet.
The biggest message, is that this is NOT a rewrite. For the most part, it should be configuration and there will be guides and tooling to help you out.
New communtiy tools and SDKs
Various new tools and sdks were discussed, most of the great additions form the community! You can check out the full list talked about here. I’m going to skate over this though as this blog about Maui.
Apple Sillicon and Catalyst
For those that are interested in running your apps on mac, this is supported with Apple Sillicon natively, (for the most part) and Apple will tell you if your app will run or if you need to tweak it (common examples are when you rely on location permissions for example as this is different on mac as it is stationary). It will run in a small screen to match screen size, so if you want to go to a more native variant there is more work and you have to use Catalyst. The Xamarin team and planning more in this space soon.