Facilitating the Spread of Knowledge and Innovation in Professional Software Development

Write for InfoQ


Choose your language

InfoQ Homepage News MAUI: a Multi-Platform App UI for .NET

MAUI: a Multi-Platform App UI for .NET

This item in japanese

Last month, during the 2020 edition of Build, Microsoft announced the roadmap for .NET MAUI, a multi-platform framework for building native device applications. The new framework comes as an evolution of Xamarin.Forms, providing native features for Android, iOS, macOS, and Windows.

MAUI is part of Microsoft's recent efforts towards unifying the .NET platform. According to Scott Hunter, director of program management at Microsoft:

As we consider what building device applications will look like in a unified .NET, we see many devices across multiple platforms used, from Android and iOS to Windows and macOS. To address this need, we are excited to announce a new first-class UI framework for doing just that: .NET Multi-platform App UI, affectionately called .NET MAUI.

.NET MAUI is an evolution of the Xamarin.Forms toolkit, aimed at improving app performance and simplifying multi-platform app development. The framework will provide a single codebase with built-in resources to access the native API for all modern operating systems (Android, iOS, macOS, Windows). Developers will be able to develop multi-platform applications under a single project structure, adding different resources or source code files for different platforms when necessary.

(source: Microsoft)

Although the evolutionary changes over Xamarin.Forms (reportedly based on early customer research) are yet to be consolidated, a few key features are already confirmed. One of the most relevant ones is related to app development patterns: MAUI will support Model-View-View-Model (MVVM, including ReactiveUI) and Model-View-Update (MVU, currently not supported by Xamarin.Forms). There is also a significant change related to the renderers: instead of being tightly coupled to BindableObject, they will be loosely coupled, with no Core dependencies. A dotnet CLI is also included in the initial features list, as well as support for Blazor applications and specific tools for Visual Studio Code (currently Xamarin.Forms only have specific tools for Visual Studio 2019 and Visual Studio 2019 for Mac).

.NET MAUI is not the first framework built over Xamarin with native intercompatibility in mind. Uno Platform (built on top of the Xamarin Native stack) follows the same philosophy, allowing native development for mobile and desktop platforms. While its key features list is pretty similar to MAUI's, there is a critical difference between the two of them: Uno explicitly supports browser apps under a single codebase (with WebAssembly). Since MAUI features include Blazor support, it is expected that both SignalR and WebAssembly Blazor apps will be supported. However, it is important to notice that the current (experimental) mobile bindings for Blazor use a set of UI definitions based on the Razor syntax - not HTML. That means there are two sets of UI component definitions for Blazor: one targeting web apps, and another one targeting mobile apps. There are currently no mentions related to explicit support for web apps in MAUI's roadmap.

The first public preview for MAUI is expected later this year, with general availability targeted together with .NET 6 (November 2021). Xamarin.Forms transition to .NET MAUI will begin in September, right after the release of version 5.0. In the meantime, it is already possible to engage in conversations, give feedback, and contribute to the MAUI project through GitHub.

Rate this Article