feat(metadata): support App Store review attachment#3595
Draft
feat(metadata): support App Store review attachment#3595
Conversation
Adds an `attachment` field to the `review` block of the Apple metadata config so users can ship a single file (e.g. demo instructions PDF) to the App Store review team alongside contact + demo account info. Push uploads the file via `AppStoreReviewDetail.uploadAttachmentAsync` and skips re-uploading when the local MD5 matches the existing attachment. Pull records the existing attachment's filename under `store/apple/review-attachment/` (App Store Connect does not currently expose a download URL for review attachments, so we cannot fetch the bytes back). Removes the `// TODO: add attachment` comments in `apple/config/reader.ts` and `apple/config/writer.ts`. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
|
Subscribed to pull request
Generated by CodeMention |
…SC limitation The App Store Connect API does not expose a download URL for review attachments (unlike AppScreenshot which has imageAsset.templateUrl). This is a confirmed API limitation (expo/third-party#146), not a gap in our implementation. Changes: - Remove directory/placeholder file creation during pull — only record the path in config for round-trip support - Replace terse warning with informational message explaining WHY download is not possible and what the user should do - Add code comment referencing the investigation (expo/third-party#146) - Add test verifying no directory is created on disk during pull Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
|
❌ It looks like a changelog entry is missing for this PR. Add it manually to CHANGELOG.md. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
attachmentfield to thereviewblock of the Apple metadata config so users can declare a single file (e.g. demo instructions PDF) to share with the App Store review team alongside contact + demo account info. The JSON schema, TypeScript types, reader and writer all gain first-class attachment support.AppStoreReviewDetail.uploadAttachmentAsync. Existing attachments are compared by MD5 against the local file (matching the screenshot sync's checksum-based skip logic), and re-uploaded only when the content has changed. Stale attachments are deleted before the new one is uploaded.store/apple/review-attachment/<fileName>. No placeholder file is created on disk — the user is informed they need to place the file manually.Known limitation: pull cannot download review attachments
This is a confirmed App Store Connect API limitation — see expo/third-party#146 for the full investigation.
The ASC OpenAPI spec confirms that
AppStoreReviewAttachmentonly exposesfileName,fileSize,sourceFileChecksum,uploadOperations, andassetDeliveryState. There is noimageAsset, noassetToken, and no download URL. This is unlikeAppScreenshotwhich hasimageAsset.templateUrlfor downloading.Push works fully: upload, checksum comparison, and delete/replace all function correctly.
Pull records metadata only: the attachment path is written to the config so the round-trip (
metadata:pull->metadata:push) preserves the entry, but the actual file bytes cannot be fetched. An informational message explains this to the user during pull.Test plan
yarn workspace eas-cli testformetadata/apple/(config|tasks/__tests__/app-review-detail)— all tests passeas metadata:pullagainst an app with an existing review attachment records the path and prints an informational message explaining the ASC limitationeas metadata:pushafter placing a file at the configured path uploads it and replaces any stale attachmenteas metadata:pushwith no file changes skips the re-upload (checksum match)🤖 Generated with Claude Code