{hit.name}
{hit.description}
${hit.price}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.
git clone --depth 1 https://github.com/vibeship-spawner-skills (Apache 2.0).git && cp skills/algolia-search ~/.claude/skills/algolia-search -rExpert patterns for Algolia search implementation, indexing strategies, React InstantSearch, and relevance tuning
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
// 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.description}{hit.name}
export function ProductSearch() {
return (
// Custom hook usage import { useSearchBox, useHits, useInstantSearch } from 'react-instantsearch';
function CustomSearch() {
const { query, refine } = useSearchBox();
const { hits } = useHits
return (
Loading...
}SSR integration for Next.js with react-instantsearch-nextjs package.
Use
Key considerations: - Set dynamic = 'force-dynamic' for fresh results - Handle URL synchronization with routing prop - Use getServerState for initial state
// 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';
{/ widgets /}
| Category | Coding → generation |
| Source | vibeship-spawner-skills (Apache 2.0) |
| SKILL.md | View on GitHub → |
| Repo Stars | N/A |
| Difficulty | Intermediate |
| Risk Level | N/A |