O que local-first significa no Prior

O Prior salva seu trabalho no seu aparelho primeiro e sincroniza depois. Veja como isso funciona, como cada tipo de dado se mescla e onde o local-first para.

6 de outubro de 2026

Local-first quer dizer que a cópia do seu trabalho que importa é a do seu aparelho. O servidor é o meio pelo qual seus aparelhos se encontram, e não o lugar onde uma ação precisa ser aprovada para contar. A ideia foi apresentada em 2019 por Martin Kleppmann, Adam Wiggins, Peter van Hardenberg e Mark McGranaghan, na Ink & Switch, em um ensaio que lista sete ideais: rápido, multidispositivo, offline, colaboração, longevidade, privacidade e controle do usuário.

A arquitetura do Prior segue essa ideia. Veja o que ela significa na prática e onde ela para.

O que acontece quando você adiciona uma tarefa

Você escreve uma tarefa. O Prior a salva em um banco de dados no seu aparelho: SQLite nos aplicativos para computador e Android, o armazenamento próprio do navegador na web. Ao lado, ele grava uma entrada em uma caixa de saída, com um ID de mutação único. A tarefa aparece na tela nesse momento. Nada esperou pela rede, e por isso criar uma tarefa é instantâneo.

Este dispositivoSalvo aqui primeiro, funcionaofflineSua contaJunta as mudanças de cadadispositivoSeus outros dispositivosAtualizados em segundos
Como seus dados circulam entre dispositivos

Quando o aparelho está online, ele envia a caixa de saída ao servidor. O servidor mantém um registro somente de acréscimo das alterações, com um número de revisão crescente, e aplica cada alteração apenas uma vez por ID de mutação, então uma nova tentativa após uma conexão caída não cria a tarefa duas vezes. Seus outros aparelhos pedem o que mudou desde a última revisão que viram. Uma pequena mensagem WebSocket diz a eles para pedir agora, em vez de esperar a próxima sincronização periódica. Ela não leva dados, só a notícia de que algo mudou.

Offline, o aplicativo avisa: “Tudo está salvo neste dispositivo. A sincronização volta quando você estiver online.” Com alterações pendentes, ele mostra quantas são. Os dados criados antes de você entrar ficam no aparelho até serem vinculados à sua conta.

Mesclar é uma escolha por tipo de dado

Dois aparelhos que alteram a mesma coisa offline vão divergir quando se encontrarem. Não existe uma única solução para todo tipo de dado, então o Prior usa a que se encaixa em cada um.

  • Tarefas e hábitos. O servidor aplica a última alteração aceita na ordem das revisões. Uma tarefa com uma alteração ainda pendente no seu aparelho não é sobrescrita pelo que chega de outro lugar.
  • Calendários e eventos. As alterações são correções campo a campo. Edições em campos diferentes do mesmo evento se combinam; no mesmo campo, vence a última recebida. As exclusões deixam uma marca, então uma cópia antiga offline não consegue trazer um evento de volta.
  • Flashcards. As revisões são um registro somente de acréscimo, e o agendamento de um cartão não é guardado. Ele é calculado reproduzindo as revisões desse cartão. Dois aparelhos que revisaram offline chegam ao mesmo agendamento quando seus registros se encontram, sem nada para resolver.
  • Orçamentos. Eles se mesclam linha por linha. Vence a versão mais recente de cada linha, e as linhas excluídas deixam uma marca.
  • Notas compartilhadas. São documentos Yjs, feitos para várias pessoas digitando ao mesmo tempo. Se a conexão cair, a nota mostra que está offline, e as alterações dos editores se mesclam quando a conexão volta.

O que os cinco têm em comum é uma mesclagem escolhida de acordo com o uso dos dados, e uma marca para cada exclusão, para que uma cópia antiga nunca desfaça uma decisão mais recente.

Onde ele para

Local-first é uma promessa sobre onde o seu trabalho fica e o que continua funcionando, não uma promessa sobre tudo.

  • Projetos compartilhados precisam de conexão. O Prior avisa isso e mantém o projeto compartilhado somente leitura até você se reconectar.
  • Algumas coisas são online por natureza. Entrar, o Prior AI, o e-mail e as ligas precisam da rede.
  • Não é criptografia de ponta a ponta. Seus dados ficam guardados no nosso servidor para poderem sincronizar. O local-first não muda isso.
  • O navegador é um lugar frágil. Na web, seus dados ficam no armazenamento daquele navegador. Se você o limpar antes de os dados sincronizarem, as alterações não sincronizadas vão junto. Os aplicativos nativos mantêm um arquivo de banco de dados.

Um bug que nos ensinou algo

Uma versão inicial da sincronização rodava em ordem fixa. Uma coluna de data era lida de forma errada para tarefas agendadas, e isso fazia falhar a leitura inteira das tarefas, o que também impedia a sincronização dos calendários e do espaço de trabalho. Corrigimos a leitura e mudamos o desenho: cada parte da sincronização agora roda por conta própria, e uma falha em uma não bloqueia mais as outras. A interface diz qual parte ainda está aguardando, e não informa sucesso completo quando uma parte falhou.

Isso também é o local-first funcionando. Seus dados nunca se perderam, porque estavam seguros no aparelho. A sincronização é que atrasou.

Mais sobre como usar isso está em Offline e sincronização, e Corrigir problemas de sincronização explica o que fazer quando algo não chega.

Prior

Menos ruído. Mais feito.