App Store Connect rejects preview videos that exceed 30 seconds, show web-based content, include third-party service UIs rather than in-app captures, or contain licensed audio without distribution rights — all under Guideline 2.3 (Accurate Metadata). A rejected preview video blocks the entire submission, not just the video asset, so a 31-second clip or a screencast labelled marketing-promo.mp4 costs a full review cycle.
Info because the preview video is optional; rejection only fires when a non-compliant video is actively submitted.
Record directly from the device with Xcode's screen recording or QuickTime on a connected iPhone/iPad — not a screencast of a browser or a marketing animation. Keep the clip between 15 and 30 seconds, skip voiceover (Apple applies the app's own audio), and store the file at fastlane/screenshots/<locale>/preview.mp4 so it ships with the rest of the metadata. For Android, upload a YouTube URL through Play Console rather than a local file.
ID: app-store-metadata-listing.review-submission.preview-video
Severity: info
What to look for: Look for video files in fastlane/screenshots/, store-assets/, assets/, or any directory — files with extensions .mp4, .mov, .m4v. Check for references to preview videos in eas.json or fastlane configuration. If a preview video is present, evaluate: (a) iOS App Preview: Must be 15-30 seconds; must show actual app UI (not animated marketing graphics); must be captured from a device running the app (not a screencast of a web demo); must include sound if sound is part of the app experience; file format must be H.264 or HEVC; resolution must match a supported device size (e.g., 886×1920 for 6.5" iPhone). (b) Google Play feature graphic: The Google Play feature graphic (feature_graphic.png) is a 1024×500 PNG used as the store banner — check for it in fastlane/metadata/android/images/featureGraphic.png or equivalent. If a preview video URL is referenced in Play metadata, note it as external (not stored in repo). The key compliance issue for iOS: app preview videos that show a third-party service, web browser, or marketing animation rather than actual in-app UI are rejected. Count all instances found and enumerate each.
Pass criteria: No preview video is present (skip); or preview video is present, appears to show actual app UI, and is within length guidelines (15-30s for iOS); or video compliance cannot be assessed without playing the file. At least 1 implementation must be confirmed.
Fail criteria: Preview video file is present but is clearly longer than 30 seconds (file size alone suggests this); video filename suggests it is a marketing animation rather than an in-app capture (e.g., marketing-promo.mp4).
Skip (N/A) when: No preview video files are found anywhere in the repository. (The video is optional on both platforms.)
Detail on fail: "store-assets/preview-marketing-animation.mp4 filename suggests a marketing video rather than an in-app capture — App Store requires preview videos to show actual app UI".
Remediation: Optional but high-value for conversion. If you add a preview video:
Reference the relevant configuration in package.json or the src/ directory structure for implementation.