Windows App SDK

Last updated
Windows App SDK
Other namesProject Reunion
Developer(s) Microsoft
Initial release29 March 2021
Stable release
1.3.2 [1]   OOjs UI icon edit-ltr-progressive.svg / 14 June 2023
Repository
Written in C++
Operating system Windows 11, Windows 10 version 1809 and later
Platform x86-64, ARM64, IA-32
Type Application programming interface (API)
License MIT License
Website learn.microsoft.com/en-us/windows/apps/windows-app-sdk/ OOjs UI icon edit-ltr-progressive.svg

Windows App SDK (formerly known as Project Reunion) [2] is a software development kit (SDK) from Microsoft that provides a unified set of APIs and components that can be used to develop desktop applications for both Windows 11 and Windows 10 version 1809 and later. The purpose of this project is to offer a decoupled implementation of capabilities which were previously tightly-coupled to the UWP app model. [3] Windows App SDK allows native Win32 (USER32/GDI32) or .NET (WPF/WinForms) developers alike a path forward to enhance their apps with modern features. [4]

Contents

It follows that Windows App SDK is not intended to replace the Windows SDK. [5] By exposing a common application programming interface (API) primarily using the Windows Runtime (WinRT) through generated WinMD metadata, the tradeoffs which once characterized either app model are largely eliminated. NuGet packages for version 1.4 were released in August 2023 after approximately four months of development. [6]

Features and components

While Microsoft has developed a number of new features, some of the features listed below are abstractions of functionality provided by existing APIs. [7]

WinUI 3

Most of the investment [8] into the decoupled UI stack [9] has gone towards bug fixes, improvements to the debugging experience, and simplifying the window management capabilities made possible by switching from CoreWindow. An API abstracting USER32/GDI32 primitives known as AppWindow was introduced to expose a unified set of windowing capabilities [10] and enable support for custom window controls.

WebView2

A replacement for the UWP WebView control was announced early on. [11] This is because it was based on an unsupported browser engine. [12] A new Chromium-based control, named WebView2, was developed and can be used from WinUI as well as other supported app types.

Packaging

While MSIX is included in the Windows App SDK and considered to be the recommended application packaging format, [13] [14] a design goal was to allow for unpackaged apps. These apps can be deployed as self-contained or framework-dependent. Support for dynamic loading of app dependencies is included for both packaged and unpackaged apps. [15]

Graphics

DWriteCore is being developed as a decoupled and device-independent solution for high-quality text rendering. [16] Win2D has also been made available to WinUI 3 apps. [17]

Resource management

MRT Core allows for management of app resources for purposes such as localization. It is a decoupled version of the resource management system from UWP. [18]

App lifecycle

With the stable releases delivered after its initial launch, Windows App SDK now supports several app lifecycle features which previously required a considerable amount of effort for developers to implement in Win32 applications. These features include power management notifications, rich activation, multiple instances, and programmatic app restart. [19]

Notifications

Support for push notifications was initially implemented as a limited-access, preview feature. [20] However, the APIs for it have since been stabilized and push notifications can be delivered to app users. Official documentation states that access to the feature can be revoked by Microsoft at their discretion. [21] [22] Additionally, apps can now easily display local app notifications without the need to create an XML payload. [23]

Widgets

Third-party integration with the Windows Widgets system in Windows 11 has been included as part of the stable release channel. [24] Developers can design custom widgets for their app using adaptive cards [25] and surface them on the widgets board. [26]

See also

Related Research Articles

A software development kit (SDK) is a collection of software development tools in one installable package. They facilitate the creation of applications by having a compiler, debugger and sometimes a software framework. They are normally specific to a hardware platform and operating system combination. To create applications with advanced functionalities such as advertisements, push notifications, etc; most application software developers use specific software development kits.

<span class="mw-page-title-main">JavaFX</span> Java software platform for GUI

JavaFX is a software platform for creating and delivering desktop applications, as well as rich web applications that can run across a wide variety of devices. JavaFX has support for desktop computers and web browsers on Microsoft Windows, Linux, and macOS, as well as mobile devices running iOS and Android, through Gluon Mobile.

Cocoa Touch is the application development environment for building software programs to run on iOS for the iPhone and iPod Touch, iPadOS for the iPad, watchOS for the Apple Watch, and tvOS for the Apple TV, from Apple Inc.

<span class="mw-page-title-main">Shoes (GUI toolkit)</span>

Shoes is a GUI toolkit based on the Ruby programming language. It was originally developed by Jonathan Gillette, and others are carrying on with it after his disappearance. Shoes runs on Microsoft Windows, Mac OS X and Linux (GTK+), using the underlying technologies of Cairo and Pango.

