New in version 0.29.0

Released one year ago

Please remember to uno clean your projects after upgrading Fuse.

  • Introduced <Transition> allowing for fine-tuning transitions between pages in Navigator.
  • Fixed signing of Android apps on Windows when building with Gradle
  • Initial support for Swift by calling it through Objective C. (Writing foreign Swift directly is not supported yet.)
  • Fonts can now be loaded from the target device so they don't have to be bundled with the app
  • Using Gradle builds, you can now finally preview and export for Android even if you have spaces in your paths! Wohoo!
  • Introduced <Transition> allowing for fine-tuning transitions between pages in Navigator. Please see the documentation for details and examples.
  • Fixed an issue with spaces in paths when doing preview and export for Android
  • Fixed an issue when signing Android apps on Windows
Support for adding Swift files to unoprojs

Added Swift file type to unoprojs. Swift files currently do not get the foreign macro expansion that ObjCSource files benefit from.

Set the desired Swift version (it currently defaults to 3.0) with the iOS.SwiftVersion project property, like this:

"iOS": {
  "SwiftVersion": 3.0,

The following example shows how to use this feature:


import Foundation

public class HelloSwiftWorld: NSObject {
    public func hello() {
        print("Hello world!");


    "Includes": [


Since Swift can be used from Objective-C, we can call into the Swift code by using Foreign Objective-C, for instance like this:

[ForeignInclude(Language.ObjC, "@(Project.Name)-Swift.h")]
public class Example
    public static void DoIt()
        HelloSwiftWorld* x = [[HelloSwiftWorld alloc] init];
        [x hello];
  • Added SystemFont which is a subclass of Font that gets fonts from the target device so they don't have to be bundled with the app.
  • iOS: Fixed an issue where iOS 10 apps would crash during font loading.
  • {Property } bindings now supports automatic conversion (bindings) between weakly compatible types, such as float and Size.
  • Added {SnapshotProperty ...} which is a read-once property binding that reads the value at rooting time but does not listen for changes in the property.
  • Moved PropertyBinding from Fuse.Controls to Fuse.Reactive (might break Uno code and cached code, remember uno clean)
  • Fixed a crash that could occur when doing two-way data-binding to enum values.
  • Introduced Element.ExplicitTransformOrigin that allows setting a location for the TransformOrigin
  • Added the ability to use non-template pages to Navigator
  • Added PageView, which is a Navigator without any standard transitions or page effects
  • Added a JavaScript interface to the NavigationControl (base type of Navigator and PageControl). This adds the gotoPath and seekToPath functions.
  • Added Each.Offset and Each.Limit that allow limiting the number of items being displayed.
  • Fixed a crash that could occur when data-binding to the Rows/Columns property of a grid.
  • Android: Fixed issue where <Circle /> inside <NativeViewHost /> could end up not displaying.
  • Fixed a null value exception when binding a value to SolidBrush.Color
  • iOS: Fixed a bug in Video where calculating rotation could result in glitches due to a rounding error.
  • Added RelativeScrollPosition to ScrollPositionChangedArgs
  • Added serialization of value (the scroll position) and relativePosition to JavaScript for ScrollPositionChangedArgs
  • Unsealed DropShadow, making it possible to create ux:Classes of DropShadow
  • iOS: Fixed issue where having a <NativeViewHost /> inside a <PageControl /> would not handle input events properly
  • Implemented forwarding of HitTestMode to the native view for elements inside a <NativeViewHost />
  • Added <ImageFill WrapMode="ClampToEdge" /> to restore old, clamped rendering of the texture. This is useful if you're just using an ImageFill to mask an image with a circle or something along those lines.
  • Added support for WhileBusy and WhileLoading while using an ImageFill brush inside a Shape
  • Changed Tapped to be an attached event, which means handlers can be created by doing <Panel Tapped="{onTapped}" /> instead of <Panel><Tapped><Callback Handler="{onTapped}"/></Tapped></Panel>.
  • Android preview and export now works for users with spaces in their paths, as long -DGRADLE is used. Note that for this to work with preview, you have to specify the .unoproj explicitly: fuse preview -tandroid my.unoproj -DGRADLE.
Source value warning
  • Fixed the source value 1.5 is obsolete and will be removed in a future release warning.
  • Visual.ParentToLocal has been replaced with TryParentToLocal. It's possible that this function can fail, even under common use, thus it's important callers detect that condition.
  • Visual.FirstChild<T> now searches for the first child, not the last child as it previously did. If you depended on the old behavior, you can manually traverse the Visual.Children list backwards, and search for the child.
  • Android: Fixed a crash that could occur when receiving two notifications at the same time.
Event handlers
  • Fixed a bug where some event types (e.g. <Activated>) would fire the old version of an event handler when a page is navigated to multiple times.