JavaScript is disabled. Some features may not work.
algolia-search — Install Guide | SkillsNav
🇺🇸 English🇨🇳 中文
SkillsNav
Home

algolia-search

generationN/AIntermediateClaude
🤖 AI Summary

This skill provides expert guidance on implementing Algolia search, covering indexing strategies, React InstantSearch integration, and relevance tuning to optimize search performance and user experience.

How to Install

Claude Code:
git clone --depth 1 https://github.com/vibeship-spawner-skills (Apache 2.0).git && cp skills/algolia-search ~/.claude/skills/algolia-search -r

Algolia Search Integration

Expert patterns for Algolia search implementation, indexing strategies, React InstantSearch, and relevance tuning

Patterns

React InstantSearch with Hooks

Modern React InstantSearch setup using hooks for type-ahead search.

Uses react-instantsearch-hooks-web package with algoliasearch client. Widgets are components that can be customized with classnames.

Key hooks: - useSearchBox: Search input handling - useHits: Access search results - useRefinementList: Facet filtering - usePagination: Result pagination - useInstantSearch: Full state access

Code_example

// lib/algolia.ts import algoliasearch from 'algoliasearch/lite';

export const searchClient = algoliasearch( process.env.NEXT_PUBLIC_ALGOLIA_APP_ID!, process.env.NEXT_PUBLIC_ALGOLIA_SEARCH_KEY! // Search-only key! );

export const INDEX_NAME = 'products';

// components/Search.tsx 'use client'; import { InstantSearch, SearchBox, Hits, Configure } from 'react-instantsearch'; import { searchClient, INDEX_NAME } from '@/lib/algolia';

function Hit({ hit }: { hit: ProductHit }) { return (

{hit.name}

{hit.description}

${hit.price}
); }

export function ProductSearch() { return ( ); }

// Custom hook usage import { useSearchBox, useHits, useInstantSearch } from 'react-instantsearch';

function CustomSearch() { const { query, refine } = useSearchBox(); const { hits } = useHits(); const { status } = useInstantSearch();

return (

refine(e.target.value)} placeholder="Search..." /> {status === 'loading' &&

Loading...

}
    {hits.map((hit) => (
  • {hit.name}
  • ))}
); }

Anti_patterns

  • Pattern: Using Admin API key in frontend code | Why: Admin key exposes full index control including deletion | Fix: Use search-only API key with restrictions
  • Pattern: Not using /lite client for frontend | Why: Full client includes unnecessary code for search | Fix: Import from algoliasearch/lite for smaller bundle

References

  • https://www.algolia.com/doc/api-reference/widgets/react
  • https://www.algolia.com/doc/libraries/javascript/v5/methods/search/

Next.js Server-Side Rendering

SSR integration for Next.js with react-instantsearch-nextjs package.

Use instead of for SSR. Supports both Pages Router and App Router (experimental).

Key considerations: - Set dynamic = 'force-dynamic' for fresh results - Handle URL synchronization with routing prop - Use getServerState for initial state

Code_example

// app/search/page.tsx import { InstantSearchNext } from 'react-instantsearch-nextjs'; import { searchClient, INDEX_NAME } from '@/lib/algolia'; import { SearchBox, Hits, RefinementList } from 'react-instantsearch';

// Force dynamic rendering for fresh search results export const dynamic = 'force-dynamic';

export default function SearchPage() { return (

); }

// For custom routing (URL synchronization) import { history } from 'instantsearch.js/es/lib/routers'; import { simple } from 'instantsearch.js/es/lib/stateMappings';

typeof window === 'undefined' ? new URL(url) as unknown as Location : window.location, }), stateMapping: simple(), }}

{/ widgets /}

Anti_patterns

  • Pattern: Using InstantSearch component for Next.js SSR | Why: Regular component doesn't support server-side rendering | Fix: Use InstantSearchNext from react-instantsearch-nextjs
  • Pattern: Static rendering for search pages | Why: Search results must be fresh for each request | Fix: Set export const dynamic = 'force-dynamic'

References

- https://www.npmjs.com/package/react-instantsearch-nextjs

Details

Category Coding → generation
Sourcevibeship-spawner-skills (Apache 2.0)
SKILL.mdView on GitHub →
Repo StarsN/A
DifficultyIntermediate
Risk LevelN/A

Related Skills