Fundamentos de UI/UX para desenvolvedores de apps

Capítulo 1

Tempo estimado de leitura: 10 minutos

+ Exercício

O que significa “projetar interfaces” em apps mobile (e por que isso é parte do seu trabalho)

Projetar interfaces no contexto de apps mobile é decidir como o usuário executa tarefas (ver, escolher, preencher, confirmar, corrigir) por meio de telas, componentes e estados. Para quem programa, isso se conecta diretamente a:

  • Modelagem de estados: carregando, vazio, erro, sucesso, offline, permissões negadas.
  • Arquitetura de navegação: rotas, deep links, retorno, pilha de telas, tabs.
  • Validação e regras de negócio: quando bloquear, quando avisar, quando permitir seguir.
  • Performance percebida: skeleton, placeholders, paginação, feedback imediato.
  • Acessibilidade e legibilidade: tamanhos, contraste, áreas de toque, foco.

Na prática, UI/UX não é “enfeite”: é o conjunto de decisões que reduz dúvidas, evita erros e torna o fluxo previsível. Um app bem programado pode falhar na adoção se o usuário não entender o que fazer, se errar com frequência ou se sentir inseguro.

Objetivos de uma boa interface

Clareza

O usuário deve entender rapidamente: onde está, o que pode fazer e o que acontece ao tocar. Clareza vem de rótulos objetivos, hierarquia visual e redução de ambiguidade.

  • Prefira rótulos de ação: “Salvar alterações” em vez de “OK”.
  • Mostre o estado atual: item selecionado, filtro ativo, etapa do formulário.
  • Evite excesso de opções na mesma tela; agrupe e priorize.

Eficiência

Eficiência é permitir que a tarefa seja concluída com menos passos, menos digitação e menos espera, sem sacrificar clareza.

  • Use valores padrão sensatos e preenchimento automático quando possível.
  • Evite pedir a mesma informação duas vezes.
  • Reduza telas intermediárias que não agregam decisão real.

Previsibilidade

O app deve se comportar como o usuário espera: padrões consistentes, ações reversíveis e respostas imediatas. Previsibilidade diminui ansiedade e erros.

Continue em nosso aplicativo e ...
  • Ouça o áudio com a tela desligada
  • Ganhe Certificado após a conclusão
  • + de 5000 cursos para você explorar!
ou continue lendo abaixo...
Download App

Baixar o aplicativo

  • Botões primários sempre no mesmo lugar e com o mesmo estilo.
  • Mesma ação, mesmo resultado (e mesmo texto) em todo o app.
  • Feedback claro após ações: “Salvo”, “Falha ao salvar”, “Sem conexão”.

UI vs UX na prática do dia a dia do desenvolvimento

UI (User Interface): o que você implementa na tela

UI é a camada visível e interativa: componentes, espaçamentos, tipografia, cores, ícones, estados (normal, pressionado, desabilitado), mensagens e microinterações. No código, UI aparece como:

  • Componentes reutilizáveis (botão, campo, card, lista).
  • Estilos e tokens (tamanhos, cores, tipografia).
  • Layouts responsivos e áreas de toque.
  • Estados de componentes e telas.

UX (User Experience): o resultado para o usuário ao completar uma tarefa

UX é a experiência ao longo do tempo: facilidade de entender, esforço para concluir, confiança, sensação de controle e satisfação. No desenvolvimento, UX aparece como:

  • Fluxos de navegação (quantas etapas, onde o usuário se perde).
  • Tratamento de erros e recuperação.
  • Tempo de resposta e performance percebida.
  • Coerência entre telas e previsibilidade.

Uma regra útil: UI é o “como parece e como se toca”; UX é o “como funciona para atingir um objetivo”. Você pode ter uma UI bonita com UX ruim (bonito, mas confuso) ou UI simples com UX excelente (claro, rápido e confiável).

Conceitos essenciais para pensar como UI/UX no código

Tarefa do usuário

Tarefa é o objetivo real do usuário (não o que o sistema “quer”). Exemplos: “pagar uma conta”, “encontrar um produto”, “alterar endereço”, “recuperar senha”.

Pergunta prática para o dev: “Qual é a menor sequência de ações que leva do estado atual ao objetivo?”

Fluxo

Fluxo é a sequência de telas/estados para concluir a tarefa. Um fluxo bem desenhado minimiza decisões desnecessárias e deixa claro o próximo passo.

