El control de spam 4.3 de Apple es un proceso por lotes de 30 segundos. 22 rechazos lo demuestran

En resumen: App Review de Apple rechazó 11 de mis apps de iPhone por la Guideline 4.3 Spam. Y luego lo volvió a hacer. Las dos veces, los 11 rechazos llegaron en menos de 30 segundos (30 s el 5 de octubre, 27 s el 12 de octubre), un correo cada 3 segundos, en un orden que no tiene nada que ver con el orden en que las envié. La segunda ronda llegó entre 167,7 y 167,9 horas después de reenviarlas, para todas y cada una de las apps: un temporizador de siete días, con una precisión de 12 minutos. Presenté tres apelaciones ante el App Review Board el 5 de octubre. 14 días después: cero respuestas. Hoy he pasado mi propio "detector de spam" por los 20 repos de mis apps tal como los vio Apple. Las dos apps más parecidas que he publicado nunca están ambas en la tienda. Apple no está revisando apps para la 4.3. Está revisando cuentas, y no lo dice.
Si has llegado aquí desde Google preguntándote qué significa "Guideline 4.3 spam": es la norma de Apple contra las apps duplicadas. La parte (a) prohíbe "multiple Bundle IDs of the same app" (varios Bundle ID de la misma app), y la parte (b) prohíbe apps "indistinguishable from what's already widely available" (indistinguibles de lo que ya abunda). El rechazo suele decir que tu app "shares a similar binary, metadata, and/or concept" (comparte un binario, metadatos y/o concepto similares) con otras apps, con "only minor differences" (solo diferencias menores). No te dice qué app, qué archivo ni qué pantalla. La lista corta de soluciones está al final: deja de enviar en lote, responde antes de reenviar y reserva una llamada con App Review. El resto de este artículo son las pruebas.

11 apps, 30 segundos, un correo cada 3 segundos
El 26 de septiembre de 2026 envié 11 apps nuevas de iPhone, todas creadas desde Windows con el pipeline sin Mac del que ya escribí: Odometer (mantenimiento del coche), Parked (parquímetro), Rooms (inventario del hogar para el seguro), Pricebook (precios del supermercado), Pawprint (medicación de mascotas), Chores (tareas domésticas para niños), Clockout (propinas para trabajadores de servicios), Curve (calculadora de notas), Climbbook (registro de escalada en bloque), Race Pace (parciales de carrera) y Cutoff (cafeína y sueño). Los envíos se repartieron a lo largo de 15,5 horas: el primero a las 7:10 AM, hora del Pacífico, y el último a las 10:42 PM.
Nueve días después, el 5 de octubre, todas recibieron el mismo correo "There's an issue with your submission". Esta mañana saqué las marcas de tiempo de Gmail. El primero llegó a las 5:29:32 PM, hora del Este. El último llegó a las 5:30:02 PM. Once apps que resuelven cada una un problema distinto, para una persona distinta, con un diseño distinto, juzgadas en treinta segundos.
También comprobé si las decisiones salieron en el orden de envío, como saldrían de una persona que trabaja una cola de arriba abajo. No fue así. La correlación de rangos de Spearman entre "orden de envío" y "orden de rechazo" es de -0,06 en la primera tanda y de 0,06 en la segunda. Es decir, cero. Pawprint se envió la 4.ª y se rechazó la 1.ª. Odometer se envió la 1.ª y se rechazó la 11.ª. Lo que fuera que tomó estas decisiones, no era una persona abriendo apps una tras otra.
Once apps distintas, juzgadas en treinta segundos. Eso no es una revisión. Es un bucle
for.
Segunda ronda: un temporizador de siete días, con precisión de 12 minutos
Aquí es donde rompí la única regla de Apple, y lo asumo. El rechazo decía: si no estás de acuerdo, responde en App Store Connect y no reenvíes. Respondí a las 11, contestando las nueve preguntas de App Review para cada app. Y aun así reenvié las 11, en 10 minutos (de 3:13 a 3:23 PM, hora del Pacífico, el 5 de octubre).
Los segundos rechazos llegaron el 12 de octubre, entre las 6:04:46 y las 6:05:13 PM, hora del Este. 27 segundos para 11 apps. Pero lo raro es la espera. Todas las apps esperaron entre 167,7 y 167,9 horas desde el reenvío hasta el rechazo. 168 horas son exactamente siete días. Once apps, once esperas, una dispersión de 12 minutos.

