-
Notifications
You must be signed in to change notification settings - Fork 8.3k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Readme - Seamless UI Upgrade #158946
Comments
Pinging @elastic/appex-sharedux (Team:SharedUX) |
@vadimkibana - I recommend a conversation with Core on how to implement the notification mechanism given they've already put some thought into this. Beyond that, the implementation should be kept minimal for MVP. I would stay away from things like upgrading while saved state is being edited, maybe even the "hidden" refresh on navigation shouldn't be in the first iteration. Server to Client notification mechanism with banner notification to user might be all we need for iteration 1. @sixstringcode - thoughts? |
I wonder if that is really necessary. Let's take the following scenario:
We will have to put a limit to how many upgrades we allow (or maybe better how much time "off" from the latest server version. e.g. "48h" that could represent 10 upgrades) before we really can't do a seamless upgrade of the form. But I think that in practice we should always be able to perform multiple transforms and leave the new form in a good state for the user. |
The conversation around this topic has lead in a different direction and can be found here. No UX component or user interaction work is planned until the UX behaviors surrounding seamless upgrades are quantified post MVP. |
Jira Epic & Requirements
User Story:
To complete the “zero down time” experience for the end user, the UI should be upgraded seamlessly. The user will experience a transition to the new version of the client assets without losing unsaved state changes. The users experience will avoid an indeterminate state in the event that the user does not refresh their browser across two or more upgrades. A user who has not refreshed their browser that navigates in a way that calls for the loading of as-needed assets will not experience an indeterminate state.
Vadim's Initial Assessment:
There is a lot of work being invested into zero-downtime server upgrades. For our end users to make the whole upgrade process be transparent the UI should also upgrade seamlessly.
Essentially it comes to refreshing the browser page after the server has upgraded, so that the browser can load the new assets after refresh and show the new UI to the user.
In my understanding, the browser refresh must happen before the next server upgrade, for example, if we deploy to Serverless every day, the browser has to be refreshed within 24h after the last upgrade.
So, the question is how do we refresh the browser page? I am thinking we could try to do it seamlessly, so the user would not even notice, and in some cases make it explicit. Here is the idea:
We could refresh the browser automatically after the server has upgraded. The server would notify the UI and the UI would refresh at some convenient time. Now what is a convenient time?
Firstly, there should be no user unsaved state, so we will need to detect that.
Secontly, as Sebastien suggested, a nice timing would be to refresh when the user navigates. For example, the user clicks on some like and during that navigation we refresh the whole page.
There would be cases where we could not refresh the page automatically, because either there is unsaved work and/or the user never navigated. In that case we still need to refresh the page until the next deployment, otherwise it will have undefined behaviour. So here, we could:
Show a banner at the top of the page with a "Refresh" button, saying something like "Elastic was upgraded, please click refresh".
If the user still has not refreshed after some period, we will have to do a hard refresh, before the next deployment.
Those are just some of the ideas, still worth brainstorming in the team, maybe we can come up with something better.
The text was updated successfully, but these errors were encountered: