Skip to main content
The latest major version of the algoliasearch package is version 5. This page helps you upgrade from version 4 and explains the breaking changes you need to address. Algolia generates the version 5 clients from OpenAPI specifications, which provides consistent behavior across all languages and up-to-date API coverage. The main architectural change is the removal of the initIndex pattern: all methods are now on the client instance directly, with indexName as a parameter. For the full list of changes, see the JavaScript changelog.

Update your dependencies

Update the algoliasearch package to version 5:
Command line
If you’re using a search-only build (lite client), the package name stays the same. Only the import path changes (see Update imports).

Update imports

The import style changed from a default export to a named export.
JavaScript
If you’re using the lite client (search only), the import also changed:
JavaScript
Version 5 also includes dedicated packages for each API. If you only need to access methods from a specific API, you can install and import them separately:
JavaScript

Update client initialization

Client creation is unchanged. The constructor still accepts your application ID and API key:
JavaScript
The other major change concerns what follows initialization: initIndex no longer exists.

Remove initIndex

This is the most significant change when upgrading. Version 4 relied on an index object with methods called on it. In version 5, all methods belong to the client instance, with indexName as a parameter.
JavaScript
If you have many files to update, search your codebase for initIndex or .initIndex( to find every place that needs changing.

Update search calls

Search a single index

The index.search() method is now client.searchSingleIndex(). Pass the index name and search parameters as an object:
JavaScript

Search multiple indices

The client.multipleQueries() method is now client.search(). Each request in the array requires an indexName:
JavaScript

Search for facet values

The index.searchForFacetValues() method becomes client.searchForFacetValues() with an indexName parameter:
JavaScript

Update indexing operations

In version 5, indexing methods are on the client instead of the index object, with indexName as a parameter.

Add or replace records

JavaScript

Partially update records

JavaScript

Delete records

JavaScript

Update settings, synonyms, and rules

Get and set settings

JavaScript

Save synonyms and rules

JavaScript
In version 4, index.replaceAllRules() and index.replaceAllSynonyms() replaced all rules or synonyms. In version 5, use client.saveRules() or client.saveSynonyms() with the clearExistingRules or clearExistingSynonyms parameter set to true.

Update index management

The copyIndex, moveIndex, copyRules, copySynonyms, and copySettings methods are all replaced by a single operationIndex method.

Copy an index

JavaScript

Move (rename) an index

JavaScript

Copy only rules or settings

In version 5, use the scope parameter to limit the operation to specific data:
JavaScript

Check if an index exists

In version 4, you could check if an index existed using the exists method on the index object. In version 5, use the indexExists helper method on the client:
JavaScript

Update task handling

Version 4 supported chaining .wait() on operations. Version 5 replaces this pattern with dedicated wait helpers.
JavaScript
Version 5 includes three wait helpers:

Helper method changes

The following sections document breaking changes in helper method signatures and behavior between version 4 and version 5.

replaceAllObjects

The safe option has been removed. In version 4, safe: true caused the helper to wait after each step. In version 5, the helper always waits—equivalent to the previous safe: true behavior. The scopes parameter is optional. When omitted, it defaults to ["settings", "rules", "synonyms"].
JavaScript

saveObjects

The autoGenerateObjectIDIfNotExist option has been removed. In version 5, you must provide an objectID on every object, or use the chunkedBatch helper with the action parameter set to addObject if you want the API to generate object IDs. Two new optional parameters are available:
  • waitForTasks (waits for all indexing tasks to complete before returning, default false)
  • batchSize (controls how many objects are sent per API call, default 1,000)
JavaScript

deleteObjects

Two new optional parameters are available:
  • waitForTasks (waits for all indexing tasks to complete before returning, default false)
  • batchSize (controls how many objects are sent per API call, default 1,000)
JavaScript

partialUpdateObjects

Two new optional parameters are available: waitForTasks and batchSize.
JavaScript

browseObjects, browseRules, browseSynonyms

These helpers now accept an aggregator callback instead of returning an iterator. The helper calls aggregator with each page of results as it paginates. An optional validate callback can be used to stop early.
JavaScript

generateSecuredApiKey

The method signature has changed from positional parameters to a single object parameter.
JavaScript

getSecuredApiKeyRemainingValidity

The method signature changed from a positional string argument to an object parameter.
JavaScript

waitForTask

The helper was renamed from waitTask to waitForTask and now takes indexName as an explicit parameter.
JavaScript

waitForAppTask

The helper was renamed from waitAppTask to waitForAppTask for consistency with waitForTask and waitForApiKey.
JavaScript

waitForApiKey

In version 4, waiting for API key operations was done by calling .wait() on the WaitablePromise returned by addApiKey, updateApiKey, deleteApiKey, or restoreApiKey. Version 5 provides a standalone waitForApiKey helper.
JavaScript

indexExists

The helper was renamed from exists() on the index object to indexExists() on the client.
JavaScript

chunkedBatch

chunkedBatch is now a public helper. In version 4, chunking was an internal implementation detail of saveObjects. The action parameter defaults to "addObject".
JavaScript

accountCopyIndex

In version 4, accountCopyIndex was part of the separate @algolia/client-account package and accepted two initialized SearchIndex objects. In version 5, it’s a built-in helper on the algoliasearch client and accepts a flat options object with string identifiers.
JavaScript

saveObjectsWithTransformation

  • In version 4, this method was available on indices through the ingestion mixin.
  • In version 5, it’s a top-level helper on the algoliasearch client. It routes records with the Push to Algolia connector and requires transformationOptions with a region to be set at client initialization. The transformation option is deprecated. Use transformationOptions instead.
JavaScript

replaceAllObjectsWithTransformation

In version 5 and later: atomically replaces all records with the Push to Algolia connector. It copies settings, rules, and synonyms to a temporary index, pushes records to the temporary index, and moves the temporary index back. Requires transformationOptions with a region at client initialization.
JavaScript

partialUpdateObjectsWithTransformation

In version 5 and later: routes partial updates with the Push to Algolia connector. The createIfNotExists parameter defaults to false.
JavaScript

Method changes reference

The following tables list all method names that changed between version 4 and version 5.

Search API client

Recommend API client

Last modified on June 10, 2026