Releases: unoplatform/uno
6.1.34
Two months ago, we launched our most monumental release yet: Uno Platform 6.0. It introduced a unified Skia rendering engine for Uno Platform across all target platforms and officially declared our premium tooling, Uno Platform Studio, as generally available. Together, they streamline your .NET development, allowing you to build cross-platform .NET apps in record time.
Two months may seem like a long time (and yes, we took a bit of a breather after our 6.0 release), but even during that time, our team and community still managed to finalize over 300 pull requests, refining previous releases and adding new features.
Read more on our blog post!
Here's the full change log:
Features
- Add
__DESKTOP__
constant (f64ab72) - Add
.desktop.cs
suffix support (de5f220) - Add
MediaPlayerElement
Uno Feature as alias toMediaElement
(9023f7f) - Add ability to have multiple direct-manipulation active in parallel (a058781)
- Add Cookie handling support to WASM runtime (ea10cc9)
- Add File System Access API support check to WASM (1174953)
- Add host builder support to WebAssembly (2de67e3)
- Add hosting support to Apple UIKit (bcf25dd)
- add runtime tests (c341757)
- Add SKCanvas Uno Feature (df51ad6)
- Add support for InputMode and EnterKeyHint on WASM (e9eed2d)
- Add three-state theme switcher (b6562b5)
- Add WebView UnoFeature for parsing (3dd1181)
- Adjust
DragView
template to match tooltip design (db36453) - Adjust SkiaSharp preview references (35d56b6)
- Allow customizing UIApplicationDelegate (635288e)
- allow debugging in HR (mono runtime) (29296d8)
- Allow delaying the splash screen dismiss until Window content is loaded (0e20b59)
- Automatically include WebView2 Windows with the WebView feature (6cd42dc)
- Bump compilers version (1262c40)
- CommandBarFlyout (e0d3bd6)
- CommandBarFlyoutCommandBar (442290d)
- CommandBarFlyoutCommandBarAutomationProperties (e8b79b2)
- CommandBarFlyoutCommandBarTemplateSettings (16716da)
- Correctly reference Graphics2DSK (9a2bcb5)
- devSrv: Make VS also use csproj.user file for dev-server port config/discovery (d094b7b)
- fps indicator (0b42690)
- gestures: Improve gesture recognition by using an history of pointer points (1d6d5a0)
- Improve the focus/scroll interaction in
ScrollViewer
(a7f31df) - Include resizetizer on Samples app Desktop (bfcecd7)
- Lower logging level of "pointer already being processed" (babc504)
- Make the composition timer configurable (+ code cleanup) (39bfee3)
- Mark legacy
FocusManager
methods asObsolete
and non-editor browsable (87881ab) - perf: Improve computation of UIElement transform matrix (9958d8d)
- Persist FPS indicator visibility setting (19af1c7)
- Port AppBarButtonHelpers from winui3/release/1.6.4 (ae680e0)
- Propagate
Popup
ZIndex
toPopupPanel
(076fedb) - PropertyPath port (9628bb6)
- Render sync'ed inertia processor (d5d7008)
- Samples app should match OS theme by default (e00e819)
- scrolling: Customize scrolling inertia per OS (c059002)
- scrolling: Fine-tune touch scrolling inertia deceleration (d50b089)
- skia: collapse visual subtrees into one SKPicture when the subtree doesn't change for a bit (c95db1a)
- Start font preloading early on all platforms (dbcd3b4)
- Support for
FlyoutShowOptions.ShowMode
(8d8408a) - Support for InputReturnType on UIKit (055139d)
- Support InputReturnType on Android (04a767c)
- Support InputReturnType on native (7132863)
- TextBox: Support for EnterKeyHint on WebAssembly (ee977ab)
- TextCommandBarFlyout (4c78606)
- Update AcrylicBrush resources (c7383e5)
- Update app bar button automation peers to winui3/release/1.6.4 (b0f9d99)
- Update AppBarButton styles (48d7faf)
- Update AppBarButton to winui3/release/1.6.4 (2c8ef67)
- Update AppBarSeparator to winui3/release/1.6.4 (52d2369)
- Update AppBarToggleButton to winui3/release/1.6.4 (a5c9343)
- Update NumberBox helpers to winui3/release/1.7.1 (86dfa45)
- Update NumberBox styles to latest (43d8b9e)
- Update NumberBox to winui3/release/1.7.1 (8ba0400)
- Update references to HarfBuzzSharp (0da1a84)
- Update SkiaSharp and HarfbuzzSharp to stable (8abed42)
- Update WinUI extracted resources (a03bb3b)
- Use app builder for WebAssembly (0814794)
- Use host builder on UIKit (aa18418)
- Use proper WinUI string resources for
StandardUICommand
([22a2874](https:/...
6.0.797
What's Changed
- docs: mention net9 limitation for MSAL WASM (backport #20755) by @mergify in #20763
- docs(nativeelementhosting): mention the infinite measuring bounds edge case (backport #20683) by @mergify in #20768
- docs: remove initializelogging calls from suggested migration code (backport #20730) by @mergify in #20785
- chore: add maui skia runtime package to sdk (backport #20767) by @mergify in #20787
- fix: remove privateassets="all" from mauiembedding bits (backport #20797) by @mergify in #20800
Full Changelog: 6.0.780...6.0.797
6.0.780
What's Changed
- docs: Add
DebugSettings.EnableFrameRateCounter
andCompositionTarget.FrameRate
(backport #20619) by @mergify in #20635 - fix(win32): touchpad horizontal scrolling (backport #20469) by @mergify in #20543
- fix(win32): avoid showing an initial white frame on startup (backport #20515) by @mergify in #20561
- docs: Add
WinAppSDK
suffix to platform-specific C# (backport #20548) by @mergify in #20562 - fix(WebView): change the Microsoft.Web.WebView2 package alias to match the one in uno.sdk (backport #20560) by @mergify in #20570
- dos: update rider wasm browser requirements (backport #20640) by @mergify in #20647
- test: Disable flaky (backport #20466) by @mergify in #20649
- Adjust error reporting on uno runtime references (backport #20474) by @mergify in #20650
- fix: Fix pointer and keyboard events not raised on CoreWindow (backport #20506) by @mergify in #20652
- fix: Ensure
IsEnabled
visual states are properly reflected inTextBox
(backport #20537) by @mergify in #20653 - chore: Disable When_ListViewNestedAndSwipeUpThenFlickDown_Then_ScrollThenShowIndicatorButDoNotRequest for iOS (backport #20610) by @mergify in #20654
- fix: Fix support on mixed UIElement manipulations and direct manipulations (backport #20424) by @mergify in #20658
- fix(mpe): win32 MPE severely flickering (backport #20602) by @mergify in #20660
- fix(x11): check for libvlc before registering MPE extensions (backport #20471) by @mergify in #20665
- fix(WASM): remove the border line and blue focus, adjust the height o… (backport #20644) by @mergify in #20673
- fix: Include Skottie on all Skia targets by default (backport #20657) by @mergify in #20671
- fix: Namespace and logic in
ProgressBarAutomationPeer
(backport #20501) by @mergify in #20666 - [Docs] Use external repo for Hot Design documentation (backport #20516) by @mergify in #20636
- fix(CompositionEffectBrush): avoid infinite invalidation loop (backport #20642) by @mergify in #20710
- feat: Add ability to have multiple direct-manipulation active in parallel (backport #20668) by @mergify in #20691
- fix: Adjust
SkiaSharp.Views
inclusion (backport #20697) by @mergify in #20700 - fix: Adding check that Desktop folder exists (backport #20717) by @mergify in #20721
Full Changelog: 6.0.704...6.0.780
6.0.465
Nearly seven years after unveiling Uno Platform for the first time, we’re announcing our BIGGEST RELEASE EVER and are stepping into the whole new chapter of Uno Platform evolution.
See the Uno Platform 6.0 announcement in our blog post!
Among the changes in this release:
- Unified Skia Rendering for all targets, including iOS, Android and WebAssembly
- MediaPlayer element, as part of the open source offering, for all platforms
- WebView Support, as part of the open source offering, for all platforms
- Native Embedding and Airspace support for all platforms
- Win32 Skia Desktop backend for leaner publish payload and improved rendering performance
- Skia Desktop and Skia iOS improvements in Xaml and Resources trimming
- Skia
ImageSource
caching - Uno.WinRT is now available to reference individually for non-UI projects and packages
- Significantly improved Skia touch support with
GestureRecognizer
and improved scrolling inertia - Many rendering and reliability improvements in Skia TextBox
- Aligned HTML interop API for support on both DOM and Skia renderers
- Skia rendering performance improvements with partial tree rendering
- Skia background Image loading
- IDE Extensions now provide uno.sdk upgrade notification
- Debugger enabled Hot Reload for VS Code
- New item templates for Rider
- Many Skia Composition API improvements (
CompositionGeometricClip
,CompositionGeometry
, all easing functions,CanvasGeometry
,CanvasPathBuilder
)
On the breaking changes side:
- GTK Skia backend has been removed
- UWP API set has been removed
- SkiaSharp 3 is now required
You can browse below the complete change log for this release.
Features
- Add AndroidX.Core.SplashScreen to Uno.Sdk (830296b)
- Add ConditionalTestClassAttribute (c6a7c39)
- Add ConditionalTestClassAttribute (2a60aa3)
- Add error details in dev-server status event (621ebf4)
- Add full screen mode support on WebAssembly (f3a2b23)
- add keyboard events support for wasm-skia (d332e43)
- add playback rate and position (ee2c4b4)
- add support for airpsace on WASM-Skia (cf9aecd)
- Add support for wasm+skia runtime (69b0385)
- Add tvOS to Sync Generator (d5901c4)
- Add Uno.Foundation and Uno.WinRT (918bda2)
- Add UnoSdkVersion MSBuild property (a0dd96d)
- Added ability to generate code that doesn't blow up raw string litterals by counting the number of quotes in the code. (bdba743)
- Added the ability to embed XAML as sources for HR/HD operations (99ebadd)
- Added the ability to embed XAML sources as code when using HR (4af785b)
- Adjust Uno Composition for tvOS (c597ef5)
- Adjust Uno WinRT for tvOS (55019b2)
- Align MainActivity with Uno Templates (44546ed)
- Allow overriding default scaling in runtime tests (7485fb7)
- android-skia MPE (12a0ca0)
- android-skia: native embedding hosting support for Android with the skia backend (f227526)
- android: Add full support for keyboard input connection (6537260)
- android: add permission handling functionality on Skia.Android (48219ad)
- Apply target framework override to unit test projects (8ca14d3)
- BitmapImage: image caching (1fae3af)
- Bump AppCompat for EdgeToEdge (ffd33b5)
- Bump WinAppSDK version (a0d5032)
- composition: add Composition Path Clipping sample (f26c404)
- composition: add easing functions UI tests (63f8909)
- composition: add more CompositionSpriteShape tests (fd9b4cb)
- composition: add Path Shape UI test for CompositionSpriteShape (6ec0751)
- composition: add support for all geometry types for CompositionGeometricClip + optimize geometry creation and rendering (4c87eca)
- composition: animations support for CompositionGeometry + sample (054b01c)
- composition: High DPI support for ISkiaSurface (f2668b1)
- composition: implement all Composition easing functions (3e91a44)
- composition: Implement more CanvasGeometry methods + more tests (61b3c4e)
- composition: implement property animator for AnimationController (dca9bee)
- composition: Implemented CanvasPathBuilder + few fixes for CompositionPathGeometry (d0d61a3)
- composition: initial implementation of AnimationController (54970a9)
- composition: initial support for Composition easing functions (e46a8b3)
- composition: Initial work on Composition Paths (e285c3e)
- composition: more work on AnimationController (cc7433c)
- composition: More work on CanvasGeometry, CanvasPathBuilder, and UI sample tests (f667ce3)
- composition: multi-window High DPI support for ISkiaSurface (8fafa6d)
- composition: Partially implement CompositionPathGeometry (b11d583)
- composition: Partially implemented CanvasGeometry + UI samples (4516581)
- ConditionalTestAttribute support for new Skia targets (08bf892)
- Detect if we're running on VS and delegate the SAVE to it when it's the case. (04ba6c9)
- Do not use CoreWindow on Skia targets (f00d481)
- gestures: Improve gesture recognition by using an history of pointer points (e879150)
- hardware acceleration for android-skia (7aa9339)
- hr: Add ability to remove root of a DataTemplate with HR without cnomua (504593d)
- HW acceleration on Skia.iOS (d1a302c)
- Implement pattern/template grammar for DateTimeFormatter ([c8c6a43](c8c6a43...
5.6.91
What's Changed
- docs(dotnet-new): Updated Framework tfm values (backport #19595) by @mergify in #19599
- fix: Ensure current date is applied in
CalendarDatePicker
on iOS (backport #19581) by @mergify in #19590 - docs: update toolkit docs (backport #19607) by @mergify in #19611
- docs: Add details about VS Code's supported browsers (backport #19575) by @mergify in #19583
- docs(HotDesign): Include known issues link in documentation (backport #19645) by @mergify in #19646
- fix(vs): Add support for Color intellisense in ResourceDictionary (backport #19642) by @mergify in #19650
- fix: Make SplitButton click and tap behave the same (backport #19625) by @mergify in #19652
- fix: Correctly render
CalendarDatePicker
on iOS (backport #19662) by @mergify in #19664 - [HR-XAML] Switched XAML storage from string to UTF8 buffers (backport #19622) by @mergify in #19676
- fix(nativeframepresenter): animate pages depending on NavigationMode (backport #19587) by @mergify in #19679
Full Changelog: 5.6.81...5.6.91
5.6.81
What's Changed
- docs: Update documentation and images to reflect latest .NET 9 instead of previous .NET 8 (backport #19542) by @mergify in #19555
- feat: Add error details in dev-server status event (backport #19450) by @mergify in #19568
- docs: Update Hot Design documentation and clarify project selection for VS Code sign-in with Uno Platform account (backport #19569) by @mergify in #19570
- docs: Add Shiny .NET to supported 3rd-party libraries list (backport #19588) by @mergify in #19589
- Ensuring items in the TOC are alphabetized for the reference section (backport #19573) by @mergify in #19596
- HR: Changed the way code (XAML) is updated through Hot Reload (backport #19584) by @mergify in #19609
- fix(wasm): Ensure proper dependents execution after 9.0.102 (backport #19594) by @mergify in #19613
- fix(vs): don't reload the profile observer on initial solution open (backport #19614) by @mergify in #19619
- fix(droid): add workaround for NavView leaving blank on IsBackButtonVisible update (backport #19517) by @mergify in #19624
Full Changelog: 5.6.70...5.6.81
5.6.70
What's Changed
- fix: Fix DataContext lost on second HR on Android (backport #19524) by @mergify in #19529
- Default
Date
/Calendar
picker dates (backport #19519) by @mergify in #19532 - feat: Add UnoSdkVersion MSBuild property (backport #19526) by @mergify in #19530
- fix(listview): unloading and reloading a ListView should keep the scroll position (backport #19496) by @mergify in #19541
- fix: Drag and Drop initialization on mobile (backport #19535) by @mergify in #19546
- docs: Adjust desktop publishing (backport #19447) by @mergify in #19549
- docs: Update xaml merge docs (backport #18879) by @mergify in #19554
- fix(vsix): Relax global.json parsing (backport #19537) by @mergify in #19556
- fix(hr): Ignore bin and obj folders (backport #19528) by @mergify in #19560
Full Changelog: 5.6.61...5.6.70
5.6.61
What's Changed
- fix: Use newer project capability for WSL in VS 17.13 (backport #19373) by @mergify in #19382
- HR Docs updates (backport #19359) by @mergify in #19386
- ci: Adjust tagging and publishing (backport #19396) by @mergify in #19397
- fix(textbox): fix TextProperty change propagation in xBind (backport #19104) by @mergify in #19391
- fix(nativeframepresenter): fix !AndroidUnloadInactivePages optimizations (backport #19094) by @mergify in #19394
- fix:
UniformGridLayout
andItemsRepeater
in nested layout (backport #19287) by @mergify in #19395 - fix: Make sure to generate OriginalSourceLocation property on DataTemplates (backport #19389) by @mergify in #19400
- fix(hr): Misc updates on HR (backport #19387) by @mergify in #19401
- fix: Fix possible null ref (backport #19411) by @mergify in #19417
- fix(TextBlock): [Wasm] Clear old text when setting text through inlines (backport #19390) by @mergify in #19423
- fix(hr): Fix ENC1002 when dealing with event handlers (backport #19418) by @mergify in #19431
- docs: Miscellaneous docs updates and improvements (backport #19416) by @mergify in #19439
- docs: improve Uno.SDK package version override (backport #19413) by @mergify in #19441
- fix(hr): Add dummy class at the end of the generated file (backport #19436) by @mergify in #19446
- fix(vs): Use single TFM build feature from VS (backport #19440) by @mergify in #19445
- fix(vs): Adjust for initialization delay and skipped synchronization (backport #19455) by @mergify in #19462
- fix(hr): Don't import Microsoft.IO.RecyclableMemoryStream using nuget (backport #19438) by @mergify in #19453
- fix(trim): Adjust linker generator input and output paths for
UseArtifactsOutput
(backport #19466) by @mergify in #19469 - fix(hr): Remove unrelated assemblies from other TFMs for Hot Reload (backport #19463) by @mergify in #19470
- fix: Pack add-ins discovery targets with the dev-server (backport #19464) by @mergify in #19473
- docs: Adjust status health page (backport #19444) by @mergify in #19452
- feat: Prevent HRI to move out of area by inertia (backport #19479) by @mergify in #19483
- fix(hr): Properly detect android for HR workaround (backport #19478) by @mergify in #19487
- fix: CaptionVisibility typo (backport #19449) by @mergify in #19477
- fix(pointers): Fix invalid timestamp causing incredible inertia on macOS (backport #19476) by @mergify in #19481
- fix: Android 15 window insets calculation (backport #19474) by @mergify in #19498
- Android insets handling continued (backport #19501) by @mergify in #19506
- Android Insets Part 3 (+
DiagnosticOverlay
positioning, AndroidX update) (backport #19510) by @mergify in #19512
Full Changelog: 5.6.33...5.6.61
5.6.30
In Uno Platform 5.6, our first release of 2025, we’re doubling down on what matters most to you — productivity, performance, and seamless cross-platform development experiences. There are major advancements across the board, from faster Hot Reload and expanded app packaging support to significant runtime and memory optimizations.
- Hot Reload continues to evolve and lead the .NET ecosystem. As it is the foundation of Hot Design, our next-generation visual designer, nothing short of an amazing Hot Reload experience will satisfy us.
- App packaging is now even easier, with new support for
.pkg
and.dmg
formats, code signing, notarization, and destructive mode Snap package creation for CI environments. - Performance improvements across Uno Platform include up to 10x faster execution for Wasm AOT, more efficient visual states, and memory optimizations that make apps leaner and faster.
Take a look at our blog post for now details!
See below for the full change log.
Features
- Add Color resources to ResourcesExtractor (7d9a654)
- Add Microsoft.Windows.AppLifecycle to Sync generator (96ac958)
- Add missing contracts to ApiInformation (0fe8895)
- Add native embedding to netXX-desktop/macOS (66daa65)
- Add support for AppWindow.Show methods (c9305c4)
- Add XAML resources UPRI trimming (0dfd176)
- Allow selecting custom values on Selector (8b6a5d3)
- Allow simulating touch input in Samples app (2a243c9)
- hr: Add ability to remove root of a DataTemplate with HR without cnomua (545e109)
- hr: Remove deprecated XAML and partial reload HR modes (a46202a)
- Implement pattern/template grammar for DateTimeFormatter (c8c6a43)
- implement ShapeVisual.ViewBox (0a0c855)
- implement the X Input extension to support touch input, smooth scrolling, etc. (071570e)
- In app review on Android (760205a)
- InputPropertyAttribute (493ede4)
- Listen to trat changes on iOS 17+ (3cafa43)
- macOS: override ms-appx location when app is bundled (05f21e6)
- Microsoft.Windows.AppLifecycle contract (b4619da)
- Simulate preview key events for tests (61c80df)
- Uno.UI.GooglePlay (61041ae)
- Use SIMD to compage images in a test to accelerate builds. (f1883d1)
- Warn the user when native frame is used with WinUI Frame behavior (e7a0788)
Performance Improvements
- anim: Don't refresh triggers and transitions during parsing (ec3ab58)
- anim: Register only once to the JS animationframe callback (2b303b6)
- brush: Don't use reflection to invoke brush updates (679b4bf)
- Enable ResourceDictionary "not found" caching (6f696d4)
- limit JavaStringCache entries to deal with excessive GREF counts (deff175)
- optimize opacity filter allocations (91be36d)
- reduce SKPaint and SKPath allocations (9264d5e)
- wasm: Split methods containing try/catch/finally blocks (c4df6bf)
Bug Fixes
- add minimum API HttpRequestHeaderCollection to work (c781c95)
- Adjust [NotImplemented] on PasswordVault (0202aa8)
- Adjust build for macOS 15/14 for the removal of Xcode 16. (519a059)
- Adjust for outdated rc2 references (ba5b416)
- Adjust implicit package inclusion (aba082d)
- Adjust IsFocusable on Popup (228d4a1)
- Adjust support for InvariantCulture mode support (39931e8)
- Adjust tf reordering for VS 17.12 or later (5e6c681)
- Adjust tf reordering for VS 17.12 or later (d7f3733)
- Adjust the target SDK version of Samples app on Android (dc9da22)
- Adjust TreeHelper to correctly handle native elements (06e9137)
- align DepObjCol indexer behavior with winui (1c01de0)
- Allow closing ContentDIalog after button click cancellation (2aacc68)
- Allow properties to be multi-lines (5813d5b)
- Allow properties to be multi-lines (78fa7d7)
- Always activate window on Activate() (33ebe65)
- android: PointerRoutedEventArgs.GestureEventsAlreadyRaised was reset while bubbling events up (864e00f)
- android: Restore inheritance workaround for android (0222291)
- Apply x:Bind expressions in Resources (5529e7b)
- assets: Adjust project transitive output path (983b96d)
- Avoid duplicate slash in AssetsPathBuilder (e5db20c)
- Avoid handler leak on layout instance (f647e4c)
- Avoid MUX vs WUX type clashes (2143af3)
- Avoid subscribing to touch scroll events twice (546946c)
- change how we handle the keyboard (5b7c0fc)
- ci for macOS (d1ca282)
- codegen: markup-ext improper cast for nullable value-type dp (0ab2847)
- Correcly await async RunOnUIThread calls (7866edc)
- DeferLoadStrategy should work even if no visibility is set (6c198eb)
- Define the working directory for add-in discovery (922f095)
- Deprecated iOS
Launcher
methods (73c27f8) - Do not output PopupPan...