metadata:pull rewrites screenshots with identical ones
- Dominant language
- TypeScript
- Stars
- 1.4k
- Forks
- 236
- Avg merge
- 3d 8h
- Merged PRs (30d)
- 98
Description
### Build/Submit details page URL
_No response_
### Summary
Running `eas metadata:pull` marks every downloaded screenshot as changed on each invocation, even when nothing about the image has changed.
It seems that App Store Connect embeds a unique 26-char base32 asset resource ID into each screenshot's eXIf (UserComment) and iTXt Adobe XMP (dc:creator, exif:UserComment) chunks. metadata:pull writes the downloaded bytes verbatim, so these metadata-only tokens differ on every pull. The decoded image (IDAT) is byte-for-byte identical.
### Managed or bare?
Bare (CNG)
### Environment
18/18 checks passed. No issues detected!
expo-env-info 2.0.12 environment info:
System:
OS: macOS 26.4.1
Shell: 5.9 - /bin/zsh
Binaries:
Node: 24.14.0 - /opt/homebrew/bin/node
npm: 11.9.0 - /opt/homebrew/bin/npm
Managers:
CocoaPods: 1.16.2 - /opt/homebrew/bin/pod
SDKs:
iOS SDK:
Platforms: DriverKit 25.4, iOS 26.4, macOS 26.4, tvOS 26.4, visionOS 26.4, watchOS 26.4
IDEs:
Android Studio: 2025.3 AI-253.30387.90.2532.14935130
Xcode: 26.4.1/17E202 - /usr/bin/xcodebuild
npmPackages:
expo: ~55.0.23 => 55.0.23
expo-router: ~55.0.14 => 55.0.14
expo-updates: ~55.0.21 => 55.0.21
react: 19.2.0 => 19.2.0
react-dom: 19.2.0 => 19.2.0
react-native: 0.83.6 => 0.83.6
react-native-web: ~0.21.2 => 0.21.2
npmGlobalPackages:
eas-cli: 18.12.0
expo-cli: 6.3.12
Expo Workflow: bare
### Error output
_No response_
### Reproducible demo or steps to reproduce from a blank project
It's unclear to me what causes the image metadata to change on Apple's side, but here is a clear way to reproduce it:
1. Run `eas metadata:pull`
2. Create a new version using `eas metadata:push` by updating `store.config.json`'s version field
3. Run `eas metadata:pull`
Expected outcome:
No changes to images
Actual outcome:
All images are changed
Contributor guide
Assessment
This issue has not been assessed yet.