What's New in Windows 10 for developers, version 1709
Windows 10 version 1709, in combination with Visual Studio 2017 and the updated SDK, provide the tools, features, and experiences to make remarkable Universal Windows Platform apps. Install the tools and SDK on Windows 10 and you’re ready to either create a new Universal Windows app or explore how you can use your existing app code on Windows.
This is a collection of new and improved features and guidance of interest to Windows developers. For a full list of new namespaces added to the Windows SDK, see the Windows 10 version 1709 API changes. For more information on the highlighted features of Windows 10, see What's cool in Windows 10. In addition, see Windows Developer Platform features for a high-level overview of both past and future additions to the Windows platform.
Design & UI
|Conditional XAML||You can now use conditional XAML to create version adaptive apps. Conditional XAML lets you use the ApiInformation.IsApiContractPresent method in XAML markup, so you can set properties and instantiate objects in markup based on the presence of an API, without needing to use code behind.|
|Design Toolkits||The design toolkits and resources for UWP apps have been expanded with the addition of the Sketch and Adobe XD toolkits. The previously-existing toolkits have also been updated and revamped, providing more robust controls and layout templates for your UWP apps. Furthermore, new tools and samples have been added to provide examples and inspiration.|
|Fluent Design effects||These new effects are part of the Fluent Design System, and use depth, perspective, and movement to help users focus on important UI elements.
* Acrylic material is a type of brush that creates transparent textures. * The Parallax effect adds three-dimensional depth and perspective to your app.
* Reveal highlights important elements of your app. For more information, see the Fluent Design overview.
|Keyboard Accelerators||Increase accessibility and usability of your app with keyboard accelerators or shortcuts. They provide an intuitive way for users to invoke common actions or commands without navigating the app UI, and can be configured to fit the necessary scope for their function.|
|Inking||The CoreIncrementalInkStroke APIs allow for the creation of individual ink strokes which can be rendered incrementally, using individual InkPoint objects.
The CoreInkPresenterHost APIs let you host an InkPresenter object without an associated InkCanvas control.
|Radial Controller||The RadialControllerConfiguration APIs have been updated with the ability to scope the RadialController menu to the view or process of an app.|
|Tiles and notifications||New chaseable tile notifications let you determine what an app's Live Tile was displaying when clicked on by the user.
The notification listener provides access to a user's notifications, allowing you to perform specific actions when notifications are received.
|UI Controls||These new controls make it easier to quickly build a great looking UI.
* The color picker control enables users to browse through and select colors. * The navigation view control makes it easy to add top-level navigation to your app.
* The person picture control displays the avatar image for a person. * The rating control enables users to easily view and set ratings that reflect degrees of satisfaction with content and services.
|Voice and tone||We've added new guidance on voice in tone in UWP apps to provide you with advice for writing text in your app. Whatever you're creating, it's important that the language you use is approachable, friendly, and informative.|
|Game broadcasting||New APIs in the Windows.Media.AppBroadcasting namespace allow your app to launch the system-provided game broadcast UI.
You can also register for events that notify your app when broadcasting starts or stops. New APIs in the Windows.Media.AppRecording namespace allow you to record audio and video and capture screen shots of gameplay. You can also provide metadata that the system will embed into broadcast and capture streams, allowing apps to provide viewing experiences that are synchronized with gameplay events. For more information on these features, see Game broadcast and capture.
|Game Chat Overlay||The GameChatOverlay class provides methods to get the default game chat overlay instance, set the desired position of the overlay, and add messages to it.|
|Gaming Device Information||Due to differing console capabilities, Universal Windows Platform (UWP) game developers need a way to determine the type of console the game is running on, in order to make run-time choices on how to best use the hardware. The Gaming Device Information APIs in <gamingdeviceinformation.h> provide this functionality.|
|Game Mode||The Game Mode APIs for the Universal Windows Platform (UWP) allow you to produce the most optimized gaming experience by taking advantage of Game Mode in Windows 10. These APIs are located in the <expandedresources.h> header.|
|Game Monitor||The GameMonitor class allows an app to get the game monitor permission state of the device and potentially prompt the user to enable game monitoring.|
|TruePlay||TruePlay provides developers with a new set of tools to combat cheating within their PC games. A game enrolled in TruePlay will run in a protected process, which mitigates a class of common attacks. The TruePlay APIs for the Universal Windows Platform (UWP) allow limited interaction between games and the game monitoring system on Windows 10 PCs. These APIs are located in the <gamemonitor.h> header.|
|Xbox Live||We've added docs for Xbox Live developers, for both UWP and Xbox Developer Kit (XDK) games.
* See the Xbox Live developer guide to learn how to use the Xbox Live APIs to connect your game to the Xbox Live social gaming network. * With the Xbox Live Creators Program, any UWP game developer can develop and publish an Xbox Live-enabled game on both the PC and Xbox One.
* See the Xbox Live developer program overview for information about the programs and features available to Xbox Live developers.
Develop Windows apps
|Activating UWP apps||The following new features are now available:
* Use the StartupTask class to specify that a UWP app start when the user logs on, or at system startup. * Identify if a UWP app was launched from the command line.
* Programmatically request that your UWP app restart by using the RequestRestartAsync() and RequestRestartForUserAsync() APIs. * Launch the Windows Settings app has been updated to reflect new URI schemes such as
|App packaging||App Installer has been expanded to allow UWP app packages to be downloaded from a webpage. Additionally, related sets of an app package can now be downloaded with App Installer. See the new Install UWP apps with App Installer section to learn more.|
|App services and extensions||We've added a new guide, Create and consume an app extension, to help you write and host Universal Windows Platform (UWP) app extensions to extend your app via packages that users can install from the Windows Store.
We've added a new guide, Extend your app with services, extensions, and packages, which categorizes the different technologies in Windows 10 that you can use to extend and componentize your app.
|Background tasks||We've added three guides that help you take advantage of background tasks:
* Run in the background indefinitely to use all resources available on a device without any background or extended execution throttling. This pplies to Enterprise UWP apps and UWP apps that will not be submitted to the Windows Store.
* Trigger a background task from within your app to activate a background task from within your app.
* Run a background task when your UWP app is updated to create a background task that runs when your UWP app is updated.
|Cortana||Use the Cortana Skills Kit to add and test skills to extend Cortana's natural functionality and have it interact with your apps and services.|
|Desktop Bridge||We've added three guides that help you add modern experiences to your desktop applications on Windows 10:
* Enhance your desktop application for Windows 10 guide to find and reference the correct files, and then write code to light up UWP experiences for Windows 10 users.
* Extend your desktop application with modern UWP components to incorporate modern XAML UIs and other UWP experiences that must run in a UWP app container.
* Migrate your application to the Universal Windows Platform to share code between your WPF, Windows Forms, UWP, Android, and iOS applications.
|Desktop Bridge Packaging||Visual Studio introduces a new packaging project that eliminates all of the manual steps that used to be necessary to package a full-trust desktop application. Just add a packaging project, reference your desktop project, and then press F5 to debug your app. No manual tweaks necessary. This new streamlined experience is a vast improvement over the experience that was available in the previous version of Visual Studio.|
|Diagnostics and threading||New diagnostic APIs provide information about running apps:
* The AppMemoryReport class provides information about an apps expected total commit limit, private commit usage, and so on. * The AppDiagnosticInfo class can now monitor the execution state of an app or task, and provides notifications when the execution state changes.
* The MemoryManager class has new methods to set the app memory usage limit and report the expected app memory usage limit.
You can queue tasks, in priority order, and run them on a different thread with the DispatcherQueue class. This functionality is also available from Win32 via the CreateDispatcherQueueController function.
|EdgeHTML 16||The web platform powering Microsoft Edge and JS-based Universal Windows Platform apps has been updated to EdgeHTML 16 and now includes support for WebVR, major improvements to F12 Developer Tools, and support for CSS Grid layout, among other things.
* CSS Grid Layout is now supported in Microsoft Edge. Grid Layout defines a two-dimensional grid-based layout system which enables more layout fluidity than possible with positioning using floats or scripts.
* Microsoft Edge F12 DevTools docs have been updated for improved robustness and performance. New features have also been added to optimize your development experience.
* WebVR for Microsoft Edge has added support for motion controllers and a variety of Windows Mixed Reality headsets. WebVR has also been optimized to support up to 90 frames per second.
See the Microsoft Edge Developer Guide for the full list of changes and newly supported APIs.
|Map 3D Elements||You can add three-dimensional objects to a map. You can use the new MapModel3D class to import a 3D object from a 3D Manufacturing Format (3MF) file.|
|Map Element Styling||You can customize the appearance of map elements by using two new MapElement properties: MapStyleSheetEntry, and MapStyleSheetEntryState.
* You can use the MapStyleSheetEntry property to make your map elements look like they are part of the base map (For example: by setting an element style to an existing entry in the map style sheet such as Water).
* You can use the MapStyleSheetEntryState property to modify the appearance of your map elements by leveraging default states like Hover and Selected in the map style sheet, or override them to create your own.
|Map Layers||You can add points of interest elements to a map layer, and then bind XAML directly to that layer. Group your elements into layers. Then, you can manipulate each layer independently from one another. For example, each layer has it's own set of events so you can respond to an event on a specific layer and perform an action specific to that event.|
|Map Place Info||You can show users a map inside of a light-weight pop-up window above, below or to the side of a UI element or an area of the app where the user touches. This window dismisses itself when the user changes context. This keeps users from having to switch to another app or browser window to obtain information about a location.|
|Map Services||Going sightseeing? Use the new MapRouteOptimization.Scenic value to optimize a route to include the most scenic roads, and MapRoute.IsScenic to discover whether an existing route includes scenic roads.|
|Media Capture||The article Process media frames with MediaFrameReader has been updated to show the usage of the new MultiSourceMediaFrameReader class, which allows you to obtain time-correlated frames from multiple media sources.
Process media frames with MediaFrameReader has been updated to include a description of buffered frame acquisition mode that allows apps to request that acquired frames be provided to the app in sequence, without dropping frames acquired while the app was processing a previous frame.
Also, when a MediaCapture object has been initialized with a media frame source group containing one or more media frame sources, you can create a MediaSource object that allows you to present the media frames in a MediaPlayerElement control in a XAML page.
For more information, see Process media frames with MediaFrameReader.
|Media Playback||New sections have been added to the basic media playback article, Play audio and video with MediaPlayer.
* The section Play spherical video with MediaPlayer shows you how to playback spherically encodeded video, including adjusting the field of view and view orientation for supported formats.
* The section Use MediaPlayer in frame server mode shows you how to copy frames from media played back with MediaPlayer to a Direct3D surface. This enables scenarios such as applying real-time effects with pixel shaders. The example code shows a quick implementation of a blur effect for video playback using Win2D.
|My People||My People allows users to pin contacts from an application directly to their taskbar. Learn how to add My People support to your application.
* My People sharing allows users to share files through your application, right from the taskbar. * My People notifications are a new kind of toast notification that users can send to their pinned contacts.
|.NET Standard 2.0||The Universal Windows Platform has fully implemented the .NET Standard 2.0. This new version of the standard includes a massive increase in the number of .NET APIs along with a compatibility shim for your favorite NuGet packages and third party libraries.
If you intend to target other platforms such as iOS and Android, or if you have a desktop application and want to create a UWP app, move code into .NET Standard 2.0 class libraries and then reuse that code in each version of your app.
|Pin to Taskbar||The new TaskbarManager class allows you to ask your user to pin your app to the taskbar.|
|Point of Service||We've added a new guide to help you get started with point of service devices. It covers topics like device enumeration, checking device capabilities, claiming devices, and device sharing.|
|User activities||A new Windows.ApplicationModel.UserActivities API enables you to encapsulate a user task that can be continued at a later time, and potentially on a different device.|
Publish & Monetize Windows apps
The features in this section have been added since the release of the previous version of Windows, 1703. They are available to all Windows developers and do not require the updated SDK.
|Account management||We now provide more flexibility when associating Azure AD tenants with your Dev Center account to add multiple account users. You can associate multiple Azure AD tenants with a single Dev Center account, or associate a single Azure AD tenant with more than one Dev Center account.|
|Advertising||The Microsoft Advertising SDK now enables you to show native ads in your apps. A native ad is a component-based ad format where each piece of the ad creative (such as the title, image, description, and call-to-action text) is delivered to your app as an individual element. Native ads are currently only available to developers who join a pilot program, but we intend to make this feature available to all developers soon.|
|Pricing and availability||New pricing and availability options let you schedule price changes and set precise release dates.|
|Store analytics API||The Windows Store analytics API now provides a method you can use to download the CAB file for an error in your app.|
|Store listings||Store listing have been enhanced with new capabilities to engage prospective users:
* Your app's Store listing can now include video trailers.
* You can import and export Store listings to make updates faster, especially if you have listings in many languages.
|Submission API||The Windows Store submission API now enables you to include video trailers and gaming options with your app submissions.|
|Targeted offers||Targeted offers let you target specific segments of your customers with attractive, personalized content to increase engagement, retention, and monetization.|
The Lunch Scheduler sample schedules lunches with your friends and coworkers. You create a lunch, invite friends to a restaurant of interest, and the app takes care of the lunch management for all involved parties. This app highlights the following:
- Demonstrates integration with services like Facebook, Microsoft Graph for authentication, graph-based operations, and friends discovery.
- Works with Yelp and Bing maps for restaurant recommendations.
- Incorporates elements of the Fluent Design System in a UWP app including acrylic, reveal, and connected animations.
The Quiz Game App (Remote System Sessions API) sample demonstrates how to use the Remote System Sessions API in the context of a quiz game scenario. A host sends the questions to the proximal devices and the participants the answer the questions on their own devices.
The Remote System Sessions API allows a device to host a session that is discoverable by other devices that are nearby. They can then join this session, and send messages to the host and other participants.