Quando isto aparece? (e por que te pega de surpresa)
O momento é sempre o mesmo e sempre dói: você terminou seu app, sobe para revisão da App Store… e leva uma rejeição pela regra 5.1.1. Te pega de surpresa porque a IA, ao construir, foca no fluxo de criar conta e usar o app — quase nunca pensa no fluxo de excluí-la. É um requisito legal e da Apple que você tem que pedir, explicitamente, antes de publicar.
A armadilha que te derruba DUAS vezes
A forma correta · soft delete + anonimização
Aqui está o equilíbrio que realmente funciona. O problema técnico de verdade é: se você excluir o usuário "na marra", seu banco de dados quebra (os pedidos, comentários etc. dele ficam apontando para um usuário que já não existe). A solução profissional: você exclui de verdade o dado pessoal (nome, e-mail, foto, telefone) mas deixa uma casca anônima no lugar para não romper as relações. O que é pessoal desaparece para sempre; a integridade do seu banco de dados se mantém.
As 3 peças que a Apple e a lei exigem de você
- Um botão "Excluir minha conta" fácil de encontrar, dentro do app (normalmente em Configurações).
- Exclusão real do dado pessoal: nome, e-mail, foto, telefone — anonimizados de forma irreversível.
- Exclusão também no sistema de autenticação (não só na sua tabela de usuários — também no Supabase Auth / no provedor de login).
Prompt mestre · peça à sua IA
Este prompt pede à sua IA tudo o que é necessário para cumprir a regra e a lei, sem quebrar seu banco de dados. Copie e cole para ela:
Implemente a exclusão de conta para o meu app, cumprindo a regra 5.1.1 da Apple e o GDPR/CCPA. Meu stack: [me diga seu stack, ex. Supabase + Next.js]. 1. Crie o botão "Excluir minha conta" dentro de Configurações, fácil de encontrar. 2. Antes de excluir, mostre uma confirmação clara (isto é irreversível) e, se quiser, peça verificação de identidade (um código por e-mail/telefone). 3. Faça SOFT DELETE com ANONIMIZAÇÃO irreversível do dado pessoal: nome, e-mail, foto, telefone. Não os esconda: substitua-os por valores anônimos (ex. "usuário excluído") ou NULL. 4. Deixe uma casca para não romper as foreign keys (os pedidos/comentários dele não devem quebrar). 5. Exclua também a identidade no sistema de auth (ex. Supabase Auth admin deleteUser), não só na minha tabela. 6. Se o usuário tiver uma ASSINATURA ativa, avise ANTES de excluir e me diga como lidar com o cancelamento para não continuar cobrando dele nem perder o registro de faturamento que a lei exige conservar. 7. Registre em um log de auditoria que a conta foi excluída (sem dados pessoais) caso a lei peça para comprovar. Me dê a migração, a função de anonimização e o componente do botão, e me explique em passos simples o que cada parte faz.
O caso que quase ninguém trata · assinaturas
Como confirmar que ficou certo
- O botão é fácil de encontrar dentro do app (não escondido numa web externa).
- Depois de excluir, o dado pessoal já não existe no seu banco de dados (verifique na mão).
- O usuário desaparece também do sistema de auth (não consegue fazer login de novo).
- As coisas que ele deixou (pedidos, comentários) não quebraram nada — continuam com um autor anônimo.
- Se havia assinatura, foi cancelada e ficou o registro contábil sem dados pessoais.