One of the very basic and common interaction design patterns in messaging apps (e.g. WhatsApp, LINE, Facebook Messenger) is to provide micro-interactions associated with the message composition and messages themselves.

For example, users are given a display that indicates if the person is actively writing a text message or recording an audio message.

Another example is that users are shown status changes to the messages as they change from not received --> received/unread --> read. I believe that if you are currently on the chat thread while someone is sending a message it automatically becomes a read message, regardless of whether you have actually read the message or not (probably different with audio messages or voice notes since you have to at least play some portion of it).

enter image description here

However, I am curious as to how the software or app distinguishes between someone who happens to be on the same message screen but hasn't read the message with someone who has gone through the message and read it. On a desktop application where there are more things that can be monitored and tracked this might be an easier task. In mobile apps this might be a bit more tricky.

I have not seen any designs or configurations for messaging apps that allow a more fine tune determination of the status of messages or to modify them (at least I haven't used them before), and I think that it can sometimes cause confusion between users because of the assumption that there is a mix of synchronous and asynchronous communication that isn't always clear.

Is there a best practice or standard, or even just something that someone has seen that works well and is unambiguous in any of the major apps out there?

  • I am curious about the confusion between users. Can you elaborate? Maybe in one of the examples?
    – Mahm00d
    Jan 27, 2022 at 8:45
  • @Mahm00d I have used the WhatsApp message status as an example, I hope it is a little bit clearer.
    – Michael Lai
    Jan 28, 2022 at 3:09

1 Answer 1


I can think of these:

  • Track "scrolls" and "taps" to see if the user is actually seeing the chat & is not away from the screen.
  • Set a timeout so that when the receiver is in the chat, but hasn't interacted with it in like 5 minutes, set their status to something like "away".

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.