1

We have a listing page which the data are gathered by multiple providers. These providers have different response times (min 15 seconds to 1 minute sometimes).

Our default sorting is based on the price and rate of the product. We have a skeleton loading until the first provider sends data. the problem happens when different providers send data about single product which may cause an update to our sorting. This means you may see our list in 15 seconds, but at any given time, any product may change its location on the list based on sorting algorithm.

I would appreciate any ideas about handling the loading state of this situation.

  • See Kayak or other airline or hotel price aggregators for good examples – sintax Oct 2 '19 at 1:52
1

you can group list elements by price range. showing 5$ to 10$ in a container as an example with some delightful animation while showing a new element appearing by pushing the old one a side.

1

I would add somewhere an async counter that shows the amount of downloaded data and total amount of them that's left e.g.

Gathered data from 23 providers of 150 total

or

Querying for data:
23 / 150
(search results may live update once data is downloaded)

The text content might be different, but wanted to illustrate the main idea.

  • The problem with this solution is that we don't know the total count of products until the loading is completed. – Hasan Hemmati Sep 30 '19 at 16:09
  • 1
    @HasanHemmati but I'm not suggesting to show the total count of products there but total count of providers/3rd party APIs that are queued to get results :) – lukaszkups Sep 30 '19 at 17:10
  • @lukaszjups From business POV, we don't want users to know that we are gathering data from multiple providers, we are introducing ourselves as the provider! – Hasan Hemmati Oct 1 '19 at 8:06
  • Then maybe replace the description text with x% queried and just leave notification that search results / sorting is live-updating once new batch of data is retrieved? – lukaszkups Oct 1 '19 at 8:10

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.