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.yamlmanages primary, secondary, and subcategories.version.yamlstores version-level fields.localization.yamlstores locale-specific fields..manifest.yamlstores remote screenshot IDs and local verification data.- Push orders screenshots by local file name; use
--dry-runbefore 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
- Run
pullto retrieve the latest remote state. - Edit YAML and images on a separate branch.
- Review the diff to avoid unintentionally deleting locales or screenshots.
- Preview with the individual store command's
push --dry-run. - Run the actual push after confirmation.