.NET MAUI: .NET Multi-Platform App UI

evo_9 | 349 points

The amount of energy Microsoft is pouring into these front-end efforts is pretty incredible. A more recent development that has me very excited is Blazor Desktop:

https://medium.com/young-coder/blazor-desktop-the-electron-f...

> This leads to the second difference — in a Blazor Desktop app hosted in WebWindow, there’s no built-in web server. Instead, it’s pure .NET all the way down. And while we haven’t seen exactly how this will be implemented, it offers the chance to simplify the hosting model quite a bit. If everything comes together just right, it will be like using Electron without needing to learn Node.

I honestly believe this model is going to revolutionize front-end development. The productivity uplift of not having to fuck around with JSON APIs alone is worth the price of admission. We already use Blazor (server-side) for several of our webapps. I have been able to implement things in 4 hours that would easily have taken 4 weeks if I had to argue with other developers about the shape of a JSON blob on the wire. Need a projection involving 3 collections to produce a table? No problem. It's literally 3-5 lines of LINQ in your razor file. With a "proper" JSON API, you would probably have to fetch 3 different resources to the client or develop a special unicorn method for each unique projection.

bob1029 | 3 years ago

.NET 6? Hold up, WPF was never really finished. This is demonstrated by existence of companies which sell lacking components that should otherwise have been included with WPF: Telerik, Infragistics, Syncfusion etc. Heck, creating a Report with out-of-the-box WPF is an unforgettable nightmare.

I, for one, would prefer that Microsoft, instead of pumping all these half-finished "cool new toys", ships stable, performant, feature-complete software. We either have to buy 3rd party components, or write our own components from the ground up. Sure, they provide a Button or a Combobox, but good luck if you need anything slightly more complex, like a searchable GridView, autocomplete Combobox, Charts etc.

dt3ft | 3 years ago

How likely will it be that F# is supported out of the box?

I understand that this is a push for mobile but hopefully a linux support will be considered.

https://github.com/jsuarezruiz/forms-gtk-progress/issues/31

alskdj21 | 3 years ago

Fool me once shame on you, fool me twice shame on me. Windows phone/Xamarin, Microsoft really doesn’t understand what mobile developers want. What’s the point in investing to learn something when it will be in the hospice next year.

Ecstatify | 3 years ago

Win32->MFC->ATL->WTL->Windows Forms->WPF->WinRT->UWP->WinUI->MAUI

More churn, more abstraction, much of it feels unfinished. This is starting to make Electron look attractive.

tonyedgecombe | 3 years ago

Lately I've been using AvaloniaUI ( https://github.com/AvaloniaUI/Avalonia ) for all new projects. For most intents and purposes it is much easier to make single UI codebase work across platforms when behavior and look of components does not depend on quirks of native controls (which MAUI wraps).

lostmsu | 3 years ago

No offense, but call me when there's any Linux desktop target option.

tracker1 | 3 years ago

> In addition, we are enabling developers to write fluent C# UI and implement the increasingly popular Model-View-Update (MVU) pattern. MVU promotes a one-way flow of data and state management, as well as a code-first development experience that rapidly updates the UI by applying only the changes necessary.

I am very interested in this. Last year I developed a .Net Win UI/UWP app and while I enjoyed the rich library of UI components, I really did not like the weird imperative/declarative hybrid model of building UI, as someone who is so used to React.

I would love to see some better layout fundamentals in this space.

I wonder and hope I can use this with Xbox Game Bar SDK on Windows :)

madeofpalk | 3 years ago

Any direct experiences using this? I've been looking for a good multiplatform UI for desktop that does Mac/Linux/Windows. Mobile is a nice side benefit. It would be nice to use C# again

No, I'm not interested in Electron. Blegh.

tomc1985 | 3 years ago

Basically MAUI is the next phase of Xamarin/UWP as that was not fully ported on the UI side in .NET 5 which was the merging of .NET Framework 4.x and .NET Core 3.1.

.NET 6 UI is essentially being replaced with this for .NET 6.

I use Xamarin/UWP quite a bit for apps that also have to target Surface and it is great, the ability to use Xamarin.Forms and/or use CustomRenderers per platform is nice. This should follow similar lines and be ready for .NET 6 which is really the true final step in merging the .NET branches and fully making it cross-platform to the app level.

Microsoft has truly been on the cross-platform aim for a long time now which makes developers happy, they do want to push users to use Azure which is really the new OS to them, but are open about platforms which is nice.

This will be a great way to get apps across all platforms and another iteration of Xamarin which is excellent for that.

drawkbox | 3 years ago

This is Xamarin forms with a new name.

ghuntley | 3 years ago

