1. A method of rendering a user interface, the method comprising: obtaining a plurality of user interface elements and hierarchical relationship information for the plurality of user interface elements that define the user interface, wherein the user interface includes a plurality of user interface widgets; identifying a top-level element in the plurality of user interface elements using the hierarchical relationship information, wherein the top-level element corresponds to a top-level user interface widget in the plurality of user interface widgets; requesting the top-level element to create the corresponding user interface widget, wherein the top-level element: determines whether the user interface is for a design environment or a runtime environment; and creates a proxy widget in response to a determination that the user interface is for the design environment or a runtime widget in response to a determination that the user interface is for the runtime environment; and rendering the corresponding user interface widget for the top-level element, wherein the proxy widget is rendered within another user interface widget, and wherein the runtime widget is not rendered within another user interface widget.