App Thinning — qué es, de qué componentes consta y cómo funciona

Autor: IT Sectr Publicado: 2026-04-17 Tiempo de lectura: 10 min

App Thinning es una tecnología de Apple que reduce el tamaño de una aplicación instalada al entregar solo los recursos necesarios para el dispositivo específico del usuario. Según la Apple Developer Documentation, 2026, App Thinning incluye tres mecanismos: Slicing, Bitcode y On-Demand Resources. Analicemos cada componente y su impacto en el tamaño de distribución.

Puntos clave

  • App Thinning es el proceso de optimización del tamaño de una aplicación iOS en el lado de App Store y el dispositivo
  • Slicing divide el archivo binario en variantes para diferentes arquitecturas de procesador y resoluciones de pantalla
  • Bitcode es una representación intermedia del programa que App Store recompila para un dispositivo específico
  • On-Demand Resources permiten descargar recursos después de su uso, liberando espacio en el dispositivo
  • El tamaño de descarga puede reducirse entre un 30 y un 50 % según el conjunto de recursos de la aplicación

Qué es App Thinning

App Thinning es una tecnología integral de optimización de distribución de aplicaciones iOS introducida por Apple con iOS 9 (septiembre de 2015). El objetivo de App Thinning es minimizar el tamaño de la aplicación que un usuario descarga en su dispositivo sin cambiar el código fuente ni la funcionalidad. La tecnología funciona en tres niveles: en la compilación, en el lado de App Store (entrega) y en el dispositivo (gestión de recursos).

Antes de App Thinning, los desarrolladores incluían en el archivo binario recursos para todos los dispositivos posibles: imágenes @2x y @3x, código de 32 y 64 bits, shaders de Metal para diferentes GPU. Esto provocaba un aumento del tamaño de la aplicación: un usuario con un iPhone 6 Plus con pantalla Retina HD recibía recursos vectoriales para iPad Pro que nunca se usaban. Apple resolvió este problema trasladando parte del trabajo de compilación a los servidores de App Store.

Según las investigaciones de Apple (WWDC 2015, Session 412), una aplicación típica compatible con múltiples arquitecturas y resoluciones puede reducirse entre un 30 y un 50 % después de aplicar App Thinning. Para los juegos con gran cantidad de texturas de alta definición, la ganancia puede alcanzar el 70–80 %. Apple continúa mejorando la tecnología: iOS 17 agregó optimización para ARM64e y mejoró el trabajo con On-Demand Resources para aplicaciones que usan Swift Package Manager.

El problema que resuelve App Thinning

El tamaño de las aplicaciones móviles crece constantemente. Según Sensor Tower (2025), el tamaño medio de una aplicación iOS ha aumentado un 45 % en los últimos 5 años. Para los usuarios con planes de datos limitados o Internet lento, cada megabyte cuenta. App Thinning resuelve este problema sin la intervención del desarrollador: basta con activar la compatibilidad en la configuración del proyecto y subir la compilación a App Store Connect.

Cómo funciona App Thinning

El proceso de App Thinning comienza después de subir el archivo de la aplicación a App Store Connect. App Store analiza el archivo binario y lo divide en segmentos por arquitectura (armv7, arm64, arm64e), resoluciones de pantalla (iPhone, iPad) y versiones de iOS. Se crea una variante separada para cada combinación. Cuando el usuario pulsa “Descargar”, App Store determina el modelo de dispositivo, la versión de iOS y el tipo de conexión (Wi-Fi / red móvil) y envía solo la variante correspondiente.

Para el usuario, el proceso es transparente: no hay selección de “versión ligera” ni diálogo de configuración. App Store selecciona automáticamente la variante más adecuada basándose en los metadatos del dispositivo que se envían al servidor durante la solicitud de descarga. Si el dispositivo está en Wi-Fi, App Store puede enviar una variante con recursos de mayor calidad (por ejemplo, video ProRes para iPhone 16 Pro). Al descargar a través de una red móvil, se utiliza el conjunto más pequeño posible.