Como comparación, la propia página de App Review de Apple dice que revisa "at least 50% of submissions in less than 24 hours and 90% in less than 48 hours" (al menos el 50% de los envíos en menos de 24 horas y el 90% en menos de 48). Cuando cronometré las 64 decisiones de App Review de mi cuenta el fin de semana pasado, la mediana fue de 73 horas, ya peor que la promesa de Apple. Nada más en mi cuenta esperó nunca 168 horas exactas.
Mi interpretación, y es una interpretación, no una filtración: las cuentas marcadas entran en una cola de espera con un temporizador de una semana, y cuando salta el temporizador, toda la tanda recibe el mismo rechazo predefinido. Puede que un humano pulse el botón. Nadie abre las apps. Si tienes una explicación mejor para que 11 apps distintas caigan en 7 días menos 15 minutos, quiero oírla.
No soy el único. La misma semana, el mismo trato de 30 segundos
Busqué en X a otros desarrolladores a los que les pasó esto en octubre de 2026. Bastó una búsqueda. Son publicaciones reales, capturadas hoy, sin editar.
El 5 de octubre, el mismo día de mi primera tanda, @krPorsche918 publicó que Apple había rechazado cinco de sus apps "in the same minute, with the same sentence: Guideline 4.3 Spam" (en el mismo minuto, con la misma frase). Su artículo tiene la mejor frase que nadie ha escrito sobre esto: "To me, 14 apps in 13 days was productivity. To Apple, it was a pattern." (Para mí, 14 apps en 13 días era productividad. Para Apple, era un patrón.) Esa misma semana, Apple aprobó los 53 eventos in-app de sus apps publicadas.

El 8 de octubre, @vovalukashov (Luka Shaw) hizo la pregunta que todos tenían en mente en las respuestas: "Looks like Apple stopped approving my new apps... Is this what happens to everyone who builds small apps that do one thing?" (Parece que Apple dejó de aprobar mis apps nuevas... ¿Es esto lo que le pasa a todo el que crea apps pequeñas que hacen una sola cosa?). Tres apps nuevas rechazadas en cuatro semanas, una de ellas dos veces. "Updates to my old apps still go through." (Las actualizaciones de mis apps antiguas siguen pasando.) La vieron 62K personas.

Y el 12 de octubre, a las 6:26 PM, hora del Este, 22 minutos después de que cayera mi segunda tanda de 11, @martindonadieu (Martin Donadieu, el fundador de Capgo) publicó su pantalla de App Store Connect: un muro de etiquetas rojas "Rejected" y el texto "Moved from no review to almost all rejected LOL" (He pasado de ninguna revisión a casi todo rechazado, jaja). 223K visualizaciones. Tres días después volvió a publicar: rechazado por la 4.3 por segunda vez, con una app de venta de entradas 100% local que gestionó un evento de 500 personas este verano y que ya está en Google Play.

