The headline may be a bit confusing, so here's a web example (although this question is equally applicable to desktop applications):

  1. I open up the same eBay listing in 2 separate tabs of my web browser.
  2. In the 1st tab, I click "Add to watch list", and it adds it successfully.
  3. I now navigate to the 2nd tab, and without refreshing, I click "Add to watch list".

In this situation, eBay will never error and say "Item is already in watch list". Instead, it will act exactly like it did the 1st time I added the item to my watch list.

What it's really doing is abstracting this detail away from the user and pretending like it has just added to my watch list, when in reality it performed a no-op and just updated the state to indicate that it's in my watch list.

I'm of the school of thought that you should never disrupt the user's train of thought or workflow, so this is definitely the correct behaviour.

What are the UI guidelines for this? What are some of the situations where a user should be notified of a no-op?

  • I think you have overlooked one thing here. "and without refreshing,": When you now click to Add, the page is refreshed before the Add command is accepted for processing? That would be the expected behavior. There's also a second thing: on SE, the status of notifications and statistics is updated at regular intervals without page refresh -- this is the new UX behavior catching on.
    – Kris
    Commented Feb 8, 2012 at 7:52
  • Youtube, until the redesign, did not indicate whether you had already liked a video. I've rewatched videos and found Youtube was perfectly happy to let you re-like the video like nothing happened and found it very annoying. The like button is now pressed in on page load if you watch a video you've already liked.
    – Ben Brocka
    Commented Feb 8, 2012 at 14:17

4 Answers 4


It will depend on the situation! I'd be concerned about the user (particularly in a more complex or risky task than the one you describe) becoming confused over the state of the system, in which case an auto-update or similar may be an effective approach. In general I agree with not interrupting the users train of thought, but you also need to ensure that the user (and any other parties affected in a multi-user system) are not disadvantaged in any way - ambiguity can be a real problem.

  • Good answer. One example of “risky tasks” would be anything where money is involved, for example buying digital goods (either some digital service or add-on or a right to download something that you can only buy once for your account). When using some “one-click instant payment” system on a trusted site where a user doesn’t have to authorize every payment you could also use the same UI flow for users who already have bought it and the ones who do not, but that would probably raise concerns for the users whether the system billed them twice or not.
    – kaarel
    Commented Feb 8, 2012 at 8:12

It depends upon whether the operation is idempotent or not.

In the case of "adding to a watch list" the goal is to get it on the watch list. It either is on, or is not, but there is no real meaning to being on a watch list multiple times. Because it doesn't really matter if you add something multiple times, it is clear that the second operation need do nothing, and there is nothing to gain by warning about a superfluous action.

Another idempotent action is deleting a file. If you somehow arranged to delete a file once, and then somehow delete it again, there should be no error. Your goal was the result - that the file be erased - not the action of erasing it.

However, operations that are not idempotent might require a warning or error. For example withdrawing $20 from your account has a real effect on the state of things. A second withdrawal attempt is not the same withdrawal, but a new and unique one. If during the operation the UI found out that the account balance was NOT as it had been presented, if due to a race condition things had changed, then it probably should produce a warning. Detecting this might be difficult, but in principle you should produce an error.

  • Well, it depends on the operation. In a Unix shell, I enter the command rm secret-plan-to-rule-the-wordl.txt. I have made a typing error, so my Mac replies rm: secret-plan-to-rule-the-wordl.txt: No such file or directory. Replying nothing, as you suggest, would be misleading, it would make me think I have deleted the file whereas in fact the file still exists. Commented Feb 22, 2013 at 2:03
  • Good point. I think there is a distinction between a "failure" and a "message". I agree that as a user there are situations that I want to know that a change occurred, but that does not mean that the operation failed. However from usability it would be friendly to let them know that nothing happened. Imagine that you type rm folder/* when there are no files in the folder. No files were actually deleted. Is it a failure? Its easy to imagine that the user just wanted to make sure that the folder was empty, and so it is actually success. A "verbose" parameter might be needed.
    – AgilePro
    Commented Feb 23, 2013 at 1:31

I am a great believer ( theoretically at least ) in screens staying up to date, if there are changes behind the scene. I think the specific scenario in the OP may be impractical, but as a rule, if screens are showing critical and volatile data, they should keep it up to date. So, in the OP example, the secod screen should have updated to show that you had already added this, even without updating ( AJAX techniques are sufficiently advanced to allow this ). At the very least, it should have alerted you to something having changed.

On the particular issue of should a no-op be reported, iften yes, because it suggests that the user has tried to do something that is not necessary, and so is not at this point fully appraised of the latest situation. I am not talking system modal dialog boxes, but I am talking some message that indicates that the requested operation was not needed alerts the user to the possibility that they are losing it.


The way to deal with this is to have the current state (eg. Items in cart) up to date and adjacent to the button in question which should clearly show what the result of the action will be (unlike here). This allows the user to know both what the state is and what it will be when they click. This should also update with visual feedback when the user clicks.

This method, which I've seen used in web interfaces to mission critical security software, leaves very little room for misinterpretation.

Also, easy ways of updating and sharing data between tabs and browsers which are becoming more common. (eg. http://html5demos.com/storage-events)

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

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