¿Cuándo aparece esto? (y por qué te agarra por sorpresa)
El momento es siempre el mismo y siempre duele: terminaste tu app, la subes a revisión de la App Store… y te la rechazan por la regla 5.1.1. Te agarra por sorpresa porque la IA, al construir, se enfoca en el flujo de crear cuenta y usar la app — casi nunca piensa en el flujo de borrarla. Es un requisito legal y de Apple que tienes que pedir tú, explícitamente, antes de publicar.
La trampa que te tumba DOS veces
La forma correcta · soft delete + anonimización
Aquí está el equilibrio que sí funciona. El problema técnico real es: si borras el usuario "a lo bruto", se te rompe la base de datos (sus pedidos, comentarios, etc. quedan apuntando a un usuario que ya no existe). La solución profesional: borras de verdad el dato personal (nombre, correo, foto, teléfono) pero dejas un cascarón anónimo en su lugar para no romper las relaciones. Lo personal desaparece para siempre; la integridad de tu base de datos se mantiene.
Las 3 piezas que Apple y la ley te piden
- Un botón "Borrar mi cuenta" fácil de encontrar, dentro de la app (típicamente en Ajustes).
- Borrado real del dato personal: nombre, email, foto, teléfono — anonimizados de forma irreversible.
- Borrado también en el sistema de autenticación (no solo en tu tabla de usuarios — también en Supabase Auth / el proveedor de login).
Prompt maestro · pídeselo a tu IA
Este prompt le pide a tu IA todo lo necesario para cumplir la regla y la ley, sin romper tu base de datos. Cópialo y pégaselo:
Implementa el borrado de cuenta para mi app, cumpliendo la regla 5.1.1 de Apple y el GDPR/CCPA. Mi stack: [dime tu stack, ej. Supabase + Next.js]. 1. Crea el botón "Borrar mi cuenta" dentro de Ajustes, fácil de encontrar. 2. Antes de borrar, muestra una confirmación clara (esto es irreversible) y, si quieres, pide verificar identidad (un código por email/teléfono). 3. Haz SOFT DELETE con ANONIMIZACIÓN irreversible del dato personal: nombre, email, foto, teléfono. No los escondas: reemplázalos por valores anónimos (ej. "usuario eliminado") o NULL. 4. Deja un cascarón para no romper las foreign keys (sus pedidos/comentarios no deben petar). 5. Borra también la identidad en el sistema de auth (ej. Supabase Auth admin deleteUser), no solo en mi tabla. 6. Si el usuario tiene una SUSCRIPCIÓN activa, avísale ANTES de borrar y dime cómo manejar la cancelación para no seguir cobrándole ni perder el registro de facturación que la ley exige conservar. 7. Registra en un log de auditoría que la cuenta se borró (sin datos personales) por si la ley pide demostrarlo. Dame la migración, la función de anonimización y el componente del botón, y explícame en pasos simples qué hace cada parte.
El caso que casi nadie maneja · suscripciones
Cómo confirmar que quedó bien
- El botón se encuentra fácil dentro de la app (no escondido en una web externa).
- Tras borrar, el dato personal ya no existe en tu base de datos (verifícalo a mano).
- El usuario desaparece también del sistema de auth (no puede volver a iniciar sesión).
- Las cosas que dejó (pedidos, comentarios) no rompieron nada — siguen con un autor anónimo.
- Si había suscripción, se canceló y quedó el registro contable sin datos personales.