Traditionally, a rule of thumb for designing a responsive UI is that the UI should never lock up. However, with some record editing patterns, allowing the user to edit what's on screen is pointless when the record is saving.
Example:
User edits record
User hits save
Concurrent
- Server modifies record on server side (Network is very slow so save takes 10 seconds)
- User edits record on screen (after hitting save)
Record returns from server
- Record on screen is overwritten with record from server
In the scenario above, the editing of the record is redundant because no matter what the user does, the record on screen will be overwritten by the record coming back from the server. So, it only makes sense to lock up the UI while the server is processing the save action.
On top of this, we need to disable navigation at the menu level because the user cannot be allowed to navigate away from the screen until they are given a success or error notification. If they have navigated away from the record, the error message will get lost, and they will have lost their changes.
My question is what is best practice for dealing with this? Should we make the entire app disabled? Should we plaster a busy indicator over the top of the entire screen with an animated progress indicator? Any other tips to make this experience less intrusive for the user?