diff --git a/release-notes/11.0/preview/preview7/README.md b/release-notes/11.0/preview/preview7/README.md index 60fb1e29d2..4ec335c445 100644 --- a/release-notes/11.0/preview/preview7/README.md +++ b/release-notes/11.0/preview/preview7/README.md @@ -2,27 +2,17 @@ These notes cover the highest-value changes that shipped in .NET 11 Preview 7: -- [Libraries](./libraries.md) -- [Runtime](./runtime.md) -- [SDK](./sdk.md) -- [Containers](./containers.md) - ## Languages -- [C#](./csharp.md) - [F#](./fsharp.md) ## Web and data - [.NET MAUI](./dotnetmaui.md) -- [ASP.NET Core](./aspnetcore.md) - [EF Core](./efcore.md) ## Tooling -- [MSBuild](./msbuild.md) -- [NuGet](./nuget.md) -- [Windows Forms](./winforms.md) - [WPF](./wpf.md) ## Release information diff --git a/release-notes/11.0/preview/preview7/dotnetmaui.md b/release-notes/11.0/preview/preview7/dotnetmaui.md new file mode 100644 index 0000000000..d8054eab31 --- /dev/null +++ b/release-notes/11.0/preview/preview7/dotnetmaui.md @@ -0,0 +1,305 @@ +# .NET MAUI in .NET 11 Preview 7 - Release Notes + +.NET 11 Preview 7 adds cross-platform passkey authentication, XAML +Incremental Hot Reload, Shell route templates, and faster device development +workflows: + +- [Cross-platform passkey authentication](#cross-platform-passkey-authentication) +- [XAML Incremental Hot Reload](#xaml-incremental-hot-reload) +- [Shell route templates](#shell-route-templates) +- [AOT-safe RelativeSource bindings](#aot-safe-relativesource-bindings) +- [Third-party platform backends](#third-party-platform-backends) +- [NavigationPage and TabbedPage adopt handlers on Apple platforms](#navigationpage-and-tabbedpage-adopt-handlers-on-apple-platforms) +- [Platform-specific capabilities](#platform-specific-capabilities) +- [.NET for Android](#net-for-android) +- [Apple platforms (.NET for iOS, Mac Catalyst, macOS, tvOS)](#apple-platforms-net-for-ios-mac-catalyst-macos-tvos) +- [Community contributors](#community-contributors) + +## Cross-platform passkey authentication + +The new Passkeys Essentials API drives the native passkey UI on Android 14+, +iOS 16+, Mac Catalyst 16+, and Windows 10 version 1903+. Use +`Passkeys.IsSupported` to check availability, `Passkeys.CreateAsync` to +register a credential, and `Passkeys.AssertAsync` to authenticate with an +existing credential +([dotnet/maui #36837](https://github.com/dotnet/maui/pull/36837)). + +`IsSupported` checks the platform version, but successful registration also +requires platform trust configuration. Apple apps need Associated Domains, +an Apple App Site Association file, and signing; Android apps need Digital +Asset Links. See the +[Passkeys setup guide](https://github.com/dotnet/maui/blob/release/11.0.1xx-preview7/src/Essentials/samples/README-Passkeys.md) +for the platform prerequisites. + +The relying-party server supplies the standard WebAuthn options JSON and +verifies the response JSON returned by MAUI. The API handles the platform +ceremony, but does not perform server-side verification, attestation +validation, or challenge generation. + +## XAML Incremental Hot Reload + +> XAML Incremental Hot Reload is a preview feature in .NET 11. + +XAML Incremental Hot Reload uses a source generator and a +`MetadataUpdateHandler` to update already-instantiated pages without rebuilding +the app. It supports property changes, child additions and removals, structural +reordering, attached properties, markup extensions, bindings, and +`ResourceDictionary` updates +([dotnet/maui #34338](https://github.com/dotnet/maui/pull/34338)). +The same source-generated update path also applies XAML edits during +`dotnet watch` sessions. + +The feature is enabled by default for Debug builds in Preview 7. Release and +publish builds remain disabled by default. To opt out for Debug builds and use +the existing XAML Hot Reload path, set: + +```xml + + false + +``` + +This Debug default and opt-out behavior was finalized in +[dotnet/maui #37163](https://github.com/dotnet/maui/pull/37163). + +For general XAML Hot Reload background, see [XAML Hot +Reload](https://learn.microsoft.com/dotnet/maui/xaml/hot-reload?view=net-maui-11.0). + +## Shell route templates + +Shell routes now support path parameters inspired by ASP.NET Core and Blazor +routing. Templates can contain required, optional, defaulted, constrained, +catch-all, and mixed segments. Existing literal routes are unchanged +([dotnet/maui #35110](https://github.com/dotnet/maui/pull/35110)). + +```csharp +Routing.RegisterRoute("product/{sku}", typeof(ProductDetailPage)); +await Shell.Current.GoToAsync("//products/product/seed-tomato"); +``` + +Values are delivered through the existing `QueryProperty` and +`IQueryAttributable` mechanisms. Template routes currently require absolute +navigation; relative navigation is not yet supported. + +See [Shell +navigation](https://learn.microsoft.com/dotnet/maui/fundamentals/shell/navigation?view=net-maui-11.0). + +## AOT-safe RelativeSource bindings + +The XAML source generator now compiles `{RelativeSource AncestorType=...}` +bindings to trim-safe `TypedBinding` instances when the +ancestor type can be resolved at compile time +([dotnet/maui #34408](https://github.com/dotnet/maui/pull/34408)). + +```xaml +