An tour of client app development UI framework choices for Microsoft developers.
Today's Windows app development landscape offers a variety of frameworks and technologies to choose from. This FAQ provides guidance on how to decide which framework to use for your Windows app development projects. It covers the following topics:
- The Windows app development landscape.
- Native Windows-only app development with WinUI, WPF, and Windows Forms.
- Targeting Windows as part of your cross-platform development strategy.
- Hybrid and web app development with .NET MAUI, Blazor, and ASP.NET Core.
- How to choose an approach while understanding Microsoft's investments.
The Windows app development landscape
Why is client app development still crucial for modern digital transformation in the era of cloud services?
In the age of cloud services, client app development remains a critical component of modern digital transformation. For developers, building client applications is essential not just for reach but for delivering responsive, meaningful interactions on user devices.
Here's why client apps still matter:
- Device Reach: With over 1.5 billion Windows devices and more than 5 billion Android and iOS devices globally, client apps let you bring your applications directly to users on their devices of choice.
- Gateway to Intelligent Services: Client apps are often the first interaction users have with your services. They offer a rich, interactive interface that allows you to showcase intelligent features and differentiate your product from others.
- Scalability with Cloud Integration: A well-integrated client app can sync effortlessly with backend cloud services, enabling real-time data access and seamless scalability as your user base grows.
- Enhanced Productivity and User Loyalty: A thoughtfully designed app can enhance productivity and keep users engaged with your product or service over time.
Native Windows-only app development
I'm building a new team to develop a Windows-only app. Why should I choose to develop with a native Windows framework like WinUI, WPF, or Windows Forms?
Here are some reasons to choose a native Windows framework for your Windows-only app:
- Performance: Native Windows frameworks are optimized to leverage the full power of today's Windows hardware and provide fast and responsive user experiences.
- Integration: Windows ships with wide varieties of APIs to build sophisticated experiences only available on Windows. The native frameworks provide deep integration with these features and APIs.
- Native user experience: Native Windows frameworks provide a consistent user experience across Windows devices, ensuring that your app looks and works great on all Windows devices.
- Offline support: Native Windows frameworks provide support for offline scenarios, enabling your app to work even when the user is not connected to the internet.
- Monetization: Native Windows frameworks are actively maintained and supported by Microsoft, ensuring that you have access to the latest updates and features.
Which framework should I use to leverage Microsoft's latest investments in Windows app development?
If you're building a new Windows-only app, we recommend using WinUI. WinUI is the latest native UI framework for Windows app development and is designed to work across a wide range of Windows devices. WinUI provides a modern and flexible UI framework that enables you to create visually appealing and interactive Windows apps. WinUI is part of the Windows App SDK and is designed to work best with the latest versions of Windows.
If I have already invested heavily in WPF, should I continue to use WPF or should I consider migrating to WinUI?
If you have already invested heavily in WPF, you can continue to use WPF for your existing apps. WPF is a mature and stable framework that is widely used by developers to build Windows desktop apps.
Consider leveraging the .NET Upgrade Assistant to migrate your .NET Framework WPF apps to the latest .NET platform. The .NET Upgrade Assistant is a tool that helps you migrate your .NET Framework apps to the latest supported versions of .NET. The .NET Upgrade Assistant analyzes your existing codebase and provides guidance on how to update your code.
If I build a new WPF app, will it look dated compared to other new Windows apps?
When developing a WPF application with .NET 9 or later, you can ensure your app matches the sleek, modern look of Windows 11. The new Fluent theme for WPF introduces a contemporary Windows 11 aesthetic to WPF applications, complete with integrated Light/Dark mode and system accent color support. This update not only modernizes the appearance of your app but also enhances user engagement by providing a polished and cohesive user experience.
My team is comfortable building Windows Forms apps, and it suits our needs. Should we consider migrating to WinUI or another framework?
If your team is comfortable building Windows Forms apps and Windows Forms meets your needs, you can continue to use Windows Forms for your existing apps. Windows Forms is a mature and stable framework that is widely used by developers to build Windows desktop apps.
The Windows Forms team is investing across features and has an active community of contributors. Some current areas of investment include:
- Async support with common controls
- Dark mode
- Layout flexibility
- Desktop security features like clipboard access
Can I leverage APIs from the Windows App SDK in my existing WPF or Windows Forms apps?
Yes, you can leverage many of the APIs from the Windows App SDK in your existing WPF or Windows Forms apps. The Windows App SDK is designed to work with existing Windows desktop frameworks like WPF and Windows Forms. You can use the Windows App SDK to access new features and capabilities in your existing apps.
See Use the Windows App SDK in an existing project for more information.
Cross-platform native development
What are some reasons for building cross-platform, native apps that target Windows?
If you're targeting users across multiple OS platforms, building cross-platform apps with .NET MAUI or React Native can provide several benefits:
- Reach: Building cross-platform apps allows you to reach a larger audience of users on different platforms.
- Code reuse: Building cross-platform apps allows you to reuse code across different platforms, reducing development time and costs. It can be prohibitively expensive to build separate apps for Windows, iOS, Android, macOS, etc.
- Consistent user experience: Building cross-platform apps allows you to provide a consistent user experience across different platforms, ensuring that your app looks and works great on all devices.
- Integration: Building cross-platform apps allows you to integrate with different platforms and services, enabling you to provide a more comprehensive user experience.
Can I be confident that .NET MAUI apps will run well on Windows?
When you build a .NET MAUI app for Windows, your output is a WinUI app. While developing, .NET MAUI provides a single .NET experience across all platforms, including Windows, but under the hood, it generates platform-specific code. This ensures that your .NET MAUI app runs well on each platform and provides a native user experience.
How can .NET MAUI provide native device APIs across every platform?
.NET MAUI provides a single .NET experience across all platforms, including Windows, iOS, Android, and macOS. .NET MAUI abstracts over 60 platform-specific APIs into a single, cross-platform API that you can use in your .NET MAUI app. These APIs cover access to storage, networking, device-specific sensors, and more. If needed, you can also access additional platform-specific APIs using dependency injection to abstract the code for each platform.
Our team has strong web front-end development skills. Should we consider using React Native for Desktop?
If your team has strong web development skills, you may want to consider using React Native for Desktop. React Native for Desktop encompasses the React Native for Windows and macOS frameworks. The motto of React Native is "Learn once, write anywhere," which means that you can use your existing web development skills to build native Windows apps using React Native. React Native for Desktop is an open-source project that enables you to build native Windows and macOS apps using React Native. React Native for Desktop provides a set of APIs that allow you to access desktop OS-specific features and capabilities in your React Native apps.
Your team can leverage their JavaScript, TypeScript, and React skills to build the UI layer, which is rendered directly to native primitives. This provides native app performance and access to the capabilities of the native platform.
Read more about getting started with React Native development for Windows in the React Native for Desktop documentation.
Are any other Windows devices supported by React Native for Desktop?
React Native apps can be deployed to all devices supported by Windows 10 and higher including PCs, tablets, 2-in-1s, Xbox, and Mixed reality devices.
Hybrid and web development
What are hybrid apps, and why should I consider building one?
Hybrid apps blend the best of web and native app development. The core of the app is built using web technologies like HTML, CSS, and JavaScript, and then wrapped in a native container that allows the app to leverage certain native platform features and hardware. They can also be distributed through app stores.
The main advantage of hybrid apps is that they allow you to build a single app that can run on multiple native platforms and on the web, reducing development time and costs. Some examples of hybrid app development platforms answer:
- Electron for desktop apps
- Ionic for mobile apps
- .NET MAUI Blazor hybrid for cross-platform apps
What is a .NET MAUI Blazor hybrid app?
With .NET MAUI, Blazor apps can also run natively on Windows, iOS, Android, and macOS. This means you can create hybrid client apps that combine Blazor and .NET MAUI components together into a single, native client app. This provides full access to the same native platform capabilities available to any other .NET MAUI apps.
To read more about how Blazor can hosted within a .NET MAUI app, see ASP.NET Core Blazor Hybrid.
Do the web components of a .NET MAUI hybrid app need to be created with Blazor?
No, the web components of a .NET MAUI hybrid app do not need to be created with Blazor. Starting with .NET 9, .NET MAUI provides a HybridWebView control that allows you to host other JavaScript UIs in your native app.
This means you can take your Angular, React, Vue or other HTML & JavaScript web app and host it within your .NET MAUI app. The hybrid control provides interop between the C# and JavaScript layers so you can call JavaScript functions from C# and vice versa.
Can any other native app types host Blazor hybrid components?
Yes, WPF and Windows Forms apps can also host Blazor hybrid components. This allows you to add modern web UI components to your existing WPF and Windows Forms apps. Note, that this is not possible with WPF or Windows Forms apps built on .NET Framework.
Does my entire app need to be a hybrid app, or can I mix and match native and hybrid components?
You can mix and match native and hybrid components in your app. For example, you can build the core of your app using .NET MAUI components and then add hybrid components to provide additional functionality. This allows you to leverage the best of both worlds: the performance and capabilities of native components and the flexibility and cost savings of hybrid components.
What are my choices for building .NET-based web apps that look great on modern browsers on Windows?
Web apps have the broadest reach of any client app platform. If you want to create beautiful .NET web apps on Windows, you have several options:
- ASP.NET Core apps with Razor Pages
- ASP.NET Core MVC apps
- ASP.NET Core Blazor apps, with hosting model options including:
- Blazor WebAssembly apps
- Blazor Server apps
Note that the hosting model for Blazor can be configured at the component level now. So, you can have a Blazor WebAssembly component hosted in a Blazor Server app.
Read more about ASP.NET Core development options in the ASP.NET Core documentation.
Choose an approach and understand Microsoft's investments
There are so many framework options for building apps that target Windows! How do I decide?
Windows is an open platform that supports many technologies. Here are some criteria that can help you decide which platform to use:
- Are you building Windows-first or cross platform?
- Do you have experience with .NET? JavaScript? Other languages?
- Do you need to access Windows-specific APIs?
- Which framework's capabilities best match your app's requirements?
- See this table for other decision factors.
When it comes to business apps, most teams want to choose based on existing skills and what the team is comfortable using.
How do I choose the best development approach for my web app?
Some things to consider when choosing a development approach for your web app include:
- Blazor is recommended for building front-end web apps with .NET. By using Blazor, you can now build your entire front-end and back-end with .NET, saving time and money. It is particularly well-suited for enterprise line-of-business apps on today's devices.
- JavaScript web apps still make sense if you want to leverage your team's existing skills or investments in JavaScript, or if you need to integrate with existing JavaScript libraries or frameworks.
- Existing apps that use older frameworks, like Web Forms, MVC, or Razor Pages, are still supported and can continue to be developed and maintained using those frameworks.
Who is building apps with WinUI today?
Many customers are building with WinUI today, including Adobe and Apple:
- Adobe Fresco, a free drawing and painting app for Windows.
- Apple created the Apple Music, Apple TV, and Apple Devices apps with WinUI and the Windows App SDK.
Microsoft has also created several apps with WinUI, including the Windows 11 File Explorer and Photos apps.
Who is building .NET MAUI apps today?
Many customers are using .NET MAUI to build their cross-platform apps today, including Microsoft. For example, the Microsoft Azure mobile app was built using .NET MAUI.
Find out who else is building apps with .NET MAUI on the .NET customers showcase site.
Who is building WPF apps today?
Most of Microsoft Visual Studio's user interface is built with WPF. The Visual Studio IDE is a great example of a complex, high-performance WPF app.
Who is building Blazor apps today?
GE Digital's FlightPulse airline system puts sensor data and analytics into the hands of pilots to improve safety and efficiency. The backend configuration of everything the pilots see is all done with Blazor.
You can read more Blazor customer stories on the .NET site.
Related content
To learn more about Windows development options, see Overview of framework options.