1

The startpoint: A page of a website is opened somehow in multiple instances at the same time (e.g. in 2 browser tabs, 2 browsers, or 2 devices). After that a persistent change happens on 1 of these instances.

The problem: What to do to the others?

Are there any kind of data that

  • should be, or
  • should not be

refreshed immediately when the "sleeping" thread gets focus?

5
  • 3
    This is going to depend a lot on what is on the page and how important it is to be up to date. A vast majority of sites will be fine with waiting until there is a hard reload to pull changes. Some sites, like StackExchange, will pop up notifications that something has changed. And other sites such as multiplayer games or stock tickers update immediately. Context is going to be key.
    – DasBeasto
    Commented Feb 2, 2016 at 17:37
  • Thank You! But, can You define the importance of a data? I see what You mean, but what I really don't know that should I have to decide by myself whether a data is important, or are there best practices in the ux-industry for this? For example: if I look at this very page the "viewed x times" is not sync-ed with the page where the questions are listed. So it is not an important data to be consistent in every moment, and user can live with it. But what says the big book of best practices: What is important and what is not?
    – bws
    Commented Feb 4, 2016 at 15:36
  • It depends on how important you think that feature being up to date is. In your "viewed x times" example, sure you can set it up to be a real-time up to date counter, but that will require more work to implement, more bandwidth to constantly send that data back and forth, more moving parts on the page for the user to look at, etc. But will a user really care that much if the counter is 100% accurate? If in the vision of your site you see that feature being more important than those issues then go for it, if not consider only loading it every now and then, or on refresh.
    – DasBeasto
    Commented Feb 4, 2016 at 15:43
  • Thanks, You helped a lot! As You didn't write an "official" answer and mikryz also cleared a lot, I'd accept his answer now if You don't mind.
    – bws
    Commented Feb 4, 2016 at 16:00
  • Yes mikryz's answer is very good which is why I didn't bother answering! Glad to help
    – DasBeasto
    Commented Feb 4, 2016 at 16:01

1 Answer 1

0

The biggest enemy of usability is inconsistency. Inconsistent UI solutions confuse people, force them to make too much brainwork. Inconsistent data kills confidence in information provided by application. That said, other instances should check if data they present have been updated and either refresh the view in the background or ask the user to do that. The first approach is more appropriate for single page web applications - a mainstream trend now. The second approach is more suitable for older style of updating a page on postback.

However, if information presented on those instances was not affected by the update, don't refresh it.

Clarification:

We should clearly differentiate updates in application state from updates in data.

  • Application state updates are caused by direct user actions. User opens new page/screen from menu, closes application, activate a feature etc.
  • Data updates are changes in the underlying data model. They can be caused by user actions or by other actors, like sensors, API calls etc. It is important that the changes are made in the data model, e.g. they are committed.

As a user I don't expect application state synchronization between different instances of the application, but I do expect my data model to be consistent across all instances.

Examples

  1. User types a few characters in an input field. - No synchronization, data model is not affected until user commits the update.
  2. User types few characters in an input field and hits "Save". - Synchronize, data model is updated.
  3. User looks at the list of past orders, then clicks "Add New". New order screens opens up. - No synchronization, data model is not affected until the order is submitted.
  4. User submits the order. Synchronize, data model is updated, all lists displaying past orders should be updated. However, if the instance where the order was submitted still displays order confirmation screen, do not synchronize that - it is an application state update.
4
  • Thank You for this answer, I get what You mean. But I think inconsistency is not that well defined as it seems. As I can operate on let's say 2 different browser tabs, I can be 2 instances of myself. If I want perfect consistency than e.g when I click a link on tab1, than when tab2 gets focus it should show the same jump destination as the first one, as it has to follow the state of tab1. Of course these days no one wants this behaviour, though it would be the real consistent one. So which operations can be used w/o breaking the consistency (e.g. use a link) and which will break it instantly?
    – bws
    Commented Feb 2, 2016 at 22:21
  • The consistency is broken when you display the same subset of data belonging to different slices of time, different versions. In your example, you clicked the link and the data in tab1 have changed. If you display completely different set of data, then there is no synchronization, otherwise it's needed. For instance, if you displayed ABCD in tab1 & 2 and then, after the click, tab1 shows EFGH, then there is no sync. If tab1 displays CDEF, and C or D is updated, I expect them to update in tab 2.
    – mikryz
    Commented Feb 2, 2016 at 23:33
  • Thanks again! (I know this interface is not for conversation but q&a-s, but my question remained, though it's colser.) So e.g. if You open the same google-doc on 2 different devices, and You hit a letter on 1 of them, You want this letter displayed on both devices immediately. But if You display your email-inbox on 2 devices and open an incoming letter on 1 of them, You don't want the other device to do the same. Why? What is the difference between this two operations? This was my original question: how to decide about syncing, what to and what not to sync?
    – bws
    Commented Feb 3, 2016 at 12:43
  • @Bws Clarified my answers. Hope it helps
    – mikryz
    Commented Feb 3, 2016 at 21:12

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.