Objects are composed into a DOM hierarchy which only gets re-rendered when a callback returns RefreshDom. The resulting DOM tree can be styled with CSS. from azul import * class DataModel: def __init__(self, counter): self.counter = counter # model -> view def my_layout_func(data, info): label = Dom.text("{}".format(data.counter)) label.set_inline_style("font-size: 50px") button = Button("Update c