> ## Documentation Index
> Fetch the complete documentation index at: https://algolia.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Loading indicator with InstantSearch.js

> Learn how to display a 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`](/doc/api-reference/widgets/instantsearch/js) option.

You can then use this condition to display a loading indicator:

```js JavaScript theme={"system"}
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`:

```js JavaScript theme={"system"}
search.on('render', () => {
  const container = document.querySelector('#loading-indicator');
  if (search.status === 'loading' || search.status === 'stalled') {
    container.innerText = 'Loading search results';
  } else {
    container.innerText = '';
  }
})
```
