Uno Platform v2.2.0 Release Notes

Release Date: 2020-04-21 // about 4 years ago
  • ๐Ÿš€ The Uno 2.2 release is packed with new features, performance improvements and bug fixes, even if it's closely following the 2.1 release!

    ๐ŸŽ We're also hard at work on adding support for macOS apps (Thanks @MartinZikmund), and while we still do not have anything to announce, it's taking shape!

    Among the implemented features, you'll find:

    • ๐Ÿ‘Œ Support for MenuFlyout, UIElement.ContextFlyout and MenuBar
    • ๐Ÿ‘Œ Support for ScrollBar
    • โž• Add support for dotnet new unoapp and macOS templates
    • ๐Ÿ‘Œ Support for Electron hosted apps
    • ๐Ÿ‘ ImageSource.SetSourceAsync support for WebAssembly (Thanks @SuperJMN)
    • ๐Ÿ‘Œ Support for ColorAnimation
    • ๐Ÿ‘Œ Support for Pedometer for iOS and Android (Thanks @MartinZikmund)
    • Suppport for mouse wheel events (PointerWheelChanged) on WebAssembly
    • ๐Ÿ‘Œ Support for DropDownButton from WinUI 2 (Thanks @MartinZikmund)
    • ๐ŸŽ Many performance and memory updates impacting all platforms at various levels, such as giving a rough 20% improvement on controls creation on WebAssembly. A more detailed post will follow soon on that topic.
    • ๐Ÿ‘Œ Support for ms-appdata paths in Image, MediaPlayer (Thanks @MartinZikmund)

    ๐Ÿ‘ Uno is now built using C# 8.0 and VS 16.5 on Azure Devops hosted agents, which means that AndroidX and Android 10 support is close by.

    ๐Ÿš€ And finally, many of the recent updates were targeted at improving the behavior of controls in the Windows Community Toolkit, with enabling DataGrid, TabView and Expander controls. On the topic of the DataGrid, there's still lots of work to be done, particularly around performance under WebAssembly, but this release updates now make the control useable.

    ๐Ÿ”‹ Features

    • [WASM] Added the ability to load images from bytes (9cfb29f)
    • โž• Add benchmark filter (1335d7b)
    • โž• Add MenuFlyout support (4fc3cb1)
    • โž• Add support for dotnet new unoapp and macOS templates (a591d69)
    • โž• Add support for UIElement.ContextFlyout (5640745)
    • focus: Raise Control.GotFocus asynchronously (21d7758)
    • โž• add support for Electron. (a56a7d9)
    • โž• Add support for FindElementsInHostCoordinates (6231d0b)
    • โž• Added support for DropDownButton from MUX (de78481)
    • ๐Ÿ‘ ARM64 support for UWP in solution template (39230e7)
    • animation: [WASM] Add fast-path for zero-duration animations (19ec739)
    • animation: Implement ColorAnimation for iOS, Android, and WebAssembly (4b6ff56)
    • animation: Support independently animating SolidColorBrush from shared resource (f6b3ce8)
    • commandbar: Add support for native CommandBar.HorizontalContentAlignment on Android. (5e6ca82)
    • focus: [WASM] Update FocusManager when browser window loses focus (3a61248)
    • pointer: [WASM] Enable support of the PointerWheelChanged event (2a0d9fb)
    • pointers: [WASM] Add support for the mouse wheel event (57ccc39)
    • pointers: Wire-up the pointer wheel event (805e527)
    • Using Uno blue accent color for WASM splash (cf4d56b)
    • scrollbar: Add support for ScrollBar (9eadb8e)
    • Async initialization of Pedometer (0e306c9)
    • DatePicker now shows picker with today selected if no date is set (deef3dc)
    • Implement the Thumb.Start horizontal and vertical offsets (9246668)
    • Implemented AppDataUriEvaluator (a6f5d43)
    • Implemented DropDownButtonAutomationPeer (a057ef8)
    • Implemented pedometer on Android (cdf2cc6)
    • Implemented Pedometer on iOS (617dd49)
    • โœ‚ Remove monoandroid80 (1778a75)
    • โœ‚ Remove the dependency on System.Xaml for .NET Core compatibility (9d8674a)
    • ๐Ÿ‘Œ Support for Frame.IsNavigationStackEnabled (d268db9)
    • ๐Ÿ‘Œ Support Lottie animations on iOS (17df575)
    • wasm: Add CoreDispatcher support for threading (53304d5)
    • WebView: Add DocumentTitle for Android and iOS (21ae5b2)
    • ๐Ÿ‘Œ Support of DataTransfer.DataPackage.RequestedOperation (a6a1479)
    • 0๏ธโƒฃ Use C# 8.0 by default (9431fc9)
    • Using ms-appdata paths in Image, MediaPlayer (42ecf36)
    • ๐ŸŽ (macOS) Add #2844 support for Image (c0d16ea)
    • ๐ŸŽ (macOS) Add image Asset in Sample proj (1f465a4)
    • ๐ŸŽ (macOS) Add Support for DisplayInformation (fa52844)
    • ๐ŸŽ (macOS) Support for XAML HotReload on the SampleApp (6387d57)
    • ๐ŸŽ [macOS] Add support for TextBox (8c99072)
    • ๐ŸŽ [macOS] ScrollViewer - show scroll bar (47dfe8a)
    • ๐ŸŽ [macOS] Show full samples list (f080e87)
    • โšก๏ธ [macOS] Update properties on scroll (99ad526)
    • โž• Add support for Lottie on macOS (1b8c6e5)
    • โž• Added DoubleAnimation, DoubleAnimationUsingKeyFrames on macOS (3eea4b2)
    • DisplayRequest: macOS support (80ce63e)
    • ๐ŸŽ ListView - allow WASM/macOS implementation to be tested on iOS/Android (c22a951)
    • ๐ŸŽ Share WASM ListView implementation with macOS (1c3541b)
    • ๐Ÿ‘Œ Support playback rate on iOS/macOS (f21f458)

    ๐Ÿ’ฅ BREAKING CHANGES

    ๐Ÿ“œ The Uno.Xaml parser is now always used

    ๐Ÿ— The System.Xaml assembly is not always available, particularly when building under .NET Core.

    The monoandroid80 target is not available anymore.

    ๐Ÿ—„ It has been deprecated by Google.

    Uno is now built using VS2019 16.4

    ๐Ÿ— It does not support building Xamarin iOS/Android applications with Visual Studio 2017.

    ๐Ÿ”— Linker errors may occur such as:

    Java.Interop.Tools.Diagnostics.XamarinAndroidException: error XA2006: Could not resolve reference to 'System.Collections.Generic.Queue`1'
    (defined in assembly 'Uno.UI, Version=255.255.255.255, Culture=neutral, PublicKeyToken=null') with scope 'mscorlib, Version=2.0.5.0,
    Culture=neutral, PublicKeyToken=7cec85d7bea7798e'.
    

    commandbar: Alignment of native CommandBar.Content used to be Stretch/Stretch and is now aligned with Top/Left on UWP.

    ๐Ÿ‘‰ Use CommandBar.HorizontalContentAlignment and first element of content's VerticalAlignment to control.

    ๐ŸŽ Performance Improvements

    • [Wasm] Adjust FrameworkTemplatePool to keep hard refs to pooled instances (8881200)
    • [Wasm] Adjust GC parameters for the Samples app. (eacc8b7)
    • [Wasm] Cache Marshal.SizeOf calls in TSInteropMarshaller (a967c22)
    • 0๏ธโƒฃ [Wasm] Disable try/finally block in DefaultArrayPool. (fce040a)
    • ๐Ÿš€ [Wasm] Ensure UIElement instances release their children (1f48c6b)
    • โœ… [Wasm] Improve IsHitTestVisible (9f5968d)
    • ๐Ÿšš [Wasm] Remove pass-through try/catch block in InvokeJSUnmarshalled (3175803)
    • [Wasm] Set Rectangle arrange SVG position using binary invocation (e4aade2)
    • [Wasm] Use strings for js method dispatch table (a2b1f63)
    • Aggregate DependencyObject finalizers (32041c2)
    • Don't reflect on UnsetValue (27e0fc1)
    • ๐Ÿ‘Œ Improve TypeScript DOM classes list construction (cea17c7)
    • ๐Ÿ‘Œ Improve Wasm color conversion ToHexString (018dcdd)
    • ๐ŸŽ‰ Initialize FrameworkElement style if new parent is not null (90d0421)
    • โฌ‡๏ธ Reduce memory allocations for inherited properties management (d659c3d)
    • โฌ‡๏ธ Reduce memory pressure during object creation (50d99e6)
    • ๐Ÿ‘‰ Use Array pooling in DependencyPropertyDetailsCollection (c3f0978)
    • ๐Ÿ‘‰ Use strings for javascript object maps lookups (58cee71)
    • grid: Reduce memory pressure caused by GCHandle (5183d87)
    • animation: [WASM] Add fast-path for zero-duration animations (19ec739)

    ๐Ÿ› Bug Fixes

    • ๐Ÿ— ".Uno" in project names results in build errors (f3580b4)
    • [Android/iOS] Layouter - Clipping were not properly applied. (245d255)
    • โช [iOS] Restore original ComboBox.IsPopupFullscreen behavior (5ac0026)
    • ๐ŸŽ [macOS] Add NativeCtorGenerator support (210b30b)
    • ๐Ÿ’… [macOS] Adjust native styles defaults (107f68d)
    • ๐ŸŽ [macOS] Create Layer for ArbitraryShapeBase (a367030)
    • ๐ŸŽ [macOS] Tentative performance update for NSTextStorage. (31bd64f)
    • [uap10] Fix ElevateView Generic.xaml packaging (1c48cfd)
    • [Wasm] Adjust linker settings for FocusManager.ReceiveFocusNative (7524d6e)
    • [WASM] Fix clearing the Data of a Path (7b4bcb4)
    • TextElement.Background cannot be set to null (d6dfec8)
    • โž• Add internal Control.UpdateVisualState (6520e1e)
    • โž• Add support for ItemCollection.Size (4c7d3f1)
    • โž• Added missing methods to DiffIgnore (9715429)
    • ๐ŸŽ Adjust DependencyObjectGenerator for macOS Support (bc2841f)
    • Adjust measure/arrange phase (c8f9917)
    • ๐Ÿ‘ป ApplicationData.Current.[LocalFolder|RoamingFolder] throws a NRE exception (7c14c5a)
    • Avoid crash in Lottie on Android (7a45a80)
    • ๐Ÿ’ฅ BREAKING CHANGE Thumb Drag events args changes are no longer cummulative! (ad93fd5)
    • ๐Ÿ”ง C# 8.0 configuration (b77bc5c)
    • ๐Ÿ”„ change BuildVersionCodes.P to integer (28) (98fd65a)
    • ๐Ÿ”„ Change ExpandCollapsePatterIdentifiers not to throw (a549e87)
    • ๐Ÿ”„ Changed IsNavigationStackEnabledProperty to property (7de5135)
    • DatePicker dismiss + DatePicker styling (cb4d6b9)
    • DatePicker text parts width (8894e25)
    • โœ… DisplayInformation UITest (32a307d)
    • FindName cannot dig into UIElement.ContextFlyout and Button.Flyout (1aa9852)
    • ๐Ÿ›  Fix no pointers events on WASM for elements nested in a manipulation aware element. (fcb7178)
    • ๐Ÿ›  Fix Shapes hit test (was requiring a Background ... while this property is not event on the WinUI API) (f625c31)
    • ๐Ÿ›  Fixed build issue (0a5d1d5)
    • ๐Ÿ›  Fixed DefaultPreferredBodyFontSize to SystemFontSize (125a15f)
    • ๐Ÿ›  Fixed ReportInterval in existing Android sensors (cfd94b2)
    • ๐Ÿ›  Fixed xmlns for UWP (d73ae26)
    • flyout cannot be light dismissed by clicking outside of its content (cb44458)
    • Frame.Navigating can cancel (d5bec47)
    • GetRelativePath is not available in Standard 2.0 (5580d8b)
    • ๐Ÿ‘Œ Improved handling of URI host (d78f1f3)
    • invalid redondent cast ... (5b74c54)
    • ๐Ÿ‘ป ListView was throwing an exception if changing the SelectionMode while element were selected (e0289f2)
    • โฑ Log exceptions domain and TaskScheduler in the SamplesApp (0e77b9d)
    • ๐Ÿ‘‰ make sur eto not filter ou event for implicit captures (425cf4b)
    • ๐Ÿ‘‰ Make sure VisibleBoundsPaddings continue to work after a resize. (c88ab58)
    • ๐Ÿ‘‰ Make UIElement KeyboardAccelerators an intenal DP (d7e5502)
    • ๐Ÿ‘ MenuBar now supports dark theme (508598b)
    • MenuBarItem IsFlyoutOpen and Invoke are public (126f837)
    • ๐ŸŽ MessageDialog buttons callbacks not being invoked on macOS. (206dc8e)
    • ๐Ÿšš Move Lottie sample animations for Android (67844f7)
    • โœ… null Fill appears black on WASM + fix the hit testing accordingly (6a8b96e)
    • path defect caused by known vswin bug (#1349) (82f9fca)
    • Prevent Shapes (mapped to svg) to stoll the pointer events when they are not visible (fd4e1ab)
    • Properly set Lottie animation properties on Android (06cb7d2)
    • android: Changed the logic of previous commit. (6f25d6a)
    • android: Fix for bug #2879 (c4dd713)
    • android: Invoke .forceLayout() only when appropriate. (c4d26e3)
    • android: screenshot issue with status bar (25010dd)
    • android: shapes samples were crashing because Points were not populated. (58bc764)
    • animation: Correctly report animations targeting SolidColorBrush.Color as independent (2b0ffd8)
    • articles: fix broken paths to images in .md files (0109740)
    • brush: [WASM] Update FrameworkElement.Background when SolidColorBrush.Color changes (8066a19)
    • codegen: BindableMetadata properly globalizing generic type paremeters (d0f62c5)
    • commandbar: [iOS] Fix text in CommandBar title not appearing after navigation (3f23de0)
    • ContentDialog: Content dialog can be closed if Closing event was canceled (4f8e93e)
    • ContentPresenter: [Wasm] ContentPresenter background is not applied properly (b7a2d71)
    • elevatedview: Make sur the ElevatedView recopy its TemplatedParent. (e894ffb)
    • elevatedview: Patch a TemplateBinding problem. (ede532c)
    • focus: [Android] Fix NRE when calling ProcessFocusChanged() with no inner TextBoxView (fdf44ff)
    • focus: [WASM] Adjust native focus application for TextBox (c6a55b1)
    • image: wrong measure for images on iOS (4f825ba)
    • images: Images with margin were returning wrong measure size. (917cee0)
    • ios: UIDatePicker would sometimes offset day/month/year when changing other parts (ca19267)
    • layouting: Ensure negative Margin doesn't push DesiredSize below 0 (db71724)
    • perf: [WASM] Listen to focus changes at top level only (cc73d46)
    • point: Fix comparing a Point to null NRE (5899731)
    • pointers: Fix UI tests for wasm (f928c55)
    • pointers: Restore the NotImplemented flag for platforms other than WASM (057e8a9)
    • pointers: Restore the WinUI parameter name for pointer overloaddable methods (9c4cff6)
    • reg: Fix dotnet new templates not registered properly (527e165)
    • Slider: macOS vertical thumb movement is flipped (36fd57e)
    • tooltip: Fix tooltip may appear if the control is unloaded (27b4a44)
    • visibleboundspadding:.SizeChanged only on iOS (543dd66)
    • visibleboundspadding: bring back handler on LayoutUpdated (67d0ed2)
    • โœ‚ Removed unusued fields on FrameworkElement. (3f10ca0)
    • repository user name (cb688cf)
    • ๐Ÿ— resolved build by removing dangling comma (59739c3)
    • โช Restore the protected virtual OnChildrenChanged in Shape (639eb8c)
    • Slider value invalid when tapping over the line. (0113f8b)
    • โœ… SvgElement now inherits from UIElement, so it won't request a FE.Background to be HitTestVisible (83eb321)
    • wasm: DatePicker rendering (01ad446)
    • Transform to visul now takes in consideration render trasnform origin (eca0314)
    • VisibleBoundsPadding causing text alignment problem on iOS. (d349323)
    • VisibleBoundsPadding was setting Padding too late. (e4c5e1a)