Metadata sync
gplay metadata treats your store front as code: per-locale listing text
and store images live in a directory you commit, review, and apply. The
metadata model page covers the semantics;
this is the working loop.
First sync: pull what's live
Section titled “First sync: pull what's live”gplay metadata pull # text listings → ./metadatagplay metadata images pull # store images → ./metadata/<locale>/imagesgit add metadata && git commit -m "snapshot store front"pull writes one directory per locale with title.txt,
short_description.txt, full_description.txt, optional video.txt — the
same names fastlane supply uses, so an existing fastlane tree drops in.
Edit, validate, preview
Section titled “Edit, validate, preview”$EDITOR metadata/en-US/full_description.txt
# Offline checks: field limits (30/80/4000 chars), locales, file shape.gplay metadata validate
# Exactly what would change, with no HTTP call.gplay metadata apply --dry-rungplay metadata applyapply is additive: it upserts the locales and fields present on disk
and never deletes anything by omission. A locale live on Play but absent
locally is reported, not touched. To actually delete online-only locales,
opt in with --prune (it still refuses to remove the app's
default-language listing).
Remember the missing-vs-empty rule: deleting a file means "stop managing this field"; an empty file means "clear this field online".
Images
Section titled “Images”gplay metadata images list # live slots and hashesgplay metadata images validate # offline: types, extensionsgplay metadata images apply --dry-run # diff by content hashgplay metadata images applyImages reconcile per slot (icon, featureGraphic, screenshot galleries…)
by SHA-256: identical content and order → no-op; any difference → the slot
is cleared and re-uploaded in filename order. Removing online-only images
from a managed slot is the separate destructive mode
images apply --prune, which requires --confirm.
A metadata job fits naturally next to your release job:
- run: gplay metadata validate- run: gplay metadata apply --dry-run --output json- run: gplay metadata apply