Not to be confused with the anterior and kirigami-based https://mauikit.org/

MayeulC | 3 years ago

I'm an absolute huge fan of all things .NET but I'm honestly a little hesitant about MAUI for now. Just feels a little early and duct-tapped? I also had a poor experience with Xamarin years ago...

Flutter is such a good experience for us right now. I'd love "Flutter but in C#" which I think is what they want to do with Xamarin.Forms. Is it ready?

vyrotek | 3 years ago

The real "Write once, run anywhere" technology is the open web platform. Now with SIMD, WebGPU, Houdini, and more. Container queries built-in for responsive layouts. Run on touchscreens, virtual reality, desktop and more.

I expect HTML/CSS/JS performance optimization to be valued as a skill more. It is arguably great cross-platform technology (though lacking native widgets), but it has a lot of performance footguns, which we need people to be disciplined about.

crazypython | 3 years ago

I would say I'm hopeful for this to bear fruit. MS is in a much different position today than in the past. That said, my opinion still generally stands, When I see 3 versions from MS with cross platform support, at that point I'll consider it.

For me, without a supported Linux target, it's pretty much a no-go. Having a single UI platform that gets you most of the way there is really nice. Part of why I actually like the embedded web options out there. If this gets a Linux target and shows decent output for Mac, Windows, Linux, Android and iOS, it will gain a lot of market share. For many, lack of Linux isn't even an issue, and that will likely spur some early adoption.

Those who have been burned by Silverlight or Xamarin.Forms in the past, let alone other options, will be far more cautious.

tracker1 | 3 years ago

I don’t get why MSFT keep making the same thing over and over again. Who really cares about these abstraction layers. They produce junk apps by people who rarely care to keep up with them and go obsolete quickly.

rubyfan | 3 years ago

That thing is almost useless for the rich GUI I usually work on. I often need to integrate hardware-rendered pieces: 3D content, hardware decoded video, images computed by CUDA, etc.

Technically the web has comparable things, WebGL and video element, but they are very limited compared to native stuff. Also usability is not great, JavaScript is too different from C and all these low-level multimedia related things are essentially C APIs.

Const-me | 3 years ago

Having used WinForms and WPF and Xamarin, it's great to see a more cross-platform approach.

teryyy | 3 years ago

XAML? Ugh. For those of us who worked on wpf for years using xaml and then used react native this feel like someone still in denial at Microsoft.

I guess I should be happy my xaml experience is still relevant...

dnndev | 3 years ago

Does anyone know how MAUI compares to Uno?

https://github.com/unoplatform/uno

miguelrochefort | 3 years ago

Would love to see/use demo apps, both from a source code standpoint and the user interactions. Until then this gives me Flutter vibes.

whalesalad | 3 years ago

How does it compare to jetpack compose and the web? (ergonomics, capabilities, performance)

What is the 2D renderer being used, skia?

Usually the biggest selling point of non web GUIs is being NOT js. If only Microsoft could integrate graalVM in Edge/electron then we could all use our favorite language in the feature complete APIs of the web.

The_rationalist | 3 years ago

Can they really call it cross platform when Linux isn't officially supported?

DonnyV | 3 years ago

Has anyone done much with this? I wouldn't mind moving on from Windows Forms but the stuff that's come after seems like evolutionary dead ends that weren't really worth my time, so far...

emodendroket | 3 years ago

How many front end frameworks does cross platform .NET has these days ?

jayonsoftware | 3 years ago

Exciting! Let the cross platform games begin! (or continue..)

codeptualize | 3 years ago

I really hope that there is a strong focus on performance.

osigurdson | 3 years ago

About time. Developers have been asking for the ability to write cross platform C# desktop apps for two decades now.

LennyWhiteJr | 3 years ago

Last time I looked the download overhead for Blazor was a non-starter for anything other than an intranet.

cutler | 3 years ago

Is there any way to preview this on a mac? I see Visual Studio mac is not yet supported...

mapmap | 3 years ago

anyone could tell me is blazor has feature like stimulusreflex/turbo hotwire/livewire from laravel/liveview from phoenix?

firemelt | 3 years ago

No Linux support

IceWreck | 3 years ago

Am and always will be a .NET fanboy but I've been out of the grid for some months. Pretty exciting to see things moving nicely.

rafaelvasco | 3 years ago

What the fuck is wrong with Microsoft these days? Why can’t they stick to a single UI library for more than a year? We don’t want n+1 incompatible UI frameworks. We want a single UI toolkit that you stay committed to, with rich controls and long-term support. I can’t believe that in 2021 WinForms is still the only sorta decent option to write Windows applications.

layoutIfNeeded | 3 years ago
[deleted]
| 3 years ago