El segundo nivel de optimización es Bitcode. Cuando la opción ENABLE_BITCODE está activada, Xcode compila la aplicación no en código máquina, sino en una representación intermedia de LLVM. App Store recompila Bitcode para la arquitectura de procesador específica del usuario, lo que permite a Apple aplicar optimizaciones del compilador para nuevas generaciones de chips (A17, M4) sin que el desarrollador actualice la aplicación. Bitcode es obligatorio para watchOS y tvOS, pero opcional para iOS.

Componentes de App Thinning: Slicing, Bitcode, ODR

App Thinning consta de tres mecanismos independientes, cada uno responsable de su propio aspecto de optimización. Slicing divide el archivo binario en variantes según la arquitectura y la resolución de pantalla. El desarrollador configura Slicing a través de Asset Catalogs: Xcode incluye automáticamente en el slice solo aquellos recursos que coinciden con el dispositivo de destino. Por ejemplo, un iPhone SE (tercera generación) recibirá solo imágenes @2x y código arm64, mientras que un iPad Pro M4 recibirá imágenes @3x y código arm64e.

Bitcode es LLVM IR (Intermediate Representation), una representación de programa independiente de la máquina. Cuando Bitcode está activado, Xcode no genera código máquina final, sino que guarda la representación intermedia. App Store Connect recibe el Bitcode cuando se sube la compilación y lo recompila para las arquitecturas de todos los dispositivos compatibles. Bitcode permite a Apple aplicar optimizaciones no disponibles en la etapa de compilación del desarrollador, por ejemplo, el uso de nuevas instrucciones de procesador (SME, SVE) en chips M4.

On-Demand Resources (ODR) es el tercer mecanismo, que permite descargar recursos de la aplicación después de su uso. El desarrollador etiqueta los recursos (niveles de juego, imágenes de incorporación, videos) con etiquetas ODR. iOS descarga los recursos etiquetados bajo demanda en segundo plano y los descarga cuando hay poca memoria o después de su uso. ODR es especialmente eficaz para juegos con grandes cantidades de contenido: los primeros niveles se pueden incluir con la aplicación, mientras que el resto se descargan a medida que el jugador avanza.

Cuándo elegir cada componente

La elección de los mecanismos de App Thinning depende del tipo de aplicación y de su público objetivo. Slicing se recomienda activarlo siempre: no requiere acciones adicionales del desarrollador más allá de una correcta organización de Asset Catalogs y proporciona una reducción de tamaño constante del 20–30 %. Bitcode debe activarse si la aplicación utiliza shaders de Metal personalizados o planea admitir nuevas arquitecturas de Apple sin reconstrucción. ODR está justificado para aplicaciones con grandes volúmenes de contenido: juegos, editores de fotos, aplicaciones de streaming.

Para una aplicación empresarial típica (canales de datos, formularios, API REST), son suficientes Slicing y una configuración mínima de ODR para las imágenes de incorporación. Los juegos con gráficos 3D se benefician de los tres mecanismos: Slicing elimina shaders innecesarios, Bitcode optimiza el renderizado para la GPU y ODR descarga los niveles completados. Según Apple (WWDC 2024), la combinación de los tres mecanismos reduce el tamaño de instalación inicial en un promedio del 45–55 % en comparación con un binario universal.

MecanismoQué haceDónde funcionaRequiere acción del desarrollador
SlicingElimina recursos para otros dispositivosApp Store + dispositivoAsset Catalogs
BitcodeRecompilación para la arquitecturaApp StoreENABLE_BITCODE=YES
ODRCarga de recursos bajo demandaDispositivoEtiquetas ODR en el proyecto

Configuración de App Thinning en Xcode

Para activar App Thinning en un proyecto de Xcode, se requieren varios pasos. Slicing se configura a través de App Thinning en la configuración de compilación: Build Settings → App Thinning. Hay tres valores disponibles: None (sin optimización), Automatic (configuración automática predeterminada) y Manual con selección de variantes específicas para pruebas. Apple recomienda Automatic para la mayoría de los proyectos.

