Application Support es un directorio en el sandbox de la aplicación iOS diseñado para almacenar datos auxiliares necesarios para el funcionamiento de la aplicación, pero no creados directamente por el usuario. Según Apple File System Basics (2024), este directorio es óptimo para archivos de configuración, bases de datos SQLite de Core Data, documentos en caché y otros datos que la aplicación genera por sí misma. A diferencia del Directorio Documents, Application Support no aparece en iTunes File Sharing y el usuario no tiene acceso directo a él, lo que protege los datos de servicio contra eliminación accidental.
Puntos clave
Application Support es un directorio en el sandbox de la aplicación iOS diseñado para almacenar datos que la aplicación crea y utiliza para su funcionamiento, pero que no son documentos de usuario. Este es el lugar principal para configuraciones, bases de datos, metadatos en caché y otros archivos auxiliares.
iOS designa Application Support como una capa intermedia entre Documents (datos de usuario) y Caches (datos temporales). Los archivos en Application Support pueden ser relativamente permanentes, pero el usuario no debe tener acceso directo a ellos — esto lo distingue del Directorio Documents.
Según la Documentación para Desarrolladores de Apple (2024), Application Support es el lugar recomendado para almacenar bases de datos SQLite de Core Data, archivos Realm, configuraciones en formato JSON/plist, materiales de referencia descargados y otros datos que la aplicación utiliza pero que el usuario no creó explícitamente.
Importante: por defecto, Application Support está incluido en la copia de seguridad de iCloud e iTunes. Si la aplicación almacena grandes cantidades de datos en este directorio que se pueden recrear (por ejemplo, guías descargadas), debe establecer la bandera isExcludedFromBackup para los archivos correspondientes.
En Swift, la ruta al Directorio Application Support se obtiene a través de FileManager.urls(for: .applicationSupportDirectory). Apple recomienda crear un subdirectorio con el nombre de la aplicación dentro de Application Support para aislar los datos.
import Foundation
let fileManager = FileManager.default
guard let appSupportURL = fileManager.urls(
for: .applicationSupportDirectory,
in: .userDomainMask
).first else { return }
// Create app subdirectory
let bundleID = Bundle.main.bundleIdentifier ?? "com.example.app"
let appDir = appSupportURL.appendingPathComponent(bundleID)
try fileManager.createDirectory(
at: appDir,
withIntermediateDirectories: true
)
Objective-C utiliza NSSearchPathForDirectoriesInDomains con NSApplicationSupportDirectory. Al igual que con Swift, se recomienda crear un subdirectorio hijo con el nombre de la aplicación.
@import Foundation;
NSArray *paths = NSSearchPathForDirectoriesInDomains(
NSApplicationSupportDirectory,
NSUserDomainMask,
YES
);
NSString *appSupportPath = paths.firstObject;
NSString *appDir = [appSupportPath stringByAppendingPathComponent:@"com.example.app"];
En el primer inicio, el directorio Application Support puede no existir — debe crearse usando createDirectory(at:withIntermediateDirectories:). Esto lo distingue del Directorio Documents, que el sistema crea automáticamente.
Application Support es adecuado para una amplia gama de datos que la aplicación utiliza para su funcionamiento. Elegir los datos correctos para este directorio mejora la organización del sistema de archivos y simplifica las copias de seguridad.
Los archivos SQLite de Core Data se crean en Application Support por defecto. Realm también recomienda colocar las bases de datos en este directorio. Esto aísla los documentos de usuario de las bases de datos internas de la aplicación.
Archivos JSON, plist, XML con configuraciones de la aplicación, Feature Flags, metadatos de usuario en caché (pero no tokens de autenticación — para ellos usa Keychain).
| Tipo de dato | Application Support | Alternativa |
|---|---|---|
| SQLite Core Data | Sí (por defecto) | — |
| Configuraciones .plist / .json | Sí | UserDefaults (para simples) |
| Materiales de referencia descargados | Sí | Documents (si para el usuario) |
| Registros de la aplicación | Condicionalmente | Caches (para registros) |
| Tokens de autenticación | No | Keychain |
Criterio de selección: si los datos son creados y utilizados por la aplicación, no por el usuario, y deben persistir entre ejecuciones — su lugar está en Application Support.
Core Data es uno de los principales consumidores de Application Support. Al crear un NSPersistentContainer, Core Data coloca automáticamente los archivos SQLite en Library/Application Support con un nombre único basado en el nombre del modelo.
Entender dónde Core Data almacena los archivos es fundamental para las migraciones, la copia de seguridad y la depuración. Archivos principales: .sqlite (datos), .sqlite-wal (Write-Ahead Log), .sqlite-shm (Shared Memory).
import CoreData
// Create Core Data container
let container = NSPersistentContainer(name: "MyAppModel")
// Custom store URL directory
guard let appSupportURL = FileManager.default
.urls(for: .applicationSupportDirectory,
in: .userDomainMask).first else { return }
let storeURL = appSupportURL
.appendingPathComponent("MyAppModel.sqlite")
let description = NSPersistentStoreDescription(url: storeURL)
container.persistentStoreDescriptions = [description]
Al usar la sincronización de Core Data con CloudKit, el archivo SQLite permanece en Application Support y CloudKit actúa como capa de transporte. En este caso, es importante no excluir los archivos de la copia de seguridad — de lo contrario, la sincronización entre dispositivos podría fallar.
La diferencia entre Application Support y Documents es una de las más importantes para organizar correctamente la estructura de archivos de la aplicación iOS. Elegir incorrectamente puede llevar a que el usuario elimine accidentalmente datos importantes de la aplicación o, por el contrario, no pueda encontrar sus archivos.
| Parámetro | Application Support | Directorio Documents |
|---|---|---|
| Acceso del usuario | No (oculto) | A través de iTunes File Sharing |
| Tipo de dato | Datos de servicio de la aplicación | Documentos de usuario |
| Copia de seguridad iCloud | Sí (por defecto) | Sí (por defecto) |
| Riesgo de eliminación | Bajo (sin acceso) | Medio (accesible al usuario) |
| Ejemplo | SQLite Core Data | PDF exportado |
Regla simple: si el usuario debe ver el archivo y poder eliminarlo — usa Documents. Si el archivo es necesario para que la aplicación funcione pero el usuario no necesita saber de él — usa Application Support. Si los datos se pueden recrear — usa Caches.
Trabajar con Application Support requiere considerar varias características que lo distinguen de otros directorios del sandbox. Seguir estas prácticas ayuda a evitar pérdida de datos, problemas de migración y comportamientos inesperados de la aplicación.
A diferencia de Documents, Application Support puede no existir en el primer inicio. Usa createDirectory(at:withIntermediateDirectories:) con el parámetro withIntermediateDirectories: true para garantizar la creación de toda la cadena de subdirectorios.
Crea un subdirectorio con el Bundle Identifier dentro de Application Support. Esto aísla los datos de tu aplicación de los de otras aplicaciones (aunque el sandbox ya proporciona aislamiento) y simplifica la migración al cambiar de proveedor.
import Foundation
enum AppSupport {
static func ensureDirectory() throws -> URL {
let fm = FileManager.default
let baseURL = try fm.url(
for: .applicationSupportDirectory,
in: .userDomainMask,
appropriateFor: nil,
create: true
)
let appDir = baseURL
.appendingPathComponent(Bundle.main.bundleIdentifier ?? "default")
try fm.createDirectory(at: appDir, withIntermediateDirectories: true)
return appDir
}
}
Seguir estas prácticas garantiza que los datos de servicio de la aplicación estén organizados correctamente, protegidos contra la eliminación accidental por parte del usuario y se restauren correctamente desde las copias de seguridad.
Preguntas frecuentes
Sí, Application Support no se crea automáticamente al instalar la aplicación. A diferencia de Documents y Caches, que el sistema crea en el primer inicio, Application Support debe ser creado por el desarrollador usando FileManager.createDirectory(at:withIntermediateDirectories:). Esto se hace normalmente en el método application(_:didFinishLaunchingWithOptions:).
No, a través de la interfaz estándar de iOS (Files, iTunes) el usuario no tiene acceso a Application Support. Sin embargo, cuando se elimina la aplicación en sí, todo el sandbox, incluido Application Support, se elimina por completo. La copia de seguridad de iCloud permanece hasta la restauración o eliminación manual.
Para videos descargados destinados al usuario, es mejor usar el Directorio Documents para que el usuario pueda gestionar esos archivos a través de Files. Si el video es parte del caché interno de la aplicación (por ejemplo, contenido de entrenamiento sin conexión), se puede usar Application Support con la bandera isExcludedFromBackup para archivos grandes.
Agrega versionado de subdirectorios dentro de Application Support. Al actualizar, verifica la versión actual de los datos y, si es necesario, crea un nuevo subdirectorio, conservando el anterior para rollback. Elimina el directorio antiguo solo después de confirmar que todos los usuarios han migrado exitosamente a la nueva versión de datos.
Indirectamente — sí. Si Application Support contiene decenas de miles de archivos pequeños, FileManager.enumerator puede ralentizar la inicialización. Se recomienda limitar el número de archivos en Application Support (no más de 1000) y usar bases de datos (Core Data, Realm) en lugar de muchos archivos individuales para datos estructurados.
Resumen
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.
Lea también