Mira el patrón en los cuatro casos. Las apps nuevas mueren. Las actualizaciones pasan. Mi propia cuenta lo muestra: en la misma ventana en la que mataron 11 apps nuevas dos veces, Apple aprobó actualizaciones de Chain y Minder (12 de octubre) y seis actualizaciones el 29 de septiembre. Las seis actualizaciones de septiembre añadían el mismo patrón de paywall que tenían las apps rechazadas (Pro.swift; Purchases.swift en Chain), con commits de la misma mañana (26 de septiembre, entre las 9:26 y las 9:29 AM, hora del Este). Mismo código, mismo día. Actualizaciones: aprobadas en unos 3 días. Apps nuevas: rechazadas dos veces. Luka dice que sus actualizaciones pasan. A Porsche le aprobaron 53 eventos in-app. Las apps existentes de Martin siguen publicadas.
Y aquí es donde no estoy de acuerdo con Luka. Su conclusión fue "I guess it's a sign to focus on the ones already in the App Store" (supongo que es una señal para centrarme en las que ya están en la App Store). Ese es exactamente el comportamiento que este filtro está inculcando a todos los desarrolladores pequeños, y es la lección equivocada. El filtro no dice que tu app nueva sea mala. Dice que tu cuenta publica demasiado rápido para el gusto de Apple. Son problemas distintos con soluciones distintas.
¿Tenía razón Apple? Pasé un detector de spam por mis propias apps
Pregunta justa: quizá mis apps sí sean clones. Soy un solo desarrollador con 20 apps de iPhone en 30 días, creadas con agentes de programación con IA, todas desde el mismo pipeline. Si alguien merece una 4.3, puede que sea yo. Así que esta tarde lo probé, en lugar de discutirlo.
El experimento: para cada uno de mis 20 repos locales de apps, tomar el commit de git que Apple vio realmente (para las 8 apps publicadas, el último commit antes de su primera aprobación; para las 11 rechazadas, el último commit antes del reenvío del 5 de octubre). Después, comparar cada par de apps, 190 pares, en cinco aspectos que un filtro 4.3 podría mirar de forma plausible:
- Solapamiento del árbol de archivos: similitud de Jaccard de las rutas de archivos versionados (rutas compartidas divididas entre todas las rutas). Es el "esqueleto".
- Archivos idénticos: archivos que son idénticos byte a byte tras sustituir el nombre de la propia app.
- Solapamiento de líneas de Swift: proporción de líneas de código Swift distintas y no triviales que las dos apps tienen en común.
- Solapamiento del texto de la tienda: coincidencia de frases de tres palabras en la descripción de la App Store.
- Distancia entre capturas: el par de capturas de la tienda más cercano entre las dos apps, según un average hash de 256 bits (cuanto más bajo, más parecidas).

Primero el resultado honesto, porque no me deja en buen lugar: las 11 rechazadas sí comparten un esqueleto. Su solapamiento mediano del árbol de archivos es de 0,76, frente a 0,56 en las apps publicadas. Comparten una mediana de 14 archivos idénticos por par frente a 5, y unas tres veces más líneas de Swift (0,067 frente a 0,021). Clockout y Odometer tienen árboles de archivos literalmente idénticos: los mismos siete archivos Swift, con los mismos nombres, en las mismas carpetas. Si el filtro de Apple mira la estructura del proyecto dentro del binario, mi tanda rechazada se ilumina.
Ahora la parte que Apple debería explicar. El par de apps más parecido de los 190 es Baseline Ledger y Fairway Ledger, mi diario de tenis y mi diario de golf. Comparten un tercio de sus líneas de Swift (0,333), 20 archivos idénticos, un árbol de archivos de 0,90, la descripción de tienda más parecida y las capturas más cercanas de cualquier par. Las dos se aprobaron con dos días de diferencia, el 22 y el 24 de septiembre. Las dos siguen publicadas hoy. Chain y Quiver comparten un árbol de archivos de 0,968. Las dos publicadas.

Y las cosas que un revisor humano mira de verdad, la página de la tienda y las capturas, no separan en absoluto los dos grupos. Solapamiento del texto de la tienda: 0,010 en pares rechazados, 0,009 en pares publicados. Distancia entre capturas: 76 frente a 82. Una persona que recorriera las fichas no podría saber que las apps rechazadas eran "más parecidas". Solo una máquina que comparara los paquetes podría.