Checklist rápido de fluxo:

  • Entrada: como o usuário chega aqui?
  • Passos: o que ele precisa informar/decidir?
  • Saída: qual é o estado final (sucesso) e o que ele pode fazer depois?
  • Exceções: e se der erro, faltar internet, faltar permissão?

Fricção

Fricção é qualquer atrito que aumenta esforço: campos demais, termos confusos, validação tardia, telas redundantes, carregamentos sem explicação.

Fricção “invisível” comum em apps: pedir CPF sem máscara, exigir senha forte sem explicar regras, bloquear botão sem dizer por quê, esconder ação importante atrás de ícone ambíguo.

Feedback

Feedback é a resposta do sistema às ações do usuário. Sem feedback, o usuário repete toques, abandona ou acha que “travou”.

  • Imediato: botão muda estado, loading aparece, campo mostra validação.
  • Confirmatório: mensagem de sucesso, recibo, atualização visual.
  • Orientador: erro com instrução de correção (“Use 8+ caracteres”).

Critérios de qualidade (o que revisar antes de considerar “pronto”)

Consistência

Consistência reduz aprendizado e aumenta previsibilidade. Para devs, isso significa padronizar componentes e comportamentos.

  • Mesmo componente para a mesma função (não criar 3 tipos de “botão primário”).
  • Mesma terminologia em todo o app (ex.: “Endereço de entrega” vs “Local de entrega”).
  • Mesmas regras de validação e mensagens (formato de data, moeda, telefone).

Passo a passo prático (consistência):

  • Liste as ações principais do app (salvar, excluir, confirmar, cancelar).
  • Defina um padrão de UI para cada ação (texto, cor, posição, confirmação).
  • Crie componentes reutilizáveis e substitua variações locais.
  • Revise telas procurando “exceções” não justificadas.

Legibilidade

Legibilidade é o usuário conseguir ler e entender sem esforço: texto, contraste, espaçamento e hierarquia.

  • Evite textos longos em botões; use verbos e complemento curto.
  • Use hierarquia: título, subtítulo, corpo, ajuda.
  • Garanta contraste suficiente e tamanho de fonte confortável.

Passo a passo prático (legibilidade):

  • Verifique se cada tela tem um “título que explica” (o que é esta tela).
  • Revise rótulos: troque termos internos por linguagem do usuário.
  • Quebre instruções em frases curtas e, quando necessário, em lista.
  • Teste em um aparelho menor: se precisar “caçar” informação, ajuste hierarquia.

Tolerância a erro

Tolerância a erro é permitir que o usuário erre menos e se recupere quando errar. No código, isso envolve validação, desfazer, confirmações e mensagens úteis.

  • Validação em tempo adequado (não só no final do formulário).
  • Mensagens que dizem o que aconteceu e como corrigir.
  • Ações destrutivas com confirmação e, se possível, opção de desfazer.

Passo a passo prático (tolerância a erro):

  • Mapeie campos e ações com maior chance de erro (senha, pagamento, exclusão).
  • Implemente validação próxima do campo (máscaras, limites, exemplos).
  • Padronize mensagens de erro com formato: “Problema + como resolver”.
  • Inclua estados de falha: sem internet, timeout, permissão negada, servidor indisponível.

Exemplos “antes e depois”: pequenas decisões de UI que mudam a UX

Exemplo 1 — Botão desabilitado sem explicação (fricção + falta de feedback)

Antes (UI): Tela de cadastro com botão “Criar conta” desabilitado. O usuário preenche alguns campos, mas o botão continua cinza. Não há indicação do que falta.

Impacto na UX: sensação de bloqueio, tentativa e erro, abandono.

Depois (UI): O botão pode permanecer desabilitado, mas cada campo mostra validação contextual: “E-mail inválido”, “Senha precisa de 8+ caracteres”. Além disso, um texto curto acima do botão: “Complete os campos obrigatórios para continuar”.

Impacto na UX: o usuário entende o próximo passo e corrige rapidamente.

Exemplo 2 — Rótulos genéricos (clareza)

Antes (UI): Modal com dois botões: “OK” e “Cancelar”. Texto: “Deseja prosseguir?” sem contexto.

Impacto na UX: medo de confirmar algo errado; usuário lê e ainda não sabe o que acontecerá.

Depois (UI): Texto específico: “Excluir este endereço?” Botões: “Excluir” (ação) e “Manter” (alternativa). Se for destrutivo, adicione uma linha: “Você pode adicionar novamente depois”.

Impacto na UX: decisão segura e rápida; menos arrependimento e menos suporte.

Exemplo 3 — Campo sem máscara e erro tardio (eficiência + tolerância a erro)

