Take the 2-minute tour ×
User Experience Stack Exchange is a question and answer site for user experience researchers and experts. It's 100% free, no registration required.

As mentioned in this UX question, people try to click around when an application is non-responsive (it hangs).

Is there a practical way for an app to indicate it is still "alive" so that it doesn't get into the state where people will want to press ESC trying to get out of your app or website or click incessantly to get a response? I mean besides the usual "rotating icon" or stuff like that.

I am looking for something more responsive despite the fact that the app is struggling to process the user event request.

share|improve this question
Talk to your developers to put time-consuming tasks into separate threads. If the application's latency is cloud-high, no UI in the world can fix that. –  Deer Hunter May 29 '13 at 5:23
I was merely testing out this UX site, but I guess the solution for this kind of problems is to chop the app into small parts and make sure the the UI is non-blocking, even if one part got stuck, for reason like, server is not responding, part or parts of the app is still working. –  xybrek May 29 '13 at 11:45
add comment

4 Answers

I mean besides the usual "rotating icon" or stuff like that.

Don't rule out the 'usual stuff'. They tend to be a fairly standard way to go about things. Users are familiar with the concept already and that can be a good thing.

Granted, even they can be an indication of something is 'stuck' (see the spinning beach ball of death on OSX, for example) so, ideally, you'd show a bit more than just the spinner by itself.

If you can, a progress bar is ideal, but it requires some technical prowess to actually determine real progress. That's rarely doable--at least in a web context.

Some other ideas that I've seen that may be of help:

  • Show trivia and/or application tips while you wait. This is quite common on iOS apps that have to do heavy processing in the background (such as a photo editing site).
  • Use a more detailed/elaborate animation. Instead of just a spinner, consider some animated illustrations that fit into the context of your app. For instance, if your application is for managing a farm, perhaps when a prolonged task is being performed in the background you show an animated tractor plowing a field.
  • See if you can prevent locking the app during this task. Does the user have to wait for this task or could they perhaps be performing while this task is waiting? If the latter, perhaps a small pop-up or panel is shown showing the spinner with a message "process being performed in the background, feel free to continue using the application". Axure uses this method when it's generating a prototype for Axshare, for example.
share|improve this answer
Stick with an animation that indicates activity and reinforces your brand. Progress bars are usually misleading and, thus, frustrating. If you can also indicate in text the tasks that are underway as they process you'll earn bonus points. –  plainclothes May 30 '13 at 17:11
@plainclothes yes. Perhaps I wasn't as emphatic as I Should have been. Progress bars should only be used if they show actual progress. If not, they are a detriment rather than a benefit. –  DA01 May 30 '13 at 17:51
add comment

I mean besides the usual "rotating icon".

For tasks that consume a little amount of time, the rotating icon is the best, because users already know about it.

You can chose to show more details if the task is taking too long like "This is taking longer than expected"

Gmail does a good job of it, by showing a notification.( example - http://i.imgur.com/9xKbtTn.png)

share|improve this answer
add comment

Well, basically the problem is that even when the app is showing the user that it's doing something (e.g. spinner rolling) the user doesn't trust the app to know that. For good reason, too.

So you need to rebuild that trust. You need to convince the user that something really is happening. Most efficient way to do it would be to show what the app is doing, and make sure that whatever it is doing changes, and does not loop. When it loops, show when the loop is going to end.

Also, if something parts have already been done, tell that to the user, so they have an incentive to keep waiting, since a complete retry of the action could would mean they lose progress so far.

Sending request to remote server...

After a while

Attempt 2/5 of sending request to server, now waiting for response, will retry in 5 [=> 4,3,2,1] sec.

Or build to show the progress being done, build it up:

Attempt 3/4 of the entire process :: Waiting for server to reply...

Attempt 3/4 of the entire process :: Got a reply after 13s, and processed it :: Requesting the server to activate changes...

Attempt 3/4 of the entire process :: Got a reply after 13s, and processed it :: Attempt 2/5 of requesting a change from server, no reply, will retry in 6 sec

Attempt 3/4 of the entire process :: Got a reply after 13s, and processed it :: Server accepted changes after 23s :: Sending information to connections...

... and so on.

Though really, if you need the user to be aware of that sort of process happening, so that they don't interrupt it, it really is a sign there might be something else wrong with how the application does things.

share|improve this answer
add comment

The content/purpose of the app can help determine the best course of action if you're looking for a custom loading action.

For most apps, the rotating gif works because it is standard and most users have an understanding of its meaning. Placement of branding/logo is also common during loading.

Also, giving the user a detailed breakdown of the events that are occurring can help. I.e. "Processing credit card..." or "Verifying login information...".

share|improve this answer
add comment

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.