Unified Catalog

July 18, 2026 · View on GitHub

English | 简体中文

Catalog synchronization stores app-store metadata and images in a local directory for version control, bulk editing, and repeatable publishing.

Bulk Synchronization

First register apps in .fastforge/config.yaml, then run:

fastforge store catalog pull
fastforge store catalog push

The command processes all applications in configuration order. A failure for one application does not stop subsequent applications, but the process exits with an error if any application failed.

Default Directory

.fastforge/stores/
├── appstore/
│   └── com.example.myapp/
└── googleplay/
    └── com.example.myapp/

Synchronize App Store Separately

fastforge appstore catalog pull \
  --app com.example.myapp \
  --platform IOS \
  --output .fastforge/stores/appstore

fastforge appstore catalog push \
  --app com.example.myapp \
  --input .fastforge/stores/appstore \
  --dry-run

Directory structure:

<bundle-id>/
├── app.yaml
├── app_info.yaml
├── info/
├── versions/
│   └── IOS/
│       └── 1.0.0/
│           ├── version.yaml
│           └── en-US/
│               ├── localization.yaml
│               ├── screenshots/
│               └── previews/
└── .manifest.yaml
  • app_info.yaml manages primary, secondary, and subcategories.
  • version.yaml stores version-level fields.
  • localization.yaml stores locale-specific fields.
  • .manifest.yaml stores remote screenshot IDs and local verification data.
  • Push orders screenshots by local file name; use --dry-run before synchronizing.

Synchronize Google Play Separately

fastforge googleplay catalog pull \
  --package-name com.example.myapp \
  --output .fastforge/stores/googleplay

fastforge googleplay catalog push \
  --package-name com.example.myapp \
  --input .fastforge/stores/googleplay \
  --dry-run

Directory structure:

<package-name>/
├── app.yaml
├── listings/
├── screenshots/
│   └── <language>/
└── tracks/

Google Play screenshots are further divided by language and image type, including phone, 7-inch, 10-inch, TV, and Wear.

Safe Operating Sequence

  1. Run pull to retrieve the latest remote state.
  2. Edit YAML and images on a separate branch.
  3. Review the diff to avoid unintentionally deleting locales or screenshots.
  4. Preview with the individual store command's push --dry-run.
  5. Run the actual push after confirmation.