Fuse (beta) release #0.5.3524


  • Added “Reset” menu option to the local preview, allowing you to manually force the application to reset itself to a default state if javascript interactions plus live reloaded markup has caused your application to behave irregularly. Performing a reset in this way functions as a broadcast, resetting every active preview. This function can also be reached using fuse reset-preview



  • The meaning of DelayBack and DurationBack has now changed. The delay is now measured from the end of the timeline, and is the delay prior to the transiton starting. The transition still takes DurationBack time, but does not start until after DelayBack time. This attempts to create a more understandable definition of the ...Back properties.

  • ProgressAnimator has been removed. The TrackAnimator should be used instead.

Handle renamed to Name

Docs update

  • The Node.Handle and State.Handle properties are renamed to Node.Name and State.Name respectively
  • ux:Name now sets the Name automatically on Node and State, and vice versa. (the ux: prefix is therefore no longer strictly required for Name on Node and State)
  • Script events that used to provide a handle property now provide a name property instead


<Page Handle="foo" />


<Page ux:Name="foo" />

Or alternatively:

<Page Name="foo" />


  • Number.Format now takes a shorter format string, for example: F2 instead of {0:F2}
  • Effect.ExtendsRenderBounds and Effect.RenderBounds removed and replace with ModifyRenderBounds to allow chaining and effects to clip the bounds (as Mask does)
  • RenderNode now invalidates when children are added or removed and propagates layout to the children


  • Added Observable.refreshAll + documentation


  • PullToReload trigger added to support common behaviour of pulling down on a scroller to reload the contents
  • ColumnLayout added as a new layout type
  • The ScrollViewer has had some adjustments in how it responds to resizing. The result should be smoother now than before.
  • ScrollViewer.SnapMinTransform can now be set to false to disable any visual handling of the snap region at the top/left.

Text properties

  • The FontSize, TextAlignment, TextColor, and Font properties are no longer inherited properties and must be set specifically on the new TextControl or derived types (specifically TextInput or Text). If you used such a property on a non-TextControl before and need it to cascade to the children set it in a Style on that node instead.


   <Panel FontSize="16">

Could become:

       <Text FontSize="16"/>

Or to affect all Text children:

           <Text FontSize="16"/>

  • Text and TextEdit derive from common TextControl. Shared properties moved into base class. TextElement and TextEdit must be embedded in one of these controls now (to acquire the new ITextPropertyProvider for rendering details)

Layout in Node class

  • Panel accepts Node as children, not just Element
  • Some properties/functions moved from Element into Node: LayoutRole, ArrangeMarginBox, GetMarginSize, InvalidateLayout, IsMarginBoxDependent, BringIntoView
  • ArrangeMarginBox requires a third parameter, the default was SizeFlags.Both before
  • Some types moved from Fuse.Elements into Fuse: SizeFlags, LayoutRole, InvalidateLayoutReason, LayoutDependent
  • Element.ParentElement has been removed as the parent may not be an element (case Parent to Element if you really need this, be aware of null)
  • Element.ElementRoot has been removed as it is no longer clear what it means, and should not be used
  • BringIntoViewArgs.Element replaced with Node
  • InvalidateVisualReason removed as it wasn’t provided consistently and wasn’t used
  • Element.RenderNode split into RenderNodeWithEffects/WithoutEffects. RenderBounds becomes a property on Node, as does HitTestBounds.
  • Element.Bounds has been removed as it implied a feature that wasn’t there. Use new Rect(float2(0),ActualSize) if you should actually need the local logical bounds of the control.

ParentNode refactoring

  • Node.ParentNode renamed to Node.Parent
  • INodeParent, IResourceParent and IWindow removed. Accept a Node instead.
  • App now suports behaviors (e.g. <JavaScript>) directly (added to hidden root node)


  • Renamed Experimental.Threading to Uno.Threading
  • Optionally send in dispatcher to HttpMessageHandler.CreateRequest