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; 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; 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.