El único archivo que tenían todas las apps rechazadas
La huella que separa limpiamente los grupos no es una puntuación de similitud. Es un archivo. Las 11 apps rechazadas incluían Sources/Pro.swift en su primer envío. Ninguna de las 8 apps publicadas lo tenía en su primera aprobación. Pro.swift es un paywall de StoreKit 2: la app es gratis y una compra única de $4,99 desbloquea la versión completa. Este es el principio del de Odometer, en el commit que revisó Apple:
// Sources/Pro.swift (odometer repo, commit af40d3658)
/// Odometer Pro: one non-consumable. Keeping one car on schedule is free forever; Pro is the
/// whole garage and the paperwork.
@MainActor
@Observable
final class Pro {
static let productID = "com.mattbusel.odometer.pro"
/// The first build that has Pro in it. Anything earlier had every feature.
static let firstFreemiumBuild = 2
enum Reason: String, Identifiable { case costs, garage, history, export, settings; var id: String { rawValue } }
private(set) var unlocked: Bool
private(set) var grandfathered = false
private(set) var product: Product?
var price: String { product?.displayPrice ?? "$4.99" }
func ask(_ why: Reason) { if !unlocked { paywall = why } }
...
}
Los archivos no son copias unos de otros (no hay dos apps rechazadas con un Pro.swift idéntico; cada una tiene su propio producto, su propio nivel gratuito y sus propios motivos para pasar a Pro). Pero la forma es la misma: un producto no consumible, una clase Pro, una hoja de paywall. Las apps publicadas se aprobaron sin él y solo pasaron a freemium más tarde, mediante actualizaciones enviadas el 26 de septiembre, el mismo día que las 11 apps nuevas. Esas actualizaciones pasaron sin problemas el 29 de septiembre.
Esto es lo que creo que está pasando de verdad, y Apple nunca lo dirá en voz alta. Una app gratuita totalmente nueva con un desbloqueo de $4,99, de una cuenta que suelta 11 así en un día, es exactamente la silueta de una granja de plantillas. El texto de la 4.3 y su norma hermana, la 4.2.6, hablan de "commercialized template or app generation services" (servicios comerciales de plantillas o de generación de apps). En 2026, con cualquier agente de programación capaz de escupir una app al día, la granja de plantillas y el desarrollador en solitario con Claude Code se ven iguales desde fuera. El filtro de Apple juzga la silueta, y el humano que da el visto bueno nunca abre la app. Correlación, no prueba: 19 apps son una muestra pequeña. Pero es una separación más limpia que cualquier cosa del texto de la guideline.
Lo que envié de vuelta y lo que recibí: nada
El rechazo por la 4.3 viene con nueve preguntas: qué hace la app, para quién es, en qué se diferencia, cómo la probaste, si comparte código con tus otras apps, etc. Las respondí todas, app por app, con honestidad. Incluidas las partes que probablemente me perjudicaron, como esta de la respuesta de Odometer:
"No shared framework or asset pack. Every screen, model, illustration and text is specific to Odometer. Two files follow a pattern I reuse: the StoreKit 2 purchase handling for its one non-consumable (the paywall's text, free/Pro split and look are specific to the app), and a test-only driver that steps through the app's screens to record the walkthrough video and is inactive in normal use."
Después presenté apelaciones ante el App Review Board mediante el formulario de Apple, que admite como máximo 5 apps y 2.000 caracteres por motivo, así que hicieron falta tres formularios (5 + 5 + 1). El argumento era sencillo: las 11 se rechazaron en un minuto con un texto idéntico palabra por palabra, así que no hubo ninguna revisión individual, y pedí que un humano abriera cada app.
Eso fue el 5 de octubre. Esta mañana busqué en mi bandeja de entrada cualquier cosa de Apple desde entonces. Hay correos de facturación de Apple Ads, un anuncio de reserva del iPhone Duo y un aviso de que las App Review Guidelines se revisaron el 16 de octubre. No hay ningún correo de App Review ni del App Review Board desde la segunda tanda del 12 de octubre, y nada en absoluto sobre las apelaciones. 13,8 días y contando.
Esa revisión del 16 de octubre es en sí un pequeño insulto. Apple reescribió siete partes de las guidelines (nuevas normas sobre recursos creativos y funciones ocultas, enlaces de pago, seguridad infantil). La Guideline 4.3 no fue una de ellas. En plena ola pública de rechazos 4.3 por lotes, la norma se quedó exactamente igual, palabra por palabra.
Las propias cifras de Apple dicen que no eres especial
Apple publica cada año un App Store Transparency Report. La edición de 2025 cuenta 9.100.620 envíos revisados y 2.093.244 rechazados, alrededor del 23%. La sección de Design, que incluye spam e imitaciones, suma 415.532 rechazos. La nota de prensa de Apple de mayo de 2026 dice que rechazó más de 371.000 envíos por copiar otras apps, por spam o por engañar a los usuarios.
Ahora mira la línea que nadie cita. El mismo informe cuenta 26.305 apelaciones contra retiradas de apps y 423 restauraciones. Eso es un 1,6%. En 2021, el director sénior de App Review de Apple dijo en un documento judicial que el equipo tenía más de 500 revisores humanos y que menos del 1% de los rechazos se apelan. Haz tú mismo la cuenta: 9,1 millones de envíos al año son unos 25.000 al día. 371.000 rechazos de tipo spam son unos 1.000 al día. Nadie abre 1.000 apps al día con cuidado. El lote de 30 segundos no es un fallo de ese sistema. Es el sistema.
Opiniones polémicas, ordenadas
- La 4.3 se ha convertido en un impuesto al volumen para los desarrolladores en solitario. No atrapa clones. Mis dos apps más parecidas están publicadas. Atrapa a las cuentas que publican más de lo que Apple cree que debería publicar una persona. En la era de la programación con IA, eso es todo desarrollador indie que sea mínimamente bueno.
- El App Review Board es un agujero negro para los rechazos por lotes. Mi apuesta: estas 11 apelaciones no reciben respuesta humana antes de noviembre, y si alguna vez la reciben, será un párrafo predefinido para las 11.
- Apple nunca publicará cifras de la 4.3 por sí misma. El informe de transparencia solo enumera "4.3.0 Spam" para las retiradas (418 apps), nunca para los rechazos, porque un recuento por guideline mostraría cuánto de la lucha contra el "spam" es en realidad un freno a los desarrolladores nuevos.
- Las actualizaciones pasan porque las actualizaciones ya le dan dinero a Apple. Una actualización de una app publicada es una cantidad conocida con historial de pagos. Una app nueva es un coste. Todas las cuentas de este artículo recibieron aprobaciones de actualizaciones durante las mismas semanas en que mataban sus apps nuevas. No es una coincidencia, es un modelo de negocio.
- Google se va a comer esto. La app de Martin estaba en Google Play una semana antes de que Apple la rechazara por segunda vez. Cuando el primer lanzamiento de los desarrolladores indie se mude a Android, el discurso de "calidad" de Apple se volverá mucho más discreto.
Cómo sobrevivir a un rechazo por spam de la Guideline 4.3
Esto es lo que haría de otra forma, a partir de los datos anteriores y de las propias páginas de Apple. Es el consejo que ahora sigo yo mismo.
- Nunca envíes apps nuevas en lote. Una o dos apps nuevas por cuenta y por semana. Los "14 apps in 13 days" de Porsche y mis "11 en un día" recibieron la misma respuesta. Las actualizaciones de apps publicadas pueden ir tan rápido como quieras.
- Responde y no reenvíes. El rechazo lo dice, y yo lo ignoré. Mis reenvíos cayeron en un temporizador de siete días y murieron en 27 segundos. Contesta las nueve preguntas en App Store Connect y espera.
- Lanza las apps nuevas sin paywall y añade las compras dentro de la app en una actualización. 0 de mis 8 apps aprobadas tenían paywall en su primera aprobación; 11 de 11 apps rechazadas sí. Muestra pequeña, pero es la única separación limpia que encontré, y las actualizaciones freemium pasaron siempre.
- Si tus apps son variantes, fusiónalas. La 4.3(a) te dice literalmente que publiques una sola app y vendas las variantes como compras dentro de la app. Si un revisor pudiera describir dos de tus apps con una sola frase, lo hará.
- Reserva una llamada con App Review. Apple ofrece citas de 30 minutos por Webex con App Review para hablar de las guidelines. Casi nadie lo menciona. Es el único canal en el que un humano tiene que mirarte. Es mi próximo paso.
- Apela con datos concretos, una apelación por envío. La página de apelaciones de Apple pide "specific reasons why you believe your app complies" (motivos concretos por los que crees que tu app cumple). Las marcas de tiempo de un rechazo por lotes son concretas. Hasta ahora no han bastado, así que combínalas con el punto 5.
Si quieres el pipeline con el que se crearon y publicaron estas 20 apps (desde un PC con Windows, sin Mac), la guía completa de iOS en Windows lo cubre, y cuánto costó crear 20 apps reales tiene la parte del dinero.
Las cifras hasta ahora
- Rechazadas por la 4.3, dos veces: 11 apps (22 rechazos), 5 y 12 de octubre de 2026
- Tiempo para rechazar 11 apps: 30 segundos (5 oct), 27 segundos (12 oct)
- Orden de envío frente a orden de rechazo: Spearman -0,06 y 0,06 (ninguna relación)
- Espera en la segunda ronda: de 167,7 a 167,9 horas para las 11 (Apple dice que el 90% en menos de 48 h)
- Apelaciones presentadas: 3 formularios que cubren 11 apps, 5 de octubre. Respuestas: 0 tras 13,8 días (bandeja revisada a la 1:10 PM ET del 19 de octubre)
- Publicadas hoy en la App Store de EE. UU.: 8 apps (consulta a iTunes, 1:12 PM ET del 19 de octubre), sin cambios desde el 17 de octubre
- Par más parecido de los 190: Baseline Ledger + Fairway Ledger, 33% de líneas de Swift compartidas. Las dos publicadas.
- Paywall en el primer envío: 11 de 11 apps rechazadas, 0 de 8 apps aprobadas
Los datos y cómo volver a obtenerlos
Marcas de tiempo de las decisiones: los 22 correos "There's an issue with your submission" del remitente de App Review de Apple, extraídos de Gmail con sus líneas "Submitted:" (Pacific Daylight Time) el 17 de octubre y revisados de nuevo el 19 de octubre a la 1:10 PM, hora del Este, por si había algo más reciente (no lo había). Huellas: fingerprint.py ejecutado a la 1:19 PM, hora del Este, del 19 de octubre sobre 20 repos locales, cada uno en el commit anterior a su envío decisivo (git rev-list -1 --before=...), leyendo los archivos con git show, excluyendo los PNG de las comparaciones de archivos y sustituyendo el nombre de la propia app por un marcador antes de calcular los hashes. Estado de publicación: la consulta a la iTunes Search API de mi cuenta de desarrollador, 1:12 PM, hora del Este. Las publicaciones de @krPorsche918, @vovalukashov y @martindonadieu se capturaron de X hacia la 1:15 PM, hora del Este, del 19 de octubre, reales y sin editar.
Así que, @martindonadieu, @vovalukashov, @krPorsche918: una petición a cada uno, revisa tus correos de rechazo. ¿Llegaron con segundos de diferencia, y tus reenvíos esperaron exactamente una semana? Si tres cuentas más muestran el mismo temporizador de 168 horas, esto deja de ser mi teoría. Y si eres cualquier otra persona: ¿te ha respondido alguna vez el App Review Board de Apple a una apelación de la 4.3, y cuánto tardó? Deja tus cifras en los comentarios.
¿Creas apps de iPhone sin Mac y quieres el pipeline montado en tu propio repo (firma, capturas, envío con fastlane y las notas de revisión que uso ahora)? El No-Mac iOS Pipeline cuesta $299, con tu primera build de TestFlight en 5 días hábiles.
Publicado originalmente aquí, en tensorust.com, el 19 de octubre de 2026. También en dev.to. Relacionado: Tiempo de revisión en la App Store, Crear una app de iOS en Windows, Apps de iPhone a precio cerrado.
Lee a continuación
- Dev · 18 oct 2026 · 29 min de lecturaDesarrollo para iOS en Windows: la guía completa (21 apps, sin Mac)
- Dev · 18 oct 2026 · 13 min de lecturaTiempo de revisión en la App Store: 64 decisiones reales, mediana de 73 horas
- Dev · 17 oct 2026 · 12 min de lecturaCoste de desarrollar una app de iPhone: 20 apps reales, $99 en tarifas, 8 aprobadas