Description
What feature do you want to improve?
When webapp detects a new version is available it downloads the db docs and refreshes the service worker cache and then prompts the user to reload. This happens in the background so the prompt can pop up at inconvenient times like during a household visit halfway through filling in a form. We know there's a long tail of users not upgrading so we added a reminder that prompts every 2 hours. This is annoying for users, and trains them to ignore the upgrade dialog.
Describe the improvement you'd like
Instead of prompting the user at an random...
- Update the UI subtly that an upgrade is available (eg: a notification dot, or a menu item in the hamburger near the sync status). If someone is waiting on an upgrade this lets them know it's ready.
- The next time the user navigates to a new page (submits a form, selects a new tab, etc), instead of doing the usual single page navigation, do a full page load which brings in the new code. This ensures the reload happens at a convenient time and users aren't distracted. Before doing this ensure that the page reload time is acceptable so the users don't unexpectedly get a long running spinner!
The result should be a better experience for CHWs who won't get interrupted with prompts.
Describe alternatives you've considered
Instead of automatically reloading we could just move the prompt to after the page navigation but most people in the world including our users have been trained to dismiss popups like this, so smoothly applying the upgrade without bothering the user is preferable.
Additional context