3

I have a list of members on a web app and I want to improve usability and performances when users are browsing it. This list can be very long (500+ members). To improve performances, we are implementing pagination with infinite scrolling+lazy loading. We lazy-load the whole list and start filling rows with names and avatars 25 rows at a time.

The problem: the database is designed in a way that I cannot directly load the list in alphabetical order. Sorting would only be possible after the full list is loaded.

This means that while the list is lazyloading users are able to browse it, while they have to wait several seconds before sorting.

I feel that this gap in the user experience could be confusing and unexpected for the users. How would you tackle this problem?

Thanks! :)

  • Lazy loading normally means loading 'on-demand' - in the case of infinite scroll, you load the next batch when the user approaches the bottom of the current list. Did you mean background loading? That is, loading in batches in the background regardless of user actions? – Izhaki Sep 1 '16 at 10:51
  • If you want to improve usability you will need to do a lot more than just implement lazy loading. Most users do not have a goal that says "let me scroll through a very long list of members until I find the one I am interested in." – SteveD Sep 1 '16 at 14:00
  • Actually yes, it would be background loading, this is correct – Diana Sep 2 '16 at 10:50
1

Am I right that what you ask is:

What is the least unpleasant experience for my users that I can achieve with those technical constraints?

It sounds like that without a refactor on the server you can not guarantee a good UX. Consider it.

Is it possible to load and sort the whole list on the server in an acceptable time and keep it there in cache? If the client requests the next page it can be taken from the sorted list in cache.

Otherwise just provide the list unordered and communicate to the user that it is not sorted. Sorting on the client side will be confusing as the sorting changes when more data comes in.

EDIT: You said to consider loading the complete list to the client.

Do users wait? Or can they easily lose patience and leave?

Only if the first is true, loading the complete list is an option (though far from ideal). Without knowing what the list is used for I guess that sorting is not relevant from this point. Searching and/or filtering the list would make more sense. And since the list is already loaded it can be very responsive (hopefully making up for the bad start/long wait).

About the loading feedback. As the server side is not very cooperative I guess that it is not possible to have a progress bar? If it's possible, have one! Otherwise use a commonly known loading animation so users know something is busy. Also show the expected average time it's going to take (measured or estimated) and the maximum time it should take (optionally with a timer). This way people know that they have to be patient and not think that something broke.

  • If you are able to buffer/cache the whole list on the server, you should then be able to provide sorting options in the client by performing server-side sorting from this buffer/cache without the limitations imposed by the database. – TripeHound Sep 1 '16 at 13:24
  • Exactly, I would like to achieve the best experience considering the constraints of not being able to sort on the server at all. I can only do that client-side (ideally, after the list is fully loaded). At the moment, the only solution I can think of is providing feedback about the list being loaded, unsorted and let the user do the sorting from there. But I'm not completely happy with it – Diana Sep 2 '16 at 10:48
  • @Diana, thanks for the comment. I edited my answer accordingly. – jazZRo Sep 2 '16 at 12:27
1

Users do not like to wait, it breaks their flow of thought and creates frustration. If the wait is unexpected, the frustrution is much bigger.

Sorting in most site is very fast and the unexpeted delay will cause anxiety to users.

Another thing users hate is uncertainty, they want to know what is happening and how long it will take. Using a progress bar, will at least mediate the frustration users experience while waiting for the sorting. The progress bar should display actual progress, not just some random graphic animation.

Reference: The Psychology of Waiting

1

i don't know what data fields you are visually presenting, so my answer might not be helpful but have you considered adding a filter. Sorting is great for what's already loaded but a filter can provide some rules on the loading.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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