Vue InstantSearch

4.24.4 · active · verified Sun Apr 19

Vue InstantSearch is a front-end library built by Algolia, offering a comprehensive set of UI components to integrate Algolia's lightning-fast search capabilities into Vue.js applications. It provides a declarative, component-based approach for building search UIs, abstracting away much of the complexity of the Algolia API. The current stable version is 4.24.4, with releases typically following the monorepo's synchronized cadence, often with minor version bumps or 'Note: Version bump only' entries across multiple InstantSearch packages. Its key differentiators include deep integration with the Algolia ecosystem, robust support for both Vue 2 (2.6.0+) and Vue 3 (3.0.0+), and a rich collection of pre-built, customizable widgets for common search features like search boxes, hit lists, facets, and pagination. This allows developers to quickly construct powerful search experiences with minimal effort, focusing on customization rather than boilerplate.

Common errors

Warnings

Install

Imports

Quickstart

This quickstart demonstrates a basic Algolia search interface in a Vue 3 application using Vue InstantSearch components: `ais-instant-search` as the root, `ais-search-box` for query input, and `ais-hits` to display results with a simple template. It initializes `algoliasearch/lite` with environment variables for security.

import { createApp, h } from 'vue';
import algoliasearch from 'algoliasearch/lite';
import { InstantSearch, SearchBox, Hits, Configure } from 'vue-instantsearch';
import 'instantsearch.css/themes/satellite-min.css'; // Or another theme, e.g., algolia-min.css

const searchClient = algoliasearch(
  process.env.VUE_APP_ALGOLIA_APP_ID ?? 'YOUR_APP_ID', // Replace with your Algolia Application ID
  process.env.VUE_APP_ALGOLIA_SEARCH_API_KEY ?? 'YOUR_SEARCH_API_KEY' // Replace with your Algolia Search-only API Key
);

const App = {
  components: {
    'ais-instant-search': InstantSearch,
    'ais-search-box': SearchBox,
    'ais-hits': Hits,
    'ais-configure': Configure,
  },
  data() {
    return {
      searchClient,
      indexName: 'instant_search', // Replace with your Algolia index name
    };
  },
  template: `
    <div id="app">
      <ais-instant-search :search-client="searchClient" :index-name="indexName">
        <ais-configure :hits-per-page="8" />
        <header>
          <h1>Vue InstantSearch Demo</h1>
          <ais-search-box placeholder="Search products..." />
        </header>
        <main>
          <ais-hits>
            <template v-slot:item="{ item }">
              <article>
                <h2>{{ item.name }}</h2>
                <p>{{ item.description }}</p>
                <p>Price: $\${{ item.price }}</p>
              </article>
            </template>
          </ais-hits>
        </main>
      </ais-instant-search>
    </div>
  `,
};

createApp(App).mount('#app');

view raw JSON →