Vaadin keeps the application state on the server, but the presentation (HTML) is 100% generated on the client side. Changes in server-side state are serialized and sent to client in compact User Interface Definition Language (UIDL). This is obviously a more secure approach to writing web apps, since the state is safe on the server. So no pre-rendering of UI on the server..