Skip to main content

migrate

Migrate metadata from/to fastlane format
Migrate metadata between fastlane’s deliver tool and App Store Connect CLI.

Quick Start

Subcommands

  • import - Import metadata from fastlane directory structure
  • export - Export metadata to fastlane directory structure
  • validate - Validate fastlane metadata without uploading
  • metadata - Bridge to asc metadata commands

Commands

migrate import

Import metadata from fastlane directory structure:
Flags:
  • --app - App Store Connect app ID (or ASC_APP_ID)
  • --version-id - App Store version ID (required unless Deliverfile app_version + platform)
  • --fastlane-dir - Path to fastlane directory (optional)
  • --dry-run - Preview changes without uploading
  • --output - Output format: json, table, markdown
  • --pretty - Pretty-print JSON output
Fastlane directory structure:

migrate export

Export current App Store metadata to fastlane directory structure:
Flags:
  • --app - App Store Connect app ID (or ASC_APP_ID)
  • --version-id - App Store version ID (required)
  • --output-dir - Output directory for fastlane structure (required)
  • --output - Output format: json, table, markdown
  • --pretty - Pretty-print JSON output

migrate validate

Validate fastlane metadata without making any API calls:
Flags:
  • --fastlane-dir - Path to fastlane directory (required)
  • --output - Output format: json, table, markdown
  • --pretty - Pretty-print JSON output
Character limits checked:
  • Description: 4000 characters
  • Keywords: 100 characters
  • What’s New (release notes): 4000 characters
  • Promotional Text: 170 characters
  • Name: 30 characters
  • Subtitle: 30 characters

Deliverfile Support

The import command supports reading configuration from a Deliverfile:
Supported fields:
  • app_identifier - App bundle ID (used to resolve app ID)
  • app_version - App version string (used to resolve version ID)
  • platform - Platform: ios, osx, appletvos, visionos
  • skip_metadata - Skip metadata import
  • skip_screenshots - Skip screenshot import

Metadata Fields

App Info (App-level)

  • name.txt - App name
  • subtitle.txt - App subtitle
  • privacy_url.txt - Privacy policy URL

Version (Version-level)

  • description.txt - App description
  • keywords.txt - Keywords (comma-separated)
  • release_notes.txt - What’s new / release notes
  • promotional_text.txt - Promotional text
  • support_url.txt - Support URL
  • marketing_url.txt - Marketing URL

Review Information

  • first_name.txt - Contact first name
  • last_name.txt - Contact last name
  • email_address.txt - Contact email
  • phone_number.txt - Contact phone
  • demo_user.txt - Demo account username
  • demo_password.txt - Demo account password
  • demo_required.txt - Demo account required (true/false)
  • notes.txt - Review notes

Examples

Import from Fastlane

Export to Fastlane

Validate Before Import

Migrate from Fastlane to asc metadata

Migration Workflow

From Fastlane to asc

  1. Validate current fastlane metadata:
  2. Import to App Store Connect:
  3. Pull into asc metadata format:
  4. Future updates use asc metadata:

From asc to Fastlane

  1. Export current metadata:
  2. Use with fastlane:

Screenshot Import

The import command supports uploading screenshots from the fastlane directory:
Supported display types:
  • iphone_65 - iPhone 6.5” (iPhone 14 Plus, etc.)
  • iphone_61 - iPhone 6.1” (iPhone 14, etc.)
  • iphone_58 - iPhone 5.8” (iPhone X, etc.)
  • iphone_55 - iPhone 5.5” (iPhone 8 Plus, etc.)
  • iphone_47 - iPhone 4.7” (iPhone 8, etc.)
  • iphone_40 - iPhone 4” (iPhone SE 1st gen)
  • iphone_35 - iPhone 3.5” (iPhone 4S)
  • ipad_129 - iPad Pro 12.9”
  • ipad_pro_11 - iPad Pro 11”
  • ipad_105 - iPad 10.5”
  • ipad_97 - iPad 9.7”
  • applewatch - Apple Watch
  • appletv - Apple TV
  • mac - Mac

Validation Issues

Example validation output:

Locale Normalization

Fastlane uses directory names like en-US, es-ES, ja, etc. The CLI automatically normalizes these to App Store Connect locale codes:
  • en-USen-US
  • es-ESes-ES
  • jaja
  • zh-Hanszh-Hans
  • zh-Hantzh-Hant

Skipped Items

The import command skips non-locale directories and reports them: