I have a screen in a mobile app consisting of the title of a data object at the top, with a short list of actions underneath. (The layout of these on the screen is not set in stone, so if your answer assumes or suggests a particular layout, that's fine.) The workflow is that the user enters the screen and picks one of the actions to perform. It's a little like an "Open with..." dialog, but with only a handful of actions.
That sounds simple, but there's a complication. The app asynchronously queries a server for further/updated information about the data object in question. There are three possible outcomes:-
- The user selects an action before the update completes. No problem.
- With the additional information, new actions become available. This is also easy to deal with: the new actions can be added to the bottom of the list without disrupting the old layout.
- The server tells the app of a better data object to replace the original one. (The original might have been a kind of shortcut.) This is the hard case.
In the third case, I have to replace the old object and list of actions with the new object and (possibly different) actions.
One way to do this would be to simply change the title and list without warning. We all know that replacing something the user is about to click on with something that performs a completely different action is an awful idea, so I reject this plan.
Another way would be to simply show an extra button. At the start, this would show a loading indicator, but when we have the new information, it would become clickable, allowing the user to change to the new object and list of actions. (This is similar to what's suggested for the related question Update list when a user is viewing the list without annoying them.) Although this is much less annoying, the user will almost always want to use the new list, so I don't want to add that extra click. In addition, the list is short, so concerns about losing the user's place in the list &c. don't apply here.
Is there a better way? Is there some kind of transition I can add, so that I can move to the new list without prompting the user, but avoid him clicking on something he didn't intend?