Apache Cordova is a mobile application development framework created by Nitobi. Adobe Systems purchased Nitobi in 2011, rebranded it as PhoneGap, and later released an open-source version of the software called Apache Cordova. Apache Cordova enables software programmers to build hybrid web applications for mobile devices using CSS3, HTML5, and JavaScript, instead of relying on platform-specific APIs like those in Android, iOS, or Windows Phone. It enables the wrapping up of CSS, HTML, and JavaScript code depending on the platform of the device. It extends the features of HTML and JavaScript to work with the device. The resulting applications are hybrid, meaning that they are neither truly native mobile application nor purely Web-based. They are not native because all layout rendering is done via Web views instead of the platform's native UI framework. They are not Web apps because they are packaged as apps for distribution and have access to native device APIs. Mixing native and hybrid code snippets has been possible since version 1.9.

Dart is a programming language designed by Lars Bak and Kasper Lund and developed by Google. The programming language can be used to develop web and mobile apps as well as server and desktop applications.

Windows Runtime (WinRT) is a platform-agnostic component and application architecture first introduced in Windows 8 and Windows Server 2012 in 2012. It is implemented in C++ and officially supports development in C++, Rust/WinRT, Python/WinRT, JavaScript-TypeScript, and the managed code languages C# and Visual Basic .NET (VB.NET).

<span class="mw-page-title-main">Kivy (framework)</span> Free and multi-platform graphical library for Python

Kivy is a free and open source Python framework for developing mobile apps and other multitouch application software with a natural user interface (NUI). It is distributed under the terms of the MIT License, and can run on Android, iOS, Linux, macOS, and Windows.

Windows UI Library is a user interface API that is part of the Windows Runtime programming model that forms the backbone of Universal Windows Platform apps for the Windows 8, Windows 8.1, Windows 10 and Windows Phone 8.1 operating systems. It enables declaring user interfaces using Extensible Application Markup Language (XAML) technology.

<span class="mw-page-title-main">Universal Windows Platform apps</span> Applications usable across all compatible Microsoft Windows devices

Universal Windows Platform (UWP) apps are applications that can be used across all compatible Microsoft Windows devices. They are primarily purchased and downloaded via the Microsoft Store, Microsoft's digital storefront.

ASP.NET Core was a brand briefly used by Microsoft for the rewrite of ASP.NET. It was initially a modular framework that runs on both the full .NET Framework, on Windows, and the cross-platform .NET. However, ASP.NET Core version 3 only worked on .NET Core, dropping support of the .NET Framework.

<span class="mw-page-title-main">.NET</span> Free and open-source software platform developed by Microsoft

.NET is a free and open-source, managed computer software framework for Windows, Linux, and macOS operating systems. It is a cross-platform successor to .NET Framework. The project is mainly developed by Microsoft employees by way of the .NET Foundation and is released under an MIT License.

Universal Windows Platform (UWP) is a computing platform created by Microsoft and introduced in Windows 10. The purpose of this platform is to help develop universal apps that run on Windows 10, Windows 10 Mobile (discontinued), Windows 11, Xbox One, Xbox Series X/S, and HoloLens without the need to be rewritten for each. It supports Windows app development using C++, C#, VB.NET, and XAML. The API is implemented in C++, and supported in C++, VB.NET, C#, F# and JavaScript. Designed as an extension to the Windows Runtime (WinRT) platform introduced in Windows Server 2012 and Windows 8, UWP allows developers to create apps that will potentially run on multiple types of devices.

<span class="mw-page-title-main">React Native</span> Open-source mobile application framework

React Native is an open-source UI software framework created by Meta Platforms, Inc. It is used to develop applications for Android, Android TV, iOS, macOS, tvOS, Web, Windows and UWP by enabling developers to use the React framework along with native platform capabilities. It is used to develop the Android and iOS applications at Facebook, Microsoft, and Shopify. It is also being used to develop virtual reality applications at Oculus.

<span class="mw-page-title-main">Fluent Design System</span> Design system created by Microsoft in 2017

Fluent Design System, officially unveiled as Microsoft Fluent Design System, is a design language developed in 2017 by Microsoft. Fluent Design is a revamp of Microsoft Design Language that includes guidelines for the designs and interactions used within software designed for all Windows 10 and Windows 11 devices and platforms. The system is based on five key components: light, depth, motion, material, and scale. The new design language includes more prominent use of motion, depth, and translucency effects.

Flutter is an open-source UI software development kit created by Google. It is used to develop cross platform applications from a single codebase for any web browser, Fuchsia, Android, iOS, Linux, macOS, and Windows. First described in 2015, Flutter was released in May 2017.

C++/WinRT is a C++ library for Microsoft's Windows Runtime platform, designed to provide access to modern Windows APIs. C++/WinRT is provided as a standard C++17 header file library, unlike C++/CX, which is an extension to C++ and requires a recent version of Microsoft Visual C++.

