1. A method of rendering a user interface (UI), the method comprising: receiving, from a UI client engine associated with an application, a UI component tree for the application; determining a visual node tree for the UI component tree; asynchronously receiving, from the UI client engine, UI data items related to elements of the UI component tree; populating the visual node tree with the UI data items; and rendering the UI in accordance with the visual node tree independently of further input from the UI client engine.