The Windows UI Library (or WinUI for short) is a new way to get and use Fluent controls and styles for building Windows 10 UWP apps: via NuGet packages.
The WinUI NuGet packages contain new and popular UWP XAML controls and features which are backward-compatible on a range of Windows 10 versions, from the latest insider flights down to the Anniversary Update (1607).
Previously, the UWP XAML app development framework was shipped and updated solely as part of Windows and the SDK. In order to get new features or fixes, you had to wait for a new version of Windows. And just as importantly, you had to wait for your users to update their OS as well.
Using the new WinUI NuGet package(s) has two main benefits for UWP XAML app developers:
- It lets you start building and shipping apps with new UWP XAML features immediately: since the NuGet packages are backward-compatible with a wider range of Windows 10 versions, you no longer have to wait for your users to update their OS before they can run your app with the latest features.
- It makes it simpler to build version adaptive apps: you usually won’t have to include version checks or conditional XAML markup to use controls or features in a WinUI package when you’re building an app that targets multiple versions of Windows 10.
The Windows UI Library is built and maintained by the same engineering team responsible for the standard Windows 10 SDK, and follows the same development and testing process. However, shipping via NuGet gives our engineering team more flexibility in how we plan, release, and update the UWP XAML platform.
This initial release includes previews of the first two Windows UI packages:
These are prerelease packages, similar to a Windows Insider SDK. A future release will include “RTM” versions of these packages, and may have additional features or breaking changes. The prerelease versions are fully functional for testing and evaluation purposes, but we recommend using the RTM versions for production apps.
Not all of the XAML platform is in WinUI. For future versions we’re evaluating moving more of the XAML platform to WinUI packages, and are also exploring options for moving our development process to an open source model on GitHub.
Until then, we look forward to hearing any issues or feedback you may have through the Feedback Hub or through the UWP UserVoice forum!
You can find more info on how to install and get started with the Windows UI Library preview in the documentation, which will be expanded in the coming weeks:
The NuGet packages for WinUI can be found via the NuGet Package Manager in Visual Studio, or by visiting the package pages:
The dev branch of the Xaml Controls Gallery sample app available in the Microsoft Store has also been updated to use WinUI as a usage example:
Note that to use the Windows UI Library, your UWP project’s Min version must be 14393 or higher and the Target version must be 17134 or higher.
1) Existing controls and features, with wider version support
For example, apps often use a TreeView control to display and navigate a hierarchical list. A new native UWP Windows.UI.Xaml.Controls.TreeView control was added to Windows 10 as part of the April 2018 Update (1803), which means end-users have to install the April 2018 Update before they can run apps that use it. And not every user may be running that version of Windows 10 yet, especially in enterprise environments which evaluate and roll out updates at a slower pace.
However with WinUI, TreeView is also available as a separate Microsoft.UI.Xaml.Controls.TreeView class which provides the same functionality as the default Windows 10 SDK, with added benefits:
- It works on a wider range of previous Windows 10 versions
- It includes new functionality which hasn’t been released in the standard SDK version yet
Apps can freely use both the default SDK version and the WinUI version of the same control. But you may as well use the WinUI version of a control when there’s one available since there’s little downside.
More info on the package contents is available in the documentation:
2) New and preview controls
The Microsoft.UI.Xaml package also includes new controls that will likely be included in the standard SDK with a future release of Windows, like CommandBarFlyout and MenuBar.
Prerelease versions of the packages may additionally contain early prerelease features and controls. For example, this first prerelease version contains some controls like Repeater, Scroller, and LayoutPanel: these controls are functional, but we’re still working on them and so they likely won’t be included in the first upcoming RTM release of WinUI.
The Microsoft.UI.Xaml.Core.Direct package is a preview of a new standalone WinRT library for middleware developers.
It provides lower level access to most of the XAML framework, enabling better CPU and working set performance for middleware components.
It is functional on the Windows April 2018 Update and previous versions of Windows 10, but will provide improved performance on current RS5 insider builds and upcoming versions of Windows 10!