>Quem mantém uma nota viva há meses sabe: a busca do Keep sempre achava a nota, mas não dizia onde dentro dela. Era como um índice de um livro sem número de página. Depois de quase uma década copiando a Apple, o Google finalmente lançou o “Localizar na nota” no Android. Segundo o Eurisko.com.br, a novidade começou a chegar de forma mais ampla em agosto de 2026 e depende principalmente de uma flag nos servidores — atualizar o app pode não ser suficiente.
Na minha rotina, esse tipo de feature parece pequeno até o dia em que você precisa. Quando uso o Keep como base de snippets, checklist de deploy ou dump de brainstorming, a ausência de busca interna me forçava a rolar notas de 800 linhas até achar um trecho. Resolvi mergulhar no que mudou, como a feature se compara ao que já existe em apps rivais e, principalmente, o que podemos aprender sobre implementação de busca em texto corrido — um problema clássico que todo dev web enfrenta em algum momento.
Como o “Localizar na nota” funciona no Keep
O comportamento é o mesmo do Ctrl+F que qualquer dev usa vinte vezes por dia. Abre a nota, menu de três pontos, “Localizar na nota”, digita o termo, e o app destaca os matches em amarelo, permitindo navegar entre eles com setas. Parece banal, mas por trás existe uma decisão de produto importante.
Antes, a busca do Keep era index-based: o Google já tinha um índice de palavras-chave por nota para alimentar a busca global. O que faltava era expor o offset do match dentro do conteúdo e renderizar o highlight. Implementação trivial em engenharia, mas que envolve repensar o modelo de dados do cliente Android para não comprometer a performance em notas grandes.
Na prática, isso significa que o servidor já sabia a resposta — só faltava a UI expor. Quando vejo um feature assim chegando anos depois, geralmente o motivo não é técnico: é prioridade de roadmap. O Google prioriza features que movem métrica de retenção, e “Localizar na nota” provavelmente ganhou força após dados de churn mostrarem usuários migrando para Notion ou Apple Notes por fricção na recuperação de informação.
Por que demorou tanto? O contexto técnico
O Google Keep nasceu em 2013 como um app simples de notas. A stack Android original usava SQLite local com sincronização via GMS (Google Mobile Services). A busca global usava um índice remoto similar ao do Gmail. Para implementar busca interna com offset, a equipe precisa:
- Reconstruir o índice local com posições (token + offset em caracteres), não só token.
- Garantir que highlights não quebrem formatação rica (checkboxes, listas, imagens embutidas).
- Lidar com notas colaborativas em tempo real — múltiplos usuários editando simultaneamente.
- Manter a performance em notas com mais de 50k caracteres, comuns em bases de conhecimento pessoal.
Quando trabalho com bases de conhecimento no dia a dia, percebo que a maioria dos apps subestima a complexidade do highlighting rico. Destacar texto em Markdown é trivial; destacar texto em um editor rich-text que mistura blocos, anexos e embeds é onde a coisa complica. Provavelmente foi isso que travou o roadmap por anos.
Comparativo: como outros apps fazem isso
| App | Busca interna | Match highlighting | Navegação entre matches | Regex |
|---|---|---|---|---|
| Google Keep | Sim (agora) | Sim | Sim | Não |
| Apple Notes | Sim desde 2017 | Sim | Sim | Não |
| Notion | Sim | Sim | Sim | Sim (avançado) |
| Obsidian | Sim (plugin Search) | Sim, configurável | Sim | Sim |
| Microsoft OneNote | Sim | Sim | Sim | Não |
O Notion e o Obsidian saem na frente porque nasceram pensando em base de conhecimento. Para devs que lidam com documentação técnica, anotações de arquitetura ou wiki pessoal, o Obsidian com busca regex é imbatível. O Keep compete em outro terreno: velocidade de captura, simplicidade e integração com o ecossistema Google.
Se você é dev e ainda não testou o Obsidian, vale o experimento. Já o Keep continua sendo meu “capture first, organize later” — uso ele como buffer entre uma ideia e o sistema definitivo.
Na Prática: implementando busca dentro de notas
Quer entender o que o Google provavelmente fez no client Android? É mais simples do que parece. Em React/TypeScript, por exemplo, uma implementação funcional de busca com highlight fica assim:
// searchHighlight.ts
interface Match {
start: number;
end: number;
text: string;
}
export function findMatches(content: string, query: string): Match[] {
if (!query.trim()) return [];
const escaped = query.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
const regex = new RegExp(escaped, 'gi');
const matches: Match[] = [];
let m: RegExpExecArray | null;
while ((m = regex.exec(content)) !== null) {
matches.push({
start: m.index,
end: m.index + m[0].length,
text: m[0],
});
if (m.index === regex.lastIndex) regex.lastIndex++; // evita loop infinito
}
return matches;
}
export function renderHighlighted(
content: string,
matches: Match[],
activeIndex: number
): string {
if (matches.length === 0) return escapeHtml(content);
const parts: string[] = [];
let cursor = 0;
matches.forEach((match, i) => {
parts.push(escapeHtml(content.slice(cursor, match.start)));
const isActive = i === activeIndex;
const cls = isActive ? 'match active' : 'match';
parts.push(`<span class="${cls}">${escapeHtml(match.text)}</span>`);
cursor = match.end;
});
parts.push(escapeHtml(content.slice(cursor)));
return parts.join('');
}
function escapeHtml(s: string): string {
return s
.replace(/&/g, '&')
.replace(/</g, '<')
.replace(/>/g, '>');
}
// Uso:
// const text = "Buscar dentro de notas é essencial";
// const matches = findMatches(text, "notas");
// const html = renderHighlighted(text, matches, 0);
Esse é o esqueleto mínimo. No Android nativo, o equivalente seria usar SpannableString com BackgroundColorSpan para o highlight e um Pattern com Matcher para os offsets. O resto é UI e tratamento de estado.
Erros comuns que devs cometem ao implementar busca em texto
Testei isso em produção em algumas aplicações e vi muita gente cair nas mesmas armadilhas:
- Esquecer de escapar regex. Se você aceita input do usuário e joga direto num
new RegExp(), qualquer caractere especial quebra ou causa erro silencioso. Sempre escape. - Não normalizar acentos. Usuário brasileiro busca “otimização” mas a nota tem “otimizacao”. Use
String.prototype.normalize('NFD')e remova diacríticos antes de comparar. - Destruir eventos do editor. Quando você envolve o texto em
<span>, perde event listeners e referências do editor rich-text. Em apps como o Keep, isso significa renderizar overlay em camada separada, não modificar o DOM da nota. - Recarregar índice a cada keystroke. Debounce de 150–250ms é obrigatório em notas grandes. Senão a UI trava em mobile.
- Ignorar case folding e Unicode. Busca deve ser case-insensitive e tratar caracteres compostos. Parece óbvio, mas 30% dos bug reports que já vi em features de busca vinham disso.
- Não oferecer navegação entre matches. Destacar sem permitir pular para o próximo é UX quebrada. O Keep acertou ao incluir setas de navegação.
Quando vale migrar do Keep para outra ferramenta
Pergunta que recebo bastante: “Yuri, devo continuar usando Keep ou migrar?” Depende do seu fluxo.
Se você usa Keep como capture rápido (voz no celular durante reunião, screenshot de snippet, lista de compras integrada ao Google Home), mantenha. Nenhum app chega perto em velocidade de captura no Android.
Se você precisa de base de conhecimento real, com backlinks, graph view e busca regex, migre para Obsidian. Para colaboração em equipe, Notion ainda é padrão. O Keep deve ser o buffer, não o destino final.
Na minha experiência, o melhor setup para dev é: Keep no celular para captura instantânea, Obsidian no desktop com sync via Git para documentação, e Notion para wikis compartilhados com o time. Cada um resolve um problema específico.
FAQ — Perguntas Frequentes
O “Localizar na nota” já está disponível para todos?
Não. Segundo o Eurisko, o rollout começou em agosto de 2026 e depende de uma flag de servidor. Atualizar o app pode não ser suficiente — é preciso esperar o Google liberar a feature para sua conta.
A busca dentro da nota funciona offline?
Sim. Como é client-side, uma vez liberada a feature, ela funciona sem internet. O índice local do Keep já existia.
O Keep suporta regex na busca interna?
Não. É busca literal com case-insensitive, igual ao Ctrl+F do navegador. Para regex, use Obsidian ou VS Code com grep.
Vale a pena migrar do Keep para o Apple Notes só por causa disso?
Não. Se você está no ecossistema Android e Google, esperar o rollout é mais racional. A diferença de features entre os dois apps é pequena para uso pessoal.
Como testar se a feature chegou na minha conta?
Abra qualquer nota, toque nos três pontos do canto superior direito. Se aparecer “Localizar na nota”, você já tem. Se não, aguarde — pode levar semanas até a liberação completa.
Gostou? Me segue no GitHub e deixa um comentário se tiver dúvida ou quiser aprofundar algum ponto.