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

# IndexingState

> Where Rollup's indexing is.

```swift theme={null}
public enum IndexingState: Codable, Sendable, Equatable
```

Read it from `Rollup.shared.indexing.state`, or follow it with `Rollup.shared.indexing.states`.

## Cases

<ResponseField name="notConfigured" type="case">
  `configure` has not been called.
</ResponseField>

<ResponseField name="needsPhotoAccess" type="case">
  The person has not granted Photos access, or revoked it.
</ResponseField>

<ResponseField name="downloadingAssets(fraction:)" type="case">
  The first-run models and geography are downloading. `fraction` runs from 0 to 1.
</ResponseField>

<ResponseField name="indexing(indexed:total:searchable:)" type="case">
  Indexing is running: `indexed` of `total` photos planned for this run. `searchable` is `true` once the index holds finished slices, so search, query and profile already work on them.
</ResponseField>

<ResponseField name="ready(photos:updatedAt:)" type="case">
  The index holds `photos` photos and was last updated at `updatedAt`.
</ResponseField>

<ResponseField name="failed(_:)" type="case">
  The last run failed with a [`RollupError`](/reference/rollup-error). With `accessRevoked`, your app's access stopped and the index is locked. With `appPendingApproval`, your app is waiting for Rollup's approval.
</ResponseField>

## Properties

<ResponseField name="isSearchable" type="Bool">
  `true` when search, query and profile have an index to read: always for `ready`, and for `indexing` when `searchable` is `true`.
</ResponseField>

## JSON

Each case encodes as a tagged object:

```json theme={null}
{ "type": "indexing", "indexed": 10, "total": 40, "searchable": true }
```

```json theme={null}
{ "type": "ready", "photos": 812, "updatedAt": "2026-10-13T09:41:00Z" }
```

```json theme={null}
{ "type": "failed", "error": { "code": "accessRevoked", "message": "This app's Rollup key was revoked or disabled." } }
```


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.