1. A computing system comprising: one or more processors; memory; a user interface module stored in the memory and executable by the one or more processors to: generate a user interface data structure representing a user interface as a side effect while executing or interpreting imperative programming code, the user interface data structure being generated based at least in part on state data and the imperative programming code, the user interface data structure including a tree structure comprising a plurality of nodes including one or more child nodes and one or more leaf nodes; render, based at least in part on the user interface data structure, an interactive graphical user interface; detect a change in one of the imperative programming code or the state data; in response to the detected change, update the user interface data structure, the update comprising: determining, for a statement of the imperative programming code corresponding to a user interface element, whether a first node is present in the user interface data structure that corresponds to the statement; in response to determining that the first node is present in the user interface data structure, determining whether the user interface element or contents corresponding to the first node are changed; and in response to determining that the user interface element or contents corresponding to the first node are changed, modifying the first node based on the change of the user interface element or contents corresponding to the first node; and update, based at least in part on the updated user interface data structure, the interactive graphical user interface to render an updated interactive graphical user interface.