Busca client-side é uma boa combinação para sites Astro estáticos: as páginas continuam sendo HTML publicado e o navegador adiciona uma camada de descoberta quando o usuário precisa encontrar algo. O desafio é decidir onde cada parte do trabalho deve acontecer.

A arquitetura em duas fases

O modelo mais conhecido transforma o conteúdo em um corpus durante o build. Um endpoint estático reúne títulos, headings e texto das páginas e publica um JSON. No primeiro uso, o navegador carrega esse arquivo e constrói um índice em memória.

Essa separação mantém o deploy simples e evita um serviço externo de busca. O preço é que o primeiro uso concentra download, parsing e indexação no dispositivo do visitante.

Diagrama mostrando páginas, imagens e código passando por extração, tokens e índice até a busca e os resultados.
O conteúdo pode ser preparado no build e pesquisado no navegador sem depender de um servidor de busca.

Pagefind e MiniSearch resolvem problemas diferentes

Pagefind trabalha sobre o HTML final depois do build. Isso aproxima o índice daquilo que realmente foi publicado e permite dividir os arquivos em partes menores, carregadas conforme a consulta precisa.

MiniSearch oferece mais controle programático sobre campos, ranking, prefixos, fuzzy search e pesos. Também pode receber documentos que não correspondem exatamente a páginas HTML. Em troca, exige que a aplicação cuide da geração e do carregamento do índice.

Diagrama comparando HTML publicado com Pagefind e dados estruturados com MiniSearch, convergindo para uma busca no site.
Pagefind favorece conteúdo publicado; MiniSearch é mais flexível quando a fonte pesquisável é customizada.

O custo pode sair do navegador

Na implementação original com MiniSearch, o build prepara o corpus e o browser executa `addAll()` para criar o índice. Uma evolução é serializar o índice já pronto durante o build e usar `loadJSONAsync()` no cliente.

Isso reduz CPU e long tasks no primeiro uso. Ainda existe o custo de baixar e desserializar o índice, por isso o tamanho do corpus, o tipo de aparelho e a frequência de uso continuam importantes.

Diagrama comparando o trabalho mais pesado no build com o trabalho mais leve no navegador ao carregar um índice serializado.
Pré-indexar desloca a construção do índice para o build e deixa o navegador responsável por uma etapa mais leve.

A escolha depende da fonte pesquisável

Não existe uma engine universalmente melhor. Se a fonte é o HTML estático publicado, Pagefind costuma ser a opção mais equilibrada. Ele indexa a representação real da página e carrega chunks progressivamente.

Se a busca precisa combinar dados estruturados, documentos arbitrários ou uma lógica de ranking controlada pelo código, MiniSearch continua uma boa escolha. Para dados dinâmicos, facetas avançadas e grandes catálogos, um motor remoto como Meilisearch ou Typesense passa a fazer mais sentido — com dependência de rede e outras responsabilidades.

Diagrama mostrando diferentes fontes de dados e a escolha entre Pagefind, MiniSearch e um motor de busca remoto.
A fonte do conteúdo é o primeiro critério para escolher a arquitetura de busca.

O que medir

O usuário não experimenta apenas o tempo de `search()`. A percepção inclui o download da engine, o índice, a descompressão, o parsing, a desserialização e a atualização visual dos resultados.

Vale medir cold cache e warm cache em desktop e mobile, bytes transferidos, tempo até a busca estar pronta, long tasks, heap máximo e qualidade do ranking. Uma consulta rápida que entrega resultados irrelevantes não resolve o problema.

Em qualquer solução local, o índice deve ser tratado como conteúdo público. Rascunhos, páginas privadas e informações sob embargo precisam ser excluídos antes do build. No browser, o destaque dos termos também deve renderizar texto com segurança, sem concatenar HTML não confiável.

Nossa recomendação

Para um site Astro de conteúdo, começaríamos com Pagefind. Ele combina bem com a saída estática, indexa o HTML final e evita manter um corpus monolítico no cliente.

MiniSearch é a alternativa quando o produto precisa de controle direto sobre o modelo de dados e o ranking. Nesse caso, preferimos construir e serializar o índice no build, carregando-o de forma assíncrona no primeiro uso.

A decisão não é apenas técnica. Ela envolve privacidade, custo de operação, tamanho do site, tipo de conteúdo e o que o usuário espera encontrar. O melhor mecanismo é aquele que torna a busca útil sem criar uma nova fonte de complexidade.