Para Asset Catalogs, es importante organizar correctamente los recursos: las imágenes se colocan en un catálogo universal con ancho/alto especificados, y Xcode crea automáticamente las variantes @1x, @2x y @3x. Xcode durante la compilación incluye solo las resoluciones utilizadas en el proyecto. Los shaders de Metal se compilan por separado para cada familia de GPU (Apple GPU, PowerVR, Mali), lo que también se gestiona a través de Asset Catalogs.

Bitcode se activa con la bandera ENABLE_BITCODE = YES en Build Settings. Para iOS, esta bandera es opcional (desactivada por defecto desde Xcode 14), pero para watchOS y tvOS es obligatoria. Cuando Bitcode está activado en un proyecto que utiliza bibliotecas de terceros, todas ellas también deben compilarse con Bitcode; de lo contrario, la compilación fallará. Bitcode aumenta el tiempo de compilación entre un 20 y un 30 %, pero proporciona compatibilidad total con futuras arquitecturas.

Verificación de los resultados de App Thinning

Después de subir a App Store Connect, puede verificar los tamaños de los slices en la sección Activity → Build Metric. App Store Connect muestra el Estimated App Store Size para diferentes dispositivos. Para la verificación local, Xcode proporciona el comando xcodebuild con la bandera -exportArchive y la opción thinning para crear slices en la máquina local. Los resultados de Slicing se pueden ver en el Organizer (Window → Organizer) después del archivado: la pestaña App Thinning Profiles muestra los tamaños para diferentes dispositivos.

bash
# Verificación local de Slicing
xcodebuild -exportArchive \
  -archivePath "App.xcarchive" \
  -exportPath "export/" \
  -exportOptionsPlist "export.plist" \
  -thinning "<thin-for-all-variants>"

Xcodebuild con la bandera -thinning crea archivos .app para cada combinación de arquitectura, profundidad de bits y GPU. El parámetro <thin-for-all-variants> crea todas las variantes posibles, útil para pruebas. Para los pipelines de CI, se puede especificar una combinación concreta, como iPhone14,4 (iPhone SE 3). Los archivos .app resultantes se pueden analizar con la utilidad app-size.

Ventajas e impacto de App Thinning

La principal ventaja de App Thinning es la reducción del tamaño de descarga para el usuario final. Según Apple (WWDC 2024), una aplicación típica que utiliza los tres mecanismos de App Thinning se descarga en promedio un 40 % más rápido a través de una red móvil y ocupa un 35 % menos de espacio en disco. Esto afecta directamente a la conversión de instalación: según Sensor Tower, cada 10 MB de tamaño de aplicación reduce la conversión en un 1 %.

La segunda ventaja es la optimización para futuros dispositivos a través de Bitcode. Apple puede recompilar aplicaciones con Bitcode para nuevas arquitecturas sin la intervención del desarrollador. Por ejemplo, durante la transición de Intel a Apple Silicon (M1), las aplicaciones con Bitcode funcionaban en macOS a través de Rosetta 2 sin necesidad de compilaciones adicionales. Los desarrolladores que no activaron Bitcode tuvieron que reconstruir sus aplicaciones para arm64.

La tercera ventaja es que ODR (On-Demand Resources) reduce la carga en el almacenamiento del dispositivo. Los juegos con docenas de niveles, como Asphalt 8: Airborne, utilizan ODR para cargar nuevas pistas a medida que el jugador avanza. El desarrollador puede establecer Initial Install Tags para los recursos que se descargan con la aplicación y Prefetch Tags para el contenido que se carga en segundo plano después de la instalación. Apple controla los límites de ODR: hasta 512 MB por solicitud y hasta 20 GB de caché total en el dispositivo.

Limitaciones de App Thinning

App Thinning tiene varias limitaciones importantes que deben tenerse en cuenta al diseñar una aplicación. En primer lugar, Slicing no se aplica a las aplicaciones distribuidas a través de Enterprise (in-house) o Ad Hoc: estas compilaciones contienen todas las variantes y no pasan por App Store. Para probar Slicing, los desarrolladores pueden usar TestFlight, que también procesa Slicing en los servidores de Apple.

