Landing pages · GUIA PRÁTICO

Como permitir retomar um formulário longo

Planeje retorno seguro quando a tarefa pode exigir mais de uma sessão.

Permitir que alguém pare e retome um formulário reduz perda de trabalho, mas exige decidir onde o rascunho fica, quem pode recuperá-lo e quando ele desaparece. Não salve automaticamente dados sensíveis em armazenamento acessível a JavaScript.

Escolha o mecanismo pela sensibilidade e pelo uso

OpçãoRetomadaIndicação e limite
Manter respostas na página sem salvarSó enquanto a página continua abertaAdequado a formulários curtos; avise antes de sair se houver alterações
sessionStorageNa mesma aba/sessão do navegadorSomente rascunho não sensível; normalmente termina quando a aba fecha; não serve para outro dispositivo
localStorageApós fechar e reabrir o navegador no mesmo perfilPersistente no dispositivo; evite PII, documentos, dados financeiros/médicos e qualquer informação de alto risco
Rascunho no servidor com loginEntre sessões e dispositivosPara formulários longos; controle autorização, expiração, retenção, exclusão e auditoria
Link de retomadaSem login, em dispositivo compatívelUse token aleatório, opaco, com expiração/revogação e canal seguro; não coloque respostas nem PII na URL

sessionStorage e localStorage são acessíveis a scripts da mesma origem. Uma vulnerabilidade XSS pode expor o conteúdo; guardar um segredo no navegador não equivale a protegê-lo. Quando não for possível evitar dados sensíveis, use uma arquitetura aprovada por segurança/privacidade e controles no servidor.

Desenhe o ciclo do rascunho

  1. Liste os campos que podem ser salvos e exclua credenciais, números de cartão, códigos de autenticação e dados que não sejam necessários.
  2. Explique antes de salvar: salvamento automático ou manual, onde retomar, em qual dispositivo, prazo, como apagar e o que acontece ao enviar definitivamente.
  3. Salve após pausa curta (debounce) e ao avançar de etapa; mostre estados “salvando”, “salvo às…” e “não foi possível salvar”. Preserve o texto digitado se a rede falhar.
  4. No servidor, associe o rascunho a uma sessão/usuário ou token de acesso com entropia alta; confira permissão em cada leitura/alteração, limite tentativas e configure expiração e exclusão.
  5. Versione o formato do rascunho para detectar formulário alterado. Se conflito ocorrer em duas abas, não sobrescreva silenciosamente a versão mais recente.
  6. Ao retomar, revalide todos os campos e confirme valores e arquivos antes do envio; o servidor continua responsável por validar e processar.

Para prototipar apenas uma preferência não sensível na mesma aba, uma chave de sessionStorage pode registrar a etapa atual; remova o rascunho ao enviar ou escolher “apagar”. Não use esse exemplo para dados pessoais de um formulário real. Segundo a MDN, Web Storage, o armazenamento local persiste no perfil e o sessionStorage é por aba. Consulte Formulários acessíveis — W3C WAI e o núcleo de controles e formulários.

Continue por aqui