<!--
{
  "availability" : [
    "iOS: 16.0.0 -",
    "iPadOS: 16.0.0 -",
    "macCatalyst: 16.0.0 -",
    "macOS: 13.0.0 -",
    "tvOS: 18.4.0 -",
    "visionOS: 2.4.0 -"
  ],
  "documentType" : "symbol",
  "framework" : "BackgroundAssets",
  "identifier" : "/documentation/BackgroundAssets",
  "metadataVersion" : "0.1.0",
  "role" : "Framework",
  "symbol" : {
    "kind" : "Framework",
    "modules" : [
      "Background Assets"
    ],
    "preciseIdentifier" : "BackgroundAssets"
  },
  "title" : "Background Assets"
}
-->

# Background Assets

Improve or eliminate the time people wait while your app downloads assets.

## Overview

Let the system manage your asset downloads on people’s devices for you according to your preferences, and optionally, host your assets on Apple servers. For example, a game might specify that the system downloads tutorial assets before first launch and other assets on demand — such as level packs, 3D character models, and textures — as a player progresses during gameplay. The default implementation of Managed Background Assets handles downloads, updates, compression, and more for you. If you choose Apple-Hosted Background Assets, you upload your assets to App Store Connect and maintain them there, similar to app builds.

![A graphic containing the framework’s logo and several circular progress indicators that show the download status of additional content such as audio, images, and achievements. Each progress indicator displays an icon that represents that specific content type such as a music note for audio.](images/com.apple.backgroundassets/media-4132858~dark@2x.png)

> visionOS availability:
> For compatible iPad and iPhone apps, Background Assets is available in visionOS 1.0 and later. For apps built for visionOS, Background Assets is available in visionOS 2.4 and later.

To use these features:

