Como permitir tentar novamente após um erro

Ofereça uma nova tentativa somente quando a falha puder ser temporária, a repetição for segura e a pessoa souber o que acontecerá.

Ilustração wireframe de uma falha temporária mudando para uma nova tentativa
Nível de impácto
Médio
Status
Recomendado
Nível de evidênica
Forte evidência

Contexto

O botão “Tentar novamente” é útil quando a falha pode ser temporária e repetir a operação tem chance real de concluir a tarefa. Ele não deve ser uma resposta automática para qualquer erro.

Uma boa recuperação combina explicação breve, preservação do estado, uma ação clara e um limite para novas tentativas. Quando a operação pode ter sido concluída, o sistema deve primeiro permitir consultar o resultado ou usar um mecanismo que evite duplicidade.

Ofereça “Tentar novamente” quando a causa for provavelmente transitória, como uma interrupção de conexão, tempo esgotado ou indisponibilidade momentânea. Não use o mesmo botão para corrigir dados inválidos ou resolver uma permissão ausente.

Explique o que falhou e o que a tentativa fará. “Não foi possível carregar os resultados. Tente novamente” é mais útil do que “Erro inesperado”. Se houver espera recomendada, informe-a antes de repetir.

Preserve os dados, filtros, posição e progresso da tarefa. Ao ativar a tentativa, mostre um estado de processamento, impeça cliques duplicados e comunique quando a operação terminar ou falhar novamente.

Depois de uma ou poucas tentativas sem sucesso, ofereça uma saída: verificar a conexão, consultar o status, voltar, salvar localmente ou procurar ajuda. Evite um ciclo sem fim de tentativas idênticas.

Para ações que criam, pagam, enviam ou excluem algo, confirme o resultado antes de repetir ou use idempotência no serviço. Uma falha de comunicação pode significar que a operação foi concluída, mesmo sem resposta visível.

Exemplos de alertas do Adobe Spectrum, incluindo conexão interrompida e ação Try again
Exemplo real documentado: o Adobe Spectrum mostra “Network connection interrupted” com uma única ação “Try again”, mantendo a ação diretamente no estado de erro. A fonte também recomenda ações inline para ajudar a pessoa a resolver o problema. Fonte: Adobe Spectrum — Alert banner — https://spectrum.adobe.com/page/alert-banner/.

Porque isso importa?

Uma falha sem caminho de recuperação transforma um problema temporário em um beco sem saída. A ação de tentar novamente reduz esse bloqueio quando é previsível, segura e compreensível.

Baymard relaciona mensagens específicas, preservação de dados e recuperação guiada a uma menor fricção em formulários e checkout. Design Systems como Adobe Spectrum, Material e Carbon convergem ao recomendar uma ação contextual, curta e única — mas não tratam “tentar novamente” como solução universal.

O risco está em repetir uma operação que pode gerar cobrança, duplicar registros ou apagar dados. Nesses casos, a interface precisa distinguir “a resposta não chegou” de “a operação falhou” e conduzir a pessoa para verificar o estado antes de reenviar.

  • Quando a causa pode ser temporária.
  • Quando a repetição é segura.
  • Quando a operação não foi concluída.
  • Quando o estado pode ser preservado.
  • Quando há feedback durante a nova tentativa.
  • Quando existe uma saída após novas falhas.
  • Quando o dado está inválido.
  • Quando falta permissão.
  • Quando a ação pode duplicar efeitos.
  • Quando a causa exige outra correção.
  • Quando a tentativa falhará sempre.
  • Quando não há alternativa ao loop.
Snackbar do Material Design informando tempo esgotado e oferecendo a ação Retry
Exemplo real documentado: o Material Design apresenta uma snackbar com “Connection timed out” e a ação “RETRY”. O padrão é apropriado para uma falha contextual e não bloqueante; a nova tentativa deve ser oferecida somente quando houver chance real de sucesso. Fonte: Material Design — Errors — https://m1.material.io/patterns/errors.html.

Recomendações

Faça

Práticas recomendadas
  • Explique a falha.
  • Use uma ação clara.
  • Preserve o estado.
  • Mostre o processamento.
  • Evite duplicidade.
  • Ofereça uma saída.
Interface wireframe com erro contextual, uma ação de tentar novamente e conteúdo preservado
Exemplo conceitual correto: a mensagem de falha permanece associada ao conteúdo, existe uma única ação de tentar novamente e o estado da tarefa continua preservado.

Evite

Práticas a evitar
  • Não repita sem critério.
  • Não limpe os dados.
  • Não use “Erro” sozinho.
  • Não permita cliques duplicados.
  • Não crie um loop infinito.
  • Não masque uma ação concluída.
