New in version 1.7.0

Released yesterday

Please remember to uno clean your projects after upgrading Fuse.


  • New partial curves feature. Very handy for drawing growing vector shapes!
  • Lots of bugfixes overall.
  • And someone seems to have sneaked in a very early version of our new Sketch importer!
Fuse Studio
  • New experimental Sketch Importer available which lets you convert Sketch symbols to UX classes. Read the docs carefully and keep in mind that it's still very early days for this feature. :) (The old Sketch importer still works as before.)
  • Fixed suggestions for ux:Class and ux:Property in the UX code completer
Partial Curves
  • Added support for drawing partial curves to Path and Curve. Refer to the PathStart, PathLength and PathEnd properties.
  • Added the path expressions pathPointAtDistance and pathTangentAngleAtDistance for locating an offset along a Path or Curve and the heading.
  • Fixed a crash resulting from adding dynamic pages and binding by name
Router / Navigator
  • Fixed the invalid reuse of an existing page if the context does not match
  • Fixed goBack to properly modify the route with two duplicate routes in the history
  • Fixed bug where arrays inside arrays would produce unexpected behavior
  • Fixed bug where a cycle in the object graph would result in infinite recursion in some cases
  • Fixed bug where changing the value of a property from an object to a primitive value would cause odd behavior in some cases.
TextColor Opacity
  • Fixed a failure to render translucent TextColor correctly
  • Fixed the rendering of opaque emoji when TextColor is translucent (they will not also be translucent, though still use the font coloring)
Node Data Context
  • Removed some deprecated methods and classes from Node: IDataListener, OnDataChanged. These were not meant to be public.
  • Deprecated {} in favour of the new data() function. {} had unusual binding rules and would often not bind to the intended context. data() always binds to the prime data context, it's unambiguous and predictable.
  • Fixed the object provided to JavaScript callbacks in It will now always be the prime data context, not just the next contextual data.
  • Deprecated and removed several functions which were not meant to be public. The deprecated ones will be removed shortly, as the current interface cannot be supported in the future. ISiblingDataProvider, ISubtreeDataProvider, IDataEnumerator, Node.GetFirstData, Node.EnumerateData, Node.BroadcastDataChange, Node.IDataListenere, Node.OnDataChanged, Node.AddDataListener, Node.RemoveDataListener, IObject, IArray
  • Fixed bugs in gradient rendering on desktop (DotNet targets)
  • Added support for boolean == and != expressions, which can be used for things like negating boolean expressions.
  • Added support for the logical not operator. This means you can do "!someBoolean" to logically negate it.
  • Fixed negation operator (-, eg. -someValue). Previously it was far to positive. ;)
  • Added vector accessors x(v), y(v), z(v), w(v) to access the component values of float/2/3/4 values. (Note: x and y have an overloaded meaning now, also providing Element position).
  • Added atanVector to compute arc-tangent from a float2 input
  • Fixed bug where ScrollView's inside a NativeViewHost would scroll to fast
  • Fixed bug where the scrolling indicator in a native ScrollView would not show on iOS
  • Added ContentSize property on the Fuse.Controls.Native.IScrollViewHost interface. Needed by iOS to layout the native scrollview correctly
  • Setting the Background property to something else than SolidColor or StaticSolidColor has been deprecated, and gives a warning. Support for this will be removed in an upcoming release.
  • Setting the StretchMode property to Scale9 on VideoVisual has been depecated, and gives a warning. Support for this will be removed in an upcoming release.
  • Removed protected constructor for LayoutFunction, this was not meant to be public. Sealed the derived classes, they were not meant to be extendable.
  • Added JavaScript.Names with option Require to prevent injecting names into the JavaScript code namespace.
  • Several Uno functions in ScriptModule and related classes have been marked internal. These were never meant to be part of the public API.
  • Removed obsolete method BitmapFont.CreateFromPbf().
  • Removed obsolete classes SdfFontImporter, SdfFontShaderBlock and SdfFontShader.
  • Made String.IndexOf() and String.LastIndexOf() throw ArgumentOutOfRangeException on negative values on all build-targets.
  • Implemented String.IndexOf(char, int, int), String.LastIndexOf(char, int, int), String.IndexOfAny() and String.LastIndexOfAny.
  • Implemented Array.IndexOf<T>() and Array.LastIndexOf<T>().
  • Removed everything in Uno.Content.Splines and Uno.Content.Models. This was already marked as obsolete a while ago, and all known users of the API has been removed.
  • Random.NextInt(int) now throws ArgumentOutOfRangeException when passed negative values, and returns zero when passed zero.
  • Random API has been more aligned with the .NET API:
    • The SetSeed-method has been marked as obsolete. Construct a new Random object instead to change the seed.
    • The NextInt-methods has been renamed to Next. The old methods are still available, but will produce obsolete warnings when used.
    • A NextDouble has been added, that returns a number between 0.0 and 1.0.
    • The NextFloat-methods has been marked as obsolete. Use the NextDouble method instead.
    • The NextFloat2, NextFloat3 and NextFloat4-methods has been marked as obsolete. Use multiple calls to NextDouble instead.