Lo difícil de desarrollar una aplicación móvil no es el código, como se suele pensar. Sacar dos plataformas de una sola base de código es hoy bastante cómodo con React Native y Expo. La verdadera sorpresa la dan las tiendas: cuentas, formularios de privacidad, requisitos de pruebas y motivos de rechazo.
Este artículo cuenta esa parte: lo que necesitas para que tu app llegue realmente a producción una vez que has terminado de programar.
Primero, el coste
| Precio | Formato | |
|---|---|---|
| Apple Developer Program | 99 USD | Anual: si dejas de pagar, tus apps desaparecen de la tienda |
| Google Play Console | 25 USD | Pago único: de por vida de la cuenta |
La diferencia importa: en Apple es una suscripción. No puedes publicar la app y olvidarte; tienes que renovar cada año.
Consejo: ¿A nombre de quién va la cuenta?
Si desarrollas la app para un cliente, las cuentas deben abrirse a nombre del cliente. Si la app se publica desde tu cuenta, cuando vuestros caminos se separen la propiedad de la app se convierte en un problema: en Apple la transferencia entre cuentas es posible pero requiere un procedimiento, y en algunos casos no es posible en absoluto.
La regla de los 12 testers de Google
Es lo que más desbarata el calendario de quien la pilla desprevenido, y casi no aparece en las fuentes en español.
Importante: La regla
Para las cuentas de desarrollador personales creadas después del 13 de noviembre de 2023: para poder pasar una app a producción, primero tienes que ejecutar una prueba cerrada, con al menos 12 testers durante 14 días seguidos. Solo después de completarla puedes solicitar el acceso a producción desde Play Console.
Cuando la regla salió eran 20 usuarios; en diciembre de 2024 se redujo a 12.
Los detalles duelen:
- Los 14 días deben ser ininterrumpidos. Si un usuario se une y se va, no cuenta; si vuelve a unirse, el contador empieza de cero.
- Los 12 usuarios deben estar inscritos a la vez. No basta con que hayan probado la app 12 personas en momentos distintos.
- Este plazo se suma al tiempo de desarrollo. Cuando la app está terminada, tienes al menos dos semanas más por delante.
Advertencia: Consecuencia práctica
Si le prometiste al cliente "estará publicada en tres semanas" y la cuenta es una cuenta personal recién creada, no puedes cumplir esa promesa. En las cuentas corporativas (de organización) este requisito no se exige: por eso lo que marca el calendario es el tipo de cuenta.
Por eso yo cuento los plazos no desde el día en que se abre la cuenta, sino desde el día en que se reúnen los testers.
La declaración de privacidad de Apple
Desde el 1 de mayo de 2024, todas las apps nuevas y actualizaciones que se
envían a la App Store deben incluir una declaración de privacidad
(PrivacyInfo.xcprivacy) para los SDK de terceros que usan APIs de "required
reason". Es un archivo plist y declara qué tipos de datos recoge la app y con
qué justificación usa determinadas APIs.
Las apps sin esta declaración son rechazadas en la revisión.
En Expo esto es manejable: la mayoría de las librerías traen su propia declaración, y las que añadas tú las defines en la configuración. Pero el día que digas "el código está listo, enviemos", puede ser lo primero con lo que te encuentres.
Formularios: declarar qué recoges
Ambas tiendas piden una declaración de recogida de datos:
- Apple — App Privacy: ¿Qué datos recoges, para qué los usas, se asocian al usuario? Las "etiquetas de privacidad" de la página de la tienda se generan a partir de aquí.
- Google — Data Safety: El equivalente de las mismas preguntas en Google, más si los datos se cifran y si el usuario puede solicitar su eliminación.
La declaración debe coincidir con el comportamiento real de la app. Si se detecta una discrepancia, la app puede ser retirada.
Explicación: La ventaja de una app sin servidor
Al escribir BreakChain tomé una decisión consciente: ningún servidor. El
usuario introduce la fecha en que dejó de fumar, la cantidad diaria y el
precio; todos los cálculos se hacen en el dispositivo y los datos se quedan
solo en el dispositivo mediante AsyncStorage. Las notificaciones también
son locales.
Esto tiene un gran efecto en las tiendas: no hay datos recogidos y, por tanto, no hay datos que declarar. El texto de privacidad es corto, los formularios llevan unos minutos y el riesgo de una brecha de datos es cero, porque los datos que se conservan son cero.
Preguntarte desde el principio si la app realmente necesita un servidor no solo determina el coste de infraestructura, sino también la carga legal.
La política de privacidad debe ser una URL
Las dos tiendas exigen que la política de privacidad esté publicada en una dirección accesible. No basta con que haya un texto dentro de la app; tienes que dar un enlace en el registro.
Si la app no tiene sitio web propio, lo más práctico es abrir una subpágina en
un sitio existente. En este sitio, /privacy-policy/breakchain está así: esa
es la dirección a la que apunta el registro en la tienda.
Compilar y enviar con EAS
Si usas Expo, no necesitas un Mac local para compilar; EAS Build también gestiona los certificados de firma.
# Kurulum
npm install -g eas-cli
eas login
eas build:configure
# Mağaza için derleme
eas build --platform ios
eas build --platform android
# Mağazaya gönderme
eas submit --platform ios
eas submit --platform androidLa gestión de certificados y perfiles es la mayor comodidad aquí: la firma en iOS ha sido tradicionalmente la parte más molesta del proceso, y EAS la hace por ti.
Advertencia: Números de versión
En cada envío a la tienda, el número de compilación (buildNumber /
versionCode) debe haber aumentado. No puedes enviar por segunda vez con
el mismo número, y el mensaje de error no se entiende a primera vista. EAS
puede incrementarlo automáticamente; conviene activarlo.
Ficha de la tienda
Lo que hay que preparar cuando el código está terminado:
- Icono de la app: no redondees tú las esquinas, la tienda aplica su propia máscara. Envíalo cuadrado y relleno.
- Capturas de pantalla: en tamaños de dispositivo concretos y en un número concreto. Es la tarea que la mayoría deja para el último día y la que más tiempo lleva.
- Texto de descripción: también se usa en la búsqueda dentro de la tienda.
- Categoría, clasificación por edad, datos de contacto.
- Cuenta de prueba: si la app tiene inicio de sesión, tienes que darle al revisor una cuenta que funcione. Si no lo haces, te rechazan.
Motivos de rechazo frecuentes
Resumen: Comprobación antes del envío
- La URL de la política de privacidad no funciona o es una página en blanco
- La recogida de datos declarada no coincide con el comportamiento real de la app
- En una app con inicio de sesión, no se ha dado una cuenta de prueba al revisor
- La app parece "inacabada": pantallas vacías, botones que no funcionan
- Las capturas de pantalla no muestran el aspecto real de la app
- Se pide un permiso necesario pero no se explica para qué
- Falta la declaración de privacidad en iOS
Publicar no es el final
Después de publicar la app también hace falta mantenimiento: las versiones de las plataformas cambian, Apple y Google introducen de vez en cuando nuevas obligaciones de declaración, las librerías quedan obsoletas. "Escríbelo una vez y olvídate" vale menos en una app móvil que en la web, porque las dos plataformas que hay debajo avanzan cada una con su propio calendario.
Por eso, en los proyectos móviles hablo de las actualizaciones de versión desde el principio: ¿quién actualizará la app y con qué frecuencia?
Consejo: Hagamos este trabajo juntos
El desarrollo con React Native y la gestión de los procesos de publicación en las tiendas es uno de los servicios que ofrezco; he explicado el alcance y cómo trabajamos en la página de aplicaciones móviles. Para ver un ejemplo ya publicado, echa un vistazo a BreakChain.
Nota: Fuente
El requisito de pruebas de Google Play se basa en la página de Ayuda de Play Console, y la obligación de la declaración de privacidad de Apple en la documentación de Expo. Las reglas de las tiendas cambian; comprueba la versión actual antes de enviar.
Hoja de ruta y herramienta interactivas
Desarrollador Frontend Junior 2026
Lo que realmente necesitas saber para conseguir un trabajo de frontend junior en 2026 y lo que puede esperar, a partir de ofertas reales.
¿SQL o NoSQL?
Responde seis preguntas y te diré qué tipo de base de datos encaja con tu proyecto, y por qué.
Sigue leyendo
- CZESuse cache en Next.js 16: caché del lado del servidor con Cache Components
use cache en Next.js 16: caché del lado del servidor con Cache Components
15 de junio de 2025 · 11 min de lectura - CZESCómo elegir una librería de UI para React: ¿cuál usar en 2026?
Cómo elegir una librería de UI para React: ¿cuál usar en 2026?
13 de junio de 2025 · 8 min de lectura