Library / SDK
algolia/instantsearch avatar
algolia/instantsearch

InstantSearch: seven packages for putting Algolia's search API into a UI

⚡️ Libraries for building performant and instant search and and discovery experiences with Algolia. Compatible with JavaScript, TypeScript, React and Vue.

4,060 stars554 forksTypeScriptMIT

At a glance

What is it?
A TypeScript monorepo holding the vanilla, React and Vue front ends for Algolia search, plus the state helper underneath them and the tooling to scaffold a new app.
Who is it for?
InstantSearch earns its place when you have already chosen Algolia as the search backend, because the alternative is reimplementing the state plumbing that `algoliasearch-helper` already encodes: refinement state, pagination, faceting, caching and URL routing. What the repository does not offer is a way out of that dependency, since every package here is a client for Algolia's API rather than a search engine.
Can I use it commercially?
Yes. MIT is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
Is it still maintained?
Yes. The repository last received commits 13 days ago.
What is it written in?
Mainly TypeScript, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on September 23, 2026, and from our analysis. They are not legal advice.

Editorial analysis

Seven published packages in one repository

The `packages/` directory holds the whole product line, and the README's table is the fastest way to understand the design. Every entry is separately versioned on npm, which is why the repository's release history looks like several projects sharing a commit graph.

The pieces are `instantsearch.js`, the framework-free entry point; `react-instantsearch`, described as the bundled React library; `react-instantsearch-core`, described as a runtime-independent React version; `vue-instantsearch`; `algoliasearch-helper`, a helper for advanced search features; `create-instantsearch-app`, a command-line utility for bootstrapping a project; and `instantsearch.css`, the default CSS themes. The README points out that InstantSearch is one name in a family, with separate Android and iOS repositories alongside the web packages.

That split into a bundled and a runtime-independent React package is the one worth pausing on. It reads as an acknowledgement that React InstantSearch pulls in React-specific infrastructure that a server-side or embedded use case may not want, and the repository has kept both.

The root `package.json` is named `instantsearch-web` at version 0.0.0 and marked private, with Lerna managing the workspaces across `examples/*/*`, `packages/*`, `tests/*`, `scripts/*` and `specs`. The presence of a `specs/` workspace alongside `tests/` suggests shared test specifications are factored out from the per-package suites.

Search state lives in algoliasearch-helper

The most substantive package in the repository is the one with the least glamorous name. `algoliasearch-helper` is described as a helper for implementing advanced search features with Algolia, and it sits underneath the UI layer rather than beside it.

The reason this matters is that instant search is not just rendering results. A search box with a facet list and pagination is a state machine: typing narrows the query, clicking a facet changes the result set without clearing the query, going to page three must not reset the selected refinements, and the back button has to restore the previous combination. Encoding that correctly, and keeping the widgets in sync with it, is the repetitive part of building a search UI.

Because the helper holds that state and talks to Algolia's API, the widgets in `instantsearch.js`, `react-instantsearch` and `vue-instantsearch` are mostly about presenting it. That is the reason the libraries have a widget model at all, and the repository topics list `widgets` accordingly.

The trade-off follows from the architecture. The helper is coupled to Algolia's request and response shape, so the convenient part and the locked-in part are the same part. A team that later wants to move off Algolia, or to run a hybrid setup where most queries hit a local engine, is doing that against the abstraction this library provides.

Bootstrapping a new app with create-instantsearch-app

For readers who have not built a search UI by hand, the scaffolding tool is the fastest entry point. `create-instantsearch-app` is listed as a command-line utility to quickly bootstrap a project with InstantSearch, and it is the package to reach for when you want a working example rather than an empty React shell.

The repository keeps runnable examples under `examples/`, split into `examples/js`, `examples/react` and `examples/vue`, which mirror the three UI layers. Reading one of those is often more informative than the API documentation when you are trying to work out how widgets compose, because the examples are the code the library is actually tested against.

The README itself is short on this. It does not document the CLI's flags, its template list, or which framework versions it targets, and it contains no runnable command at all. Anyone starting from the README has to go to `create-instantsearch-app`'s own documentation directory, which the README's table links to under `packages/create-instantsearch-app/docs`.

That is the pattern across this repository: the README tells you what exists and where the docs are, and the actual usage detail lives one hop away in Algolia's documentation site or in a package's own folder.

Checking your work against InstantSearch v3 and v4

The most telling part of the root `package.json` is the set of version-pinned scripts. Alongside `type-check` and `lint`, there are `type-check:v3` and `type-check:v4`, `test:v3` and matching versioned test variants, plus `test:versions`. The repository keeps separate TypeScript configurations for this: `tsconfig.v3.json` and `tsconfig.v4.json` sit next to the main one.

