I am facing a problem with a desktop app that, upon startup, should display a large list of items (Patients in a medical record system).

Typical uses of that list would be as usual:

  • Scroll up and down
  • Sort by column
  • Filter by typing

Since the items in the list are created from the content of files in a folder, it takes a variable amount of time for the list to populate.

Besides, while the list is populating, and disregarding the order in which is sorted, is quite common that you try to select an item by clicking, just to be surprised by the sudden appearance of a newly-loaded item.

So I believe there are some possibilities, all of them full of drawbacks:

  1. I can display a "loading" progress view instead of the list, or even overlay the loading list with some progress indicator. This has a drawback that the user cannot do anything really useful with the app until the item list is fully loaded;
  2. I can just deliver the list to the user right away, while it is being populated. This allow the user to immediately manipulate it, but has what I feel like a significant drawback, since a search or filtering might be made and the expected result not returned, giving the impression that the item does not exist, while instead it just wasn't loaded yet.

Currently I cannot figure out any other interesting alternative, and I wonder if there is some sort of design pattern or best/current/accepted practice to solve this problem.

  • What time frames are we talking about here? A few seconds? Many seconds? Minutes? If it takes a wihle, it might be better if you could have the data returned in sorted order first (presumably your users would be most interested in recent records?) so you can have a hybrid approach: populate a screenful or two of data eagerly, allow interaction, and then populate the rest later.
    – jamesdlin
    Commented Feb 22, 2019 at 5:51

2 Answers 2


Since this only occurs once at startup and users are accustomed to programs loading, Option 1 makes more sense. Could you have this information load with the program and extend the splash screen loading time so that the program loads with the information ready?

To answer your title question, the user should not be allowed to manipulate a list before it is fully populated as they can become annoyed and distracted by new items that appear (visual distraction).


How frustrating would it be to manipulate something that is still changing? I think the answer is "very."

There is something called "moment of interactivity" and it can be progressive on a page. If the navigation is ready, show that, if another element is ready, show that too. But if a component is not complete, don't show it until it is. Otherwise, you are opening yourself up to a lot of bugs and user frustration.

Most users would rather wait to use something functional than have something misbehave.

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.