Instead of scoping your components with odd scopes, you should back your view data bean, with suitable scope, and populate your view data from that bean in afterNavigation of the route. Say, if your bean is VaadinSessionScoped, it will cache the data while you navigate, as VaadinSessionScope is preserved over navigation. Note, UIScope is not preserved on Refresh as rereshing the page will create new UI and @PreserveOnRefresh just copies the content from old UI.