<span class="mw-page-title-main">Uno Platform</span>

Uno Platform is an open source cross-platform graphical user interface that allows WinUI and Universal Windows Platform (UWP) - based code to run on iOS, macOS, Linux, Android, and WebAssembly. Uno Platform is released under the Apache 2.0 license.

<span class="mw-page-title-main">Fyne (software)</span> Graphical toolkit for building cross platform GUIs

Fyne is a free and open-source cross-platform widget toolkit for creating graphical user interfaces (GUIs) across desktop and mobile platforms. Fyne uses OpenGL to provide cross-platform graphics. It is inspired by the principles of Material Design to create applications that look and behave consistently across all platforms. It is licensed under the terms of the 3-clause BSD License, supporting the creation of free and proprietary applications. In December 2019 Fyne became the most popular GUI toolkit for Go, by GitHub star count and in early February 2020 it was trending as #1 project in GitHub trending ranks.

References

  1. "Release 1.3.2". 14 June 2023. Retrieved 30 June 2023.
  2. Ramel, David (June 24, 2021). "Windows 11 Development: Open Ecosystem Store, Project Reunion Rebrand and More". Visual Studio Magazine. Retrieved 2021-10-11.
  3. Windows App SDK - Calling all Windows developers!, Microsoft, 2023-05-25, retrieved 2023-05-26
  4. Windows App SDK - Calling all Windows developers!, Microsoft, 2023-05-25, retrieved 2023-05-26
  5. Windows App SDK - Calling all Windows developers!, Microsoft, 2023-05-25, retrieved 2023-05-26
  6. "Microsoft.WindowsAppSDK 1.4.230822000". nuget.org. Retrieved 2023-09-11.
  7. Windows App SDK - Calling all Windows developers!, Microsoft, 2023-05-25, retrieved 2023-05-26
  8. "Release v1.3.0 · microsoft/WindowsAppSDK". GitHub. Retrieved 2023-05-26.
  9. Karl-Bridge-Microsoft (2023-03-13). "Windows UI Library (WinUI) - Windows apps". learn.microsoft.com. Retrieved 2023-05-26.
  10. "Discussion #370: Announcement: Proposed approach for windowing in Project Reunion". microsoft/WindowsAppSDK. GitHub . Retrieved 2022-04-19.
  11. Blog, Microsoft Edge; Team, Microsoft Edge (2020-10-19). "Announcing Microsoft Edge WebView2 General Availability". Microsoft Edge Blog. Retrieved 2023-05-26.
  12. "New Microsoft Edge to replace Microsoft Edge Legacy with April's Windows 10 Update Tuesday release". TECHCOMMUNITY.MICROSOFT.COM. 2021-02-10. Retrieved 2023-05-26.
  13. dianmsft (2021-12-30). "What is MSIX? - MSIX". learn.microsoft.com. Retrieved 2023-05-26.
  14. stevewhims (2023-03-03). "MSIX framework packages and dynamic dependencies - Windows apps". learn.microsoft.com. Retrieved 2023-05-26.
  15. stevewhims (2023-04-19). "Use the Windows App SDK runtime for apps packaged with external location or unpackaged - Windows apps". learn.microsoft.com. Retrieved 2023-05-26.
  16. stevewhims (2022-02-24). "DWriteCore (Windows App SDK) - Windows apps". learn.microsoft.com. Retrieved 2023-05-26.
  17. stevewhims (2023-05-25). "Win2D - Windows apps". learn.microsoft.com. Retrieved 2023-05-26.
  18. hickeys (2023-03-13). "Manage resources MRT Core (Windows App SDK) - Windows apps". learn.microsoft.com. Retrieved 2023-05-26.
  19. hickeys (2023-01-31). "App lifecycle and system services - Windows apps". learn.microsoft.com. Retrieved 2023-05-26.
  20. hickeys (2023-03-16). "Push notifications overview - Windows apps". learn.microsoft.com. Retrieved 2023-05-26.
  21. hickeys (2022-06-03). "Notifications design basics - Windows apps". learn.microsoft.com. Retrieved 2023-05-26.
  22. hickeys (2023-03-16). "Push notifications overview - Windows apps". learn.microsoft.com. Retrieved 2023-05-26.
  23. vaheeshta (2022-07-12). "App notifications overview - Windows apps". learn.microsoft.com. Retrieved 2023-05-26.
  24. drewbatgit (2023-03-09). "Widget providers - Windows apps". learn.microsoft.com. Retrieved 2023-05-26.
  25. drewbatgit (2022-11-10). "Create a widget template with the Adaptive Cards Designer - Windows apps". learn.microsoft.com. Retrieved 2023-05-26.
  26. drewbatgit (2023-03-09). "Windows Widgets - Windows apps". learn.microsoft.com. Retrieved 2023-05-26.