1. Group your assets into asset packs containing manifest files that specify a download policy and other details. You can specify that the system downloads essential asset packs before launch, prefetches others without blocking launch, and downloads some only on demand when you need them. For more information, see <doc://com.apple.backgroundassets/documentation/BackgroundAssets/creating-managed-asset-packs>.
1. Add a managed Background Download extension to your project and configure your project accordingly. Optionally, customize your downloader extension and add code to your app that downloads on-demand assets when needed. For more information, see <doc://com.apple.backgroundassets/documentation/BackgroundAssets/downloading-apple-hosted-asset-packs>.
1. For either Apple-hosted or self-hosted asset packs, before you distribute your app, test your code using a local mock server included in your Xcode install. For more information, see <doc://com.apple.backgroundassets/documentation/BackgroundAssets/testing-asset-packs-locally>.
1. For Apple-hosted assets, upload your asset packs to App Store Connect before you distribute your app through TestFlight or the App Store. For more information, see the [Overview of Apple-hosted asset packs](https://developer.apple.com/help/app-store-connect/manage-asset-packs/overview-of-apple-hosted-asset-packs) in App Store Connect Help.

Alternatively, you can manage and host asset downloads yourself using the low-level Background Assets APIs. For more information, see [Configuring an unmanaged Background Assets project](/documentation/BackgroundAssets/configuring-an-unmanaged-background-assets-project) and [Downloading essential assets in the background](/documentation/BackgroundAssets/downloading-essential-assets-in-the-background).

> Important:
> Use the Background Assets framework only to download additional assets for your app; don’t use it for any other purposes. For example, don’t collect or transmit data to identify a user or device or to perform advertising or advertising measurement.

## Topics

### Essentials

[Creating managed asset packs](/documentation/BackgroundAssets/creating-managed-asset-packs)

Create managed asset packs, choose download options, and upload Apple-hosted asset packs  to App Store Connect.

[Downloading Apple-hosted asset packs](/documentation/BackgroundAssets/downloading-apple-hosted-asset-packs)

Configure your project and write the code to download asset packs hosted by Apple.

[Testing asset packs locally](/documentation/BackgroundAssets/testing-asset-packs-locally)

Test your system-managed asset packs using a mock server on your Mac.

[Reducing download and storage demands with localized asset packs](/documentation/BackgroundAssets/reducing-download-and-storage-demands-with-localized-asset-packs)

Improve peoples’ experience of your app by downloading only immediately needed language assets.

### Managed asset packs

[`AssetPack`](/documentation/BackgroundAssets/AssetPack)

An archive of assets that the system downloads together.

[`AssetPackManager`](/documentation/BackgroundAssets/AssetPackManager)

An actor that manages asset packs.

[`AssetPackManifest`](/documentation/BackgroundAssets/AssetPackManifest)

A manifest of asset packs that are available to download.

[`ManagedDownloaderExtension`](/documentation/BackgroundAssets/ManagedDownloaderExtension)

An app extension that uses the system implementation to schedule asset-pack downloads automatically.

  <doc://com.apple.documentation/documentation/BundleResources/Information-Property-List/BAAppGroupID>

  <doc://com.apple.documentation/documentation/BundleResources/Information-Property-List/BAHasManagedAssetPacks>

### Managed asset packs

[`BAAssetPack`](/documentation/BackgroundAssets/BAAssetPack)

An archive of assets that the system downloads together.

[`BAAssetPackStatus`](/documentation/BackgroundAssets/BAAssetPackStatus)

The status of an asset pack.

[`BAAssetPackManager`](/documentation/BackgroundAssets/BAAssetPackManager)

A class that manages asset packs.

[`BAAssetPackManifest`](/documentation/BackgroundAssets/BAAssetPackManifest)

A manifest of asset packs that are available to download.

[`BAManagedDownloaderExtension`](/documentation/BackgroundAssets/BAManagedDownloaderExtension)

An application extension that uses the system implementation to schedule asset-pack downloads automatically.

[`BAManagedAssetPackDownloadDelegate`](/documentation/BackgroundAssets/BAManagedAssetPackDownloadDelegate)

An object that handles status updates when downloading an asset pack.

  <doc://com.apple.documentation/documentation/BundleResources/Information-Property-List/BAAppGroupID>

  <doc://com.apple.documentation/documentation/BundleResources/Information-Property-List/BAHasManagedAssetPacks>

### Apple-hosted managed asset packs

  <doc://com.apple.documentation/documentation/BundleResources/Information-Property-List/BAUsesAppleHosting>

### Self-hosted unmanaged asset packs

[`AssetPackManifest`](/documentation/BackgroundAssets/AssetPackManifest)

A manifest of asset packs that are available to download.

[`BAAssetPackManifest`](/documentation/BackgroundAssets/BAAssetPackManifest)

A manifest of asset packs that are available to download.

### Unmanaged asset downloads

[Configuring an unmanaged Background Assets project](/documentation/BackgroundAssets/configuring-an-unmanaged-background-assets-project)

Manage and download individual assets yourself by configuring your app and extension targets.

[Downloading essential assets in the background](/documentation/BackgroundAssets/downloading-essential-assets-in-the-background)

Fetch the assets your app requires before its first launch using an app extension and the Background Assets framework.

  <doc://com.apple.documentation/documentation/BundleResources/Information-Property-List/BAManifestURL>

  <doc://com.apple.documentation/documentation/BundleResources/Information-Property-List/BAInitialDownloadRestrictions>

  <doc://com.apple.documentation/documentation/BundleResources/Information-Property-List/BAEssentialMaxInstallSize>

  <doc://com.apple.documentation/documentation/BundleResources/Information-Property-List/BAMaxInstallSize>

[`BADownloadManager`](/documentation/BackgroundAssets/BADownloadManager)

An object that manages the queue of scheduled asset downloads.

[`BADownloaderExtension`](/documentation/BackgroundAssets/BADownloaderExtension-qwaw)

An interface for reacting to app life-cycle events and processing concluded asset downloads while your app isn’t running.

[`BADownloaderExtension`](/documentation/BackgroundAssets/BADownloaderExtension-zuvm)

An interface for reacting to app life-cycle events and processing concluded asset downloads while your app isn’t running.

[`BADownloaderExtensionConfiguration`](/documentation/BackgroundAssets/BADownloaderExtensionConfiguration)

[`BAURLDownload`](/documentation/BackgroundAssets/BAURLDownload)

An object that represents a remote asset to download.

[`BADownload`](/documentation/BackgroundAssets/BADownload)

An object that represents an in-progress or concluded asset download.

### Errors

[`ManagedBackgroundAssetsError`](/documentation/BackgroundAssets/ManagedBackgroundAssetsError)

An error for a managed asset pack.

[`BAAssetPackIdentifierErrorKey`](/documentation/BackgroundAssets/BAAssetPackIdentifierErrorKey)

The `-[NSError userInfo]` key for an asset pack’s identifier.

[`BAManagedErrorDomain`](/documentation/BackgroundAssets/BAManagedErrorDomain)

The error domain for managed asset packs.

[`BAManagedErrorCode`](/documentation/BackgroundAssets/BAManagedErrorCode)

An error code for a managed asset pack.

[`BAErrorDomain`](/documentation/BackgroundAssets/BAErrorDomain)

[`BAErrorCode`](/documentation/BackgroundAssets/BAErrorCode)

### Macros

[`BA_EXPORT`](/documentation/BackgroundAssets/BA_EXPORT)

[`BA_HIDDEN`](/documentation/BackgroundAssets/BA_HIDDEN)

[`BA_HIDDEN_EXTERN`](/documentation/BackgroundAssets/BA_HIDDEN_EXTERN)



---

Copyright &copy; 2026 Apple Inc. All rights reserved. | [Terms of Use](https://www.apple.com/legal/internet-services/terms/site.html) | [Privacy Policy](https://www.apple.com/privacy/privacy-policy)