Antes (UI): Campo “Telefone” aceita qualquer texto. O usuário digita “1199999-9999”. Ao enviar, aparece erro no topo: “Telefone inválido”.

Impacto na UX: retrabalho, frustração, usuário não sabe o formato esperado.

Depois (UI): Campo com máscara e exemplo (“(11) 99999-9999”), teclado numérico, validação imediata e mensagem ao lado do campo. O envio só falha se houver caso excepcional (ex.: número incompleto).

Impacto na UX: menos erros, preenchimento mais rápido, sensação de fluidez.

Exemplo 4 — Carregamento sem estado (feedback + previsibilidade)

Antes (UI): Ao tocar em “Finalizar compra”, a tela congela por 3 segundos sem indicador. Usuário toca várias vezes.

Impacto na UX: duplicidade de ações, insegurança, risco de pedidos repetidos.

Depois (UI): Botão entra em estado “Processando…”, fica desabilitado, mostra spinner e a tela exibe um indicador de progresso. Em falha, mensagem: “Não foi possível finalizar. Verifique sua conexão e tente novamente.” com botão “Tentar de novo”.

Impacto na UX: confiança, menos toques repetidos, recuperação clara em erro.

Exemplo 5 — Inconsistência de navegação (consistência + previsibilidade)

Antes (UI): Em uma tela, o ícone de voltar está no topo; em outra, há um botão “Cancelar” no rodapé; em outra, o gesto de voltar fecha o app em vez de voltar uma etapa.

Impacto na UX: usuário se perde, sente que “cada tela é um app diferente”.

Depois (UI): Padrão definido: voltar sempre retorna uma etapa; “Cancelar” só aparece quando há edição em andamento; ações de saída são consistentes e previsíveis.

Impacto na UX: navegação natural, menos erros e menos abandono.

Mini-roteiro de revisão UI/UX para dev antes de entregar uma tela

Use este roteiro como checklist rápido durante o desenvolvimento:

ItemPerguntaExemplo de ajuste
ClarezaO usuário entende o objetivo da tela em 3 segundos?Adicionar título específico e rótulos de ação
EficiênciaHá passos/campos que podem ser removidos ou automatizados?Preencher automaticamente cidade/estado por CEP
PrevisibilidadeOs componentes se comportam igual ao resto do app?Padronizar posição do botão primário
FricçãoOnde o usuário pode travar ou ficar em dúvida?Incluir ajuda curta e exemplos nos campos
FeedbackO app responde a cada ação importante?Loading, estados de erro e confirmação de sucesso
Tolerância a erroComo o usuário corrige erros? Dá para desfazer?Validação por campo + “Desfazer” em exclusões

Passo a passo prático: aplicando o roteiro em uma tela real

  • Passo 1 — Defina a tarefa: escreva em uma frase o que o usuário quer fazer (ex.: “alterar endereço de entrega”).
  • Passo 2 — Desenhe o fluxo mínimo: liste as etapas e elimine as que não mudam decisão.
  • Passo 3 — Liste estados: carregando, vazio, erro, sucesso, offline e permissões (se aplicável).
  • Passo 4 — Revise fricções: campos, termos, validações tardias, botões sem explicação.
  • Passo 5 — Garanta feedback: cada ação principal deve ter resposta visual e mensagem em caso de falha.
  • Passo 6 — Padronize: compare com outras telas e ajuste para consistência (componentes e textos).
// Exemplo de “mensagem de erro útil” (formato recomendado):
// Problema + como resolver
// Ruim: "Erro ao salvar"
// Melhor: "Não foi possível salvar. Verifique sua conexão e tente novamente."

Agora responda o exercício sobre o conteúdo:

Ao revisar uma tela antes de entregar, qual prática melhora a tolerância a erro e reduz fricção durante o preenchimento de formulários?

Você acertou! Parabéns, agora siga para a próxima página

Você errou! Tente novamente.

Validar no momento e no local certo (perto do campo), com máscaras e mensagens orientadoras, evita retrabalho e ajuda o usuário a se recuperar. Isso aumenta a tolerância a erro e reduz fricção.

Próximo capitúlo

Usabilidade aplicada a telas e fluxos de app

Arrow Right Icon
Capa do Ebook gratuito Design de Interfaces para Apps: UI/UX essencial para desenvolvedores iniciantes
7%

Design de Interfaces para Apps: UI/UX essencial para desenvolvedores iniciantes

Novo curso

15 páginas

Baixe o app para ganhar Certificação grátis e ouvir os cursos em background, mesmo com a tela desligada.