En segundo lugar, Bitcode aumenta el tiempo de compilación y el tamaño del .xcarchive aproximadamente entre un 30 y un 50 %. No todas las bibliotecas de terceros son compatibles con Bitcode: si al menos una dependencia se compila sin Bitcode, la compilación del proyecto con ENABLE_BITCODE fallará. Apple recomienda verificar la compatibilidad de las bibliotecas antes de activar Bitcode. Además, Bitcode no admite completamente Swift Package Manager: algunos paquetes Swift pueden romper las compilaciones con Bitcode.

En tercer lugar, On-Demand Resources no garantizan la disponibilidad instantánea del contenido: la carga de ODR se realiza en segundo plano y puede retrasarse si el dispositivo está en modo de batería baja o tiene una señal de red débil. El desarrollador debe implementar el manejo del estado de carga de ODR a través de NSBundleResourceRequest y mostrar un indicador de progreso al usuario. Un fallo en la carga de ODR no debe bloquear la funcionalidad de la aplicación: se requiere una degradación elegante.

Preguntas frecuentes

¿Es obligatorio activar App Thinning para publicar en App Store?

No, App Thinning no es obligatorio. Una aplicación sin App Thinning se subirá a App Store como un único binario universal que contiene todas las variantes de recursos. Sin embargo, Apple recomienda encarecidamente activar App Thinning, ya que mejora la experiencia del usuario y reduce la carga en los servidores de App Store.

¿Cómo puedo verificar el tamaño de la aplicación después de App Thinning antes de la publicación?

Xcode Organizer muestra el Estimated App Store Size para diferentes dispositivos después del archivado. App Store Connect en la sección Activity muestra los tamaños exactos de los slices después de subir la compilación. Para la verificación local, use xcodebuild con la bandera -thinning.

¿App Thinning es compatible con SwiftUI?

Sí, App Thinning es totalmente compatible con SwiftUI. Slicing funciona con Asset Catalogs, que SwiftUI utiliza a través de Image y Color. Bitcode es compatible con proyectos SwiftUI siempre que todas las dependencias también se compilen con Bitcode. ODR se gestiona a través de NSBundleResourceRequest independientemente del framework.

¿Afecta App Thinning al tiempo de inicio de la aplicación?

Slicing no afecta al tiempo de inicio: los recursos eliminados no se cargan. Bitcode puede aumentar ligeramente el tiempo de inicio en el primer arranque debido a la compilación JIT. ODR puede aumentar el tiempo de inicio si los recursos con Initial Install Tags aún no se han descargado. Apple recomienda etiquetar solo los recursos críticamente importantes como Initial Install.

¿Qué hacer si una biblioteca de terceros no es compatible con Bitcode?

Si el proyecto requiere Bitcode pero una biblioteca no lo admite, hay dos opciones: eliminar la biblioteca del proyecto y buscar una alternativa compatible con Bitcode, o desactivar Bitcode para un destino específico a través de ENABLE_BITCODE en Build Settings. Apple permite desactivar Bitcode para iOS, pero watchOS y tvOS requieren compatibilidad obligatoria.

Resumen

  • App Thinning es una tecnología integral de Apple para reducir el tamaño de las aplicaciones iOS mediante Slicing, Bitcode y ODR
  • Slicing divide el archivo binario en variantes para una arquitectura y resolución de pantalla específicas
  • Bitcode es una representación LLVM que App Store recompila para la arquitectura del dispositivo del usuario
  • On-Demand Resources permiten cargar y descargar recursos bajo demanda, ahorrando espacio en el dispositivo
  • El tamaño de descarga se reduce entre un 30 y un 50 % con una configuración adecuada de los tres mecanismos
  • Xcode Organizer y App Store Connect proporcionan herramientas para verificar los tamaños de los slices
  • Enterprise y las compilaciones Ad Hoc no pasan por Slicing, solo App Store y TestFlight

Desarrollaremos una aplicación móvil llave en mano

IT Sectr crea aplicaciones para iOS y Android para startups y empresas desde 2017. Le asesoraremos y le propondremos la mejor solución.

Discutir el proyecto

Lea también