<!--
{
  "availability" : [
    "iOS: 26.1 -",
    "iPadOS: 26.1 -",
    "macCatalyst: -"
  ],
  "documentType" : "symbol",
  "framework" : "AppMigrationKit",
  "identifier" : "/documentation/AppMigrationKit",
  "metadataVersion" : "0.1.0",
  "role" : "Framework",
  "symbol" : {
    "kind" : "Framework",
    "modules" : [
      "AppMigrationKit"
    ],
    "preciseIdentifier" : "AppMigrationKit"
  },
  "title" : "AppMigrationKit"
}
-->

# AppMigrationKit

Perform a one-time transfer of your app’s on-device data to or from a device running another platform.

## Overview

Use AppMigrationKit to export your app’s on-device data to another device running a non-Apple platform, or to import from another platform, or both.

To participate in a cross-platform migration, your app creates an [app extension](https://developer.apple.com/app-extensions/) that conforms to the [`AppMigrationExtension`](/documentation/AppMigrationKit/AppMigrationExtension) protocol and at least one of its subprotocols.
The protocols you adopt indicate whether your app imports data, exports data, or both.

If your app also stores data in the cloud, have the app on the other platform retrieve that data after after the migration completes. Similarly, when importing from another platform, retrieve any cloud data after migration completes.

> Note: AppMigrationKit only supports migration to and from non-Apple platforms, such as Android. The system doesn’t use the framework for migration between iOS or iPadOS devices. The framework also has no functionality in iOS apps running in visionOS or in macOS on Apple silicon. The framework ignores calls from Mac apps built with Mac Catalyst.

## Topics

### App extensions

[`AppMigrationExtension`](/documentation/AppMigrationKit/AppMigrationExtension)

An app extension you extend to participate in data export and import.

  <doc://com.apple.documentation/documentation/BundleResources/Entitlements/com.apple.developer.app-migration.data-container-access>

### Export operations

[`ResourcesExportingWithOptions`](/documentation/AppMigrationKit/ResourcesExportingWithOptions)

A protocol for exporting transportable resources in an archive format.

[`ResourcesExporting`](/documentation/AppMigrationKit/ResourcesExporting)

A protocol for exporting transportable resources in a streaming archive format when the destination platform doesn’t require special migration options.

### Import operations

[`ResourcesImporting`](/documentation/AppMigrationKit/ResourcesImporting)

A protocol for exporting transportable resources in a streaming archive format.

### Migration status

[`MigrationStatus`](/documentation/AppMigrationKit/MigrationStatus)

A type the containing app uses to determine the status of a completed import.

### Migration code tests

[`AppMigrationTester`](/documentation/AppMigrationKit/AppMigrationTester)

A test-only type your app uses to test app migration extensions.



---

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)