In practice this is a compatibility promise. A search UI library sits in front of somebody else's application, and a breaking change in its types can break a build in a project that never touched the library directly. Compiling and testing against both major lines, which is what those scripts do, is how that stays contained.

The end-to-end story is broader still. Beyond Playwright, referenced through the `@instantsearch/e2e-tests` workspace, there are WebdriverIO configurations for Sauce Labs and for local runs, and one script is named for its target rather than its tool: `test:e2e:ie11` sets the browser to Internet Explorer and points at `scripts/wdio/saucelabs.conf.js`. Whether you should care about that depends entirely on whether your users have corporate browsers, but its presence tells you the project still takes the question seriously.

`ship.config.mjs` and the retry wrapper in `scripts/retry.sh`, which `test:ci` invokes with three attempts, describe a release process built around reproducible CI runs.

What the 7.50.0 release says about where the work is going

Three releases were published on 2026-09-22, all at once: `[email protected]`, `[email protected]` and `[email protected]`. Two of the three are marked as version bumps only. The React release carries the actual content, and it is not about widget rendering.

The bug fix is labelled `chat`, described as a grouped results renaming follow up, reference FX-4013. The feature is labelled `compare`, described as funnelling product selections into a grounded chat comparison, and it closes an issue in a separate `algolia/conversational-ai` repository.

Read together, those two entries say that conversational commerce is an active workstream inside the search UI, not a separate product. A consumer selecting products and then asking a question about them is a different interaction from typing into a search box, and the repository is treating the comparison step as part of the same search experience.

That also puts a bound on the older framing of InstantSearch as a set of search boxes. The library is being extended toward a conversational surface, which means the widget model has to hold up in a context where the result list is an input to a further question rather than the final answer.

The last push to the repository was on 2026-09-23, one day after those releases.

Where the README stops and the docs take over

It is worth being plain about the division of labour here, because the README is an index rather than a guide. What it gives you is a package table with versions, a link to each framework's documentation on Algolia's site, a description of the wider InstantSearch family across platforms, and a contributing section that points at issues tagged easy, bugs and chores.

What it does not give you is a single working example, a code block, or any statement about which package to pick for a given situation. It also does not discuss licensing per package, though the root license is MIT and the badge in the README says so plainly.

The contribution path is the one thing it explains concretely. Fork the project, clone the repository, install dependencies with Yarn, then pick a package to work on and change into it, with `cd packages/react-instantsearch` given as the example. There is an `AGENTS.md` and a `CLAUDE.md` at the root, `.oxlintrc.json` and `.oxfmtrc.json` for the Oxc-based linting and formatting that replaced an ESLint and Prettier setup, and a `netlify.toml` for the `website/` workspace.

So the practical sequence for evaluating this is short: pick your framework package, read the corresponding guide on Algolia's documentation site, then open the matching folder under `examples/` and run the versioned type-check for the major version you depend on. The repository is exceptionally well tooled and exceptionally light on prose, which suits a library whose real documentation is its test suite and its examples.

Editorial conclusion

InstantSearch earns its place when you have already chosen Algolia as the search backend, because the alternative is reimplementing the state plumbing that `algoliasearch-helper` already encodes: refinement state, pagination, faceting, caching and URL routing. What the repository does not offer is a way out of that dependency, since every package here is a client for Algolia's API rather than a search engine. If you are still deciding which search service to run, read the API guide before reading this code. Within Algolia, pick `react-instantsearch` for a React app, `vue-instantsearch` for Vue and `instantsearch.js` when there is no framework, then use the v3 and v4 type-check and test scripts to confirm the major version your application actually depends on.

Frequently asked questions

What is InstantSearch in Algolia?

It is the JavaScript library for building the search interface on top of Algolia's search API, with separate wrappers for vanilla JS, React and Vue. The README describes it as a library for creating an instant-search result experience, and points to documentation for each framework wrapper.

Which InstantSearch package should a React application install?

The README lists `react-instantsearch` as the bundled React library and `react-instantsearch-core` as the runtime-independent React version. Reach for the bundled package in an ordinary React application and the core one when you need to avoid React-specific runtime infrastructure. React Router support for Next.js ships as a separate release, `react-instantsearch-router-nextjs`.

Does InstantSearch work with anything other than Algolia?

Not as documented. Every package in the table is described as a way of building search with Algolia, and `algoliasearch-helper` encodes the state and request handling for Algolia's API specifically. Choosing this library is a decision to use Algolia as the search service.

Official sources

  1. algolia/instantsearch on GitHub
  2. License: MIT
  3. Project website
  4. README
  5. Releases
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/algolia-instantsearch.svg)](https://hysenlabs.com/projects/algolia-instantsearch)