A computing device comprising: a processing unit; data storage; and a web browser application stored in the data storage and executable by the processing unit to carry out operations comprising: receiving, in response to a request for a web page, (i) declarative markup data defining a hierarchical arrangement of components of the web page, including a first component and a second component, wherein the hierarchical arrangement comprises using a shadow document object model, DOM, to define a relationship between the first component and the second component, wherein the relationship comprises a data-binding between the first component and the second component, and (ii) a set of scripts defining structure and operation of the components of the web page, including a first script defining structure and operation of the first component and a second script defining structure and operation of the second component, establishing a DOM of the web page based at least on the received scripts, and rendering the web page based on the established DOM, wherein the declarative markup data and scripts cooperatively define the data-binding between the first component and the second component, wherein the first script is interpretable by the web browser application to cause the web browser application to dynamically publish data related to the first component, and wherein the data-binding includes for the second component a listen-to tag attribute that binds, via the shadow DOM, the second component with the dynamically published data related to the first component, wherein the second script is interpretable by the web browser application in accordance with the listen-to tag attribute to cause the second component to react to the published data related to the first component. a processing unit; data storage; and a web browser application stored in the data storage and executable by the processing unit to carry out operations comprising: receiving, in response to a request for a web page, (i) declarative markup data defining a hierarchical arrangement of components of the web page, including a first component and a second component, wherein the hierarchical arrangement comprises using a shadow document object model, DOM, to define a relationship between the first component and the second component, wherein the relationship comprises a data-binding between the first component and the second component, and (ii) a set of scripts defining structure and operation of the components of the web page, including a first script defining structure and operation of the first component and a second script defining structure and operation of the second component, establishing a DOM of the web page based at least on the received scripts, and rendering the web page based on the established DOM, wherein the declarative markup data and scripts cooperatively define the data-binding between the first component and the second component, wherein the first script is interpretable by the web browser application to cause the web browser application to dynamically publish data related to the first component, and wherein the data-binding includes for the second component a listen-to tag attribute that binds, via the shadow DOM, the second component with the dynamically published data related to the first component, wherein the second script is interpretable by the web browser application in accordance with the listen-to tag attribute to cause the second component to react to the published data related to the first component. receiving, in response to a request for a web page, (i) declarative markup data defining a hierarchical arrangement of components of the web page, including a first component and a second component, wherein the hierarchical arrangement comprises using a shadow document object model, DOM, to define a relationship between the first component and the second component, wherein the relationship comprises a data-binding between the first component and the second component, and (ii) a set of scripts defining structure and operation of the components of the web page, including a first script defining structure and operation of the first component and a second script defining structure and operation of the second component, establishing a DOM of the web page based at least on the received scripts, and rendering the web page based on the established DOM, wherein the declarative markup data and scripts cooperatively define the data-binding between the first component and the second component, wherein the first script is interpretable by the web browser application to cause the web browser application to dynamically publish data related to the first component, and wherein the data-binding includes for the second component a listen-to tag attribute that binds, via the shadow DOM, the second component with the dynamically published data related to the first component, wherein the second script is interpretable by the web browser application in accordance with the listen-to tag attribute to cause the second component to react to the published data related to the first component.