Loading indicator with InstantSearch.js
You can display a loading indicator to inform users on a slow connection that their search is still in progress.
Use InstantSearch’s status
indicator to decide when to show a loading indicator. The status
can be one of the following:
loading
: The search is in progress.stalled
: The search is in progress, but the response is taking longer than expected.error
: The search failed.idle
: The search succeeded.
Best practice is to display a loading indicator only when status
is stalled
, not during a standard (fast) search. Tweak the timing of the stalled
status by setting the stalledSearchDelay
option.
You can then use this condition to display a loading indicator:
1
2
3
4
5
6
7
8
search.on('render', () => {
const container = document.querySelector('#loading-indicator');
if (search.status === 'stalled') {
container.innerText = 'Loading search results';
} else {
container.innerText = '';
}
})
If you want the loading indicator to display as soon as the search starts, use the loading
status in combination with stalled
:
1
2
3
4
5
6
7
8
search.on('render', () => {
const container = document.querySelector('#loading-indicator');
if (search.status === 'loading' || search.status === 'stalled') {
container.innerText = 'Loading search results';
} else {
container.innerText = '';
}
})