expo / expo/eas-cli

metadata:pull rewrites screenshots with identical ones

Open
#3,804 0 comments 0 reactions 0 assignees View on GitHub
needs review
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

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.