Interface wireframe com erro dominante e várias ações repetidas de tentar novamente
Exemplo conceitual incorreto: o erro domina a tela, várias ações repetidas competem entre si e o conteúdo parece perdido, sem explicar o próximo passo.
Tela de fallback do Canva Apps SDK com erro de conexão, Try again e Go back
Exemplo real documentado: as diretrizes do Canva Apps SDK mostram uma falha de conexão com “Try again” e “Go back”. A combinação oferece uma nova tentativa e uma saída alternativa, evitando deixar a pessoa presa em um erro. Fonte: Canva Apps SDK — Authentication design guidelines — https://www.canva.dev/docs/apps/design-guidelines/authentication/.

Acessibilidade

O controle precisa ter nome acessível e indicar claramente a ação, como “Tentar novamente”. Quando o processamento começar, o botão deve comunicar o estado sem retirar o foco de forma inesperada. Desabilitar temporariamente o controle pode evitar duplicidade, mas não deve impedir a pessoa de entender o que está acontecendo.

Atualizações como “Tentando novamente” e “Resultados carregados” devem ser disponibilizadas de forma programática, por exemplo em uma região de status apropriada. O W3C define que mensagens de status devem poder ser anunciadas por tecnologias assistivas sem receber foco.

Não dependa só de vermelho, ícone ou animação. Garanta foco visível, contraste, operação por teclado e uma alternativa compreensível quando a tentativa continuar falhando.

Checklist

  • A causa pode ser temporária?
  • A repetição é segura?
  • A mensagem explica o que falhou?
  • O botão descreve a ação?
  • Os dados e o progresso são preservados?
  • O estado de tentativa é anunciado?
  • Cliques duplicados são evitados?
  • O sistema confirma o resultado?
  • Há limite para novas tentativas?
  • Existe uma alternativa ao loop?
  • A ação funciona por teclado?
  • A mensagem não depende só de cor?

Referências

  • W3C — WCAG 2.2, critério 4.1.3 e técnica ARIA22. Dá a base de acessibilidade para comunicar estados dinâmicos, como “tentando novamente”, “concluído” ou “falhou de novo”, sem mover o foco de forma inesperada. Consultar o critério 4.1.3 e a técnica ARIA22.
  • Baymard Institute — Adaptive Error Messages. A pesquisa mostra que mensagens genéricas deixam as pessoas sem saber como corrigir o problema; apoia explicar a causa e orientar a recuperação em vez de oferecer um “Tente novamente” vazio. Consultar a pesquisa.
  • Baymard Institute — Checkout Flow UX. Recomenda preservar os dados, usar mensagens específicas e conduzir a pessoa diretamente para a correção; esses princípios evitam transformar a nova tentativa em retrabalho. Consultar o guia.
  • Adobe Spectrum — Writing for errors. Orienta explicar o que aconteceu, indicar como corrigir e oferecer uma ação direta, como “Try again”, quando ela for adequada. Também recomenda não culpar a pessoa e evitar soluções genéricas. Consultar a orientação.
  • Adobe Spectrum — Alert banner. Mostra “Connection interrupted” com uma única ação “Try again” e recomenda ações inline para que a pessoa possa tratar o problema no próprio estado de erro. Consultar o componente.
  • Material Design — Errors. Usa snackbar com ação de retry para falhas de conectividade, mas ressalta que não se deve oferecer “Try again” quando o sistema sabe que a operação continuará falhando. É uma referência contextual de componente. Consultar o padrão.
  • IBM Carbon — Common actions e Notifications. Recomenda que mensagens de erro expliquem o que aconteceu e apresentem um caminho claro para continuar, com uma ação curta e contextual. Consultar ações comuns e notificações.
  • Padrão Digital de Governo — Message. Define a mensagem como feedback do sistema, recomenda texto curto e claro e distingue mensagens globais de mensagens relacionadas a um componente ou ação específica. Consultar o componente Message.
  • IETF — RFC 9110, HTTP Semantics. Explica que métodos idempotentes podem ser repetidos quando ocorre falha de comunicação, enquanto clientes não devem repetir automaticamente operações não idempotentes sem conhecer sua segurança. Consultar a seção sobre métodos idempotentes.
  • Stripe — Idempotent requests. Demonstra, em uma API pública, como uma chave de idempotência permite repetir uma solicitação sem criar o mesmo objeto ou aplicar a mesma atualização duas vezes. É referência técnica para ações com efeitos, não uma regra visual universal. Consultar a documentação.
Veja também

Esta recomendação foi útil para você?