Guide
The Complete Fastlane Screenshots Guide: Automating Deliver & Supply
Manually dragging and dropping screenshots into App Store Connect and Google Play Console is one of the most tedious parts of shipping mobile applications. For an app supporting 5 device display sizes across 10 localized languages, a release requires managing up to 500 individual image uploads through slow web interfaces.
Fastlane automates this entire pipeline using two dedicated tools: deliver for iOS and supply for Android. With the correct directory layout and CLI configuration, you can upload all store assets with a single terminal command.
This guide walks you through the exact folder structures, Fastfile lane setups, common troubleshooting steps, and how to export pre-formatted ZIP packages from SnapWright.
Why Automate Screenshot Uploads?
The manual upload workflow has clear drawbacks:
- Repetitive Drag-and-Drop: Managing 10 screenshots across multiple device tiers and localized storefronts involves hundreds of manual web uploads.
- Upload Timeout Failures: Browser session timeouts during large uploads often force you to restart an entire locale from scratch.
- Risk of Locale Mismatches: Accidentally uploading German screenshots into a French locale or misplacing iPad mockups into an iPhone slot causes review delays.
- CI/CD Integration: Automated tools let you tie visual asset updates directly to your Git release tags and automated build processes.
The table below contrasts how iOS and Android handle automated screenshot pipelines:
| Configuration Area | Fastlane deliver (iOS) |
Fastlane supply (Android) |
|---|---|---|
| Target Store Portal | Apple App Store Connect | Google Play Console |
| Default Root Path | fastlane/screenshots/<locale>/ |
fastlane/metadata/android/<locale>/images/ |
| Device Folder Logic | Flat folder; device mapped automatically by pixel dimensions | Explicit device subfolders (phoneScreenshots/, tenInchScreenshots/) |
| Feature Graphic Support | Not applicable | Required (images/featureGraphic.png at 1024 × 500 px) |
| Alpha Channel Policy | Rejection if alpha channel is present | Rejection if alpha channel is present |
| Screenshot CLI Flags | --skip_binary_upload true --skip_metadata true --overwrite_screenshots true |
--skip_upload_apk true --skip_upload_aab true --skip_upload_metadata true |
Fastlane replaces manual web uploads with a scriptable, deterministic deployment step.
iOS Setup: Organizing Screenshots for fastlane deliver
Fastlane deliver uploads screenshots, metadata, and app binaries to App Store Connect. To upload screenshots, deliver reads from a localized directory structure inside your fastlane/ folder.
Expected Directory Hierarchy
Place your screenshot files in fastlane/screenshots/<locale>/. Fastlane automatically identifies the correct device family based on the exact pixel dimensions of each image (for example, 1320 × 2868 px is mapped to the iPhone 6.9" display).
fastlane/
└── screenshots/
├── en-US/
│ ├── screen_dashboard.png # 1320 x 2868 (iPhone 6.9")
│ ├── screen_features.png # 1320 x 2868
│ ├── ipad_overview.png # 2064 x 2752 (iPad 13")
│ └── ipad_details.png # 2064 x 2752
├── de-DE/
│ ├── screen_dashboard.png
│ ├── screen_features.png
│ ├── ipad_overview.png
│ └── ipad_details.png
└── ja/
├── screen_dashboard.png
└── ...
Sorting and File Naming Rules
- Alphanumeric Ordering: Fastlane uploads and displays screenshots in alphanumeric order based on file name. Prefix files with numbers if you want to enforce a specific display order in the store listing.
- Strict Alpha Channel Rejection: App Store Connect rejects PNGs containing an alpha transparency channel. Ensure all PNGs are flattened 24-bit RGB files before running
deliver.
Fastfile Lane for Screenshot Uploads
To upload screenshots without re-uploading your binary or textual metadata, use this Fastfile lane:
desc "Upload only screenshots to App Store Connect"
lane :upload_ios_screenshots do
deliver(
skip_binary_upload: true,
skip_metadata: true,
overwrite_screenshots: true,
force: true # Skips the interactive HTML confirmation summary
)
end
Or execute directly from your terminal:
fastlane deliver --skip_binary_upload true --skip_metadata true --overwrite_screenshots true --force true
Android Setup: Organizing Metadata Images for fastlane supply
Fastlane supply manages metadata and graphic assets for Google Play Console. Unlike deliver, supply organizes assets by device-specific subdirectories rather than inferring device type from pixel resolution alone.
Expected Directory Hierarchy
All visual assets reside under fastlane/metadata/android/<locale>/images/:
fastlane/
└── metadata/
└── android/
├── en-US/
│ └── images/
│ ├── featureGraphic.png # 1024 x 500 px (Mandatory)
│ ├── icon.png # 512 x 512 px
│ ├── phoneScreenshots/
│ │ ├── dashboard.png # 1080 x 1920 px
│ │ └── analytics.png
│ └── tenInchScreenshots/
│ ├── large_display.png # 1600 x 2560 px
│ └── large_reports.png
└── de-DE/
└── images/
├── featureGraphic.png
└── phoneScreenshots/
└── ...
Fastfile Lane for Google Play Visual Assets
Add the following lane to your Fastfile:
desc "Upload visual assets to Google Play Console"
lane :upload_android_screenshots do
supply(
skip_upload_apk: true,
skip_upload_aab: true,
skip_upload_metadata: true,
skip_upload_changelogs: true
)
end
Or execute via the command line:
fastlane supply --skip_upload_apk true --skip_upload_aab true --skip_upload_metadata true
Common Fastlane Screenshot Errors & Fixes
1. Error: "Target locale does not exist in store listing"
- Cause: Fastlane attempts to push screenshots into a language subfolder (such as
de-DEorfr-FR) that has not yet been activated in App Store Connect or Google Play Console. - Fix: In your developer console, navigate to your app version details and add the corresponding localized languages before triggering the Fastlane script.
2. Error: "Image contains an alpha channel" (App Store Connect)
- Cause: PNG exports from standard design canvases retain a 32-bit RGBA channel.
delivervalidates images against Apple's schema and fails upon encountering transparency. - Fix: Use SnapWright's export, which automatically strips alpha channels from all PNG assets.
3. Issue: Fastlane Hangs in CI/CD Environments
- Cause: By default,
delivergenerates an HTML preview file and pauses execution waiting for interactive terminal confirmation. - Fix: Pass
force: truein yourFastfileor add--forcein your CI/CD bash script to bypass interactive approval prompts.
The SnapWright Shortcut: 1-Click Fastlane-Ready ZIP Export
Setting up directories and renaming files manually defeats the purpose of automation. SnapWright bridges the gap between screenshot design and Fastlane deployment:
- Pre-Structured Directories: When exporting, select the Fastlane layout option. SnapWright automatically formats your files into
fastlane/screenshots/<locale>/for iOS andfastlane/metadata/android/<locale>/images/for Android. - Deterministic Naming: Files are ordered alphanumerically so your screenshot sequencing renders consistently in store listings.
- Store-Ready Compliance: Every file is rendered to exact store sizes (such as iPhone 6.9" and iPad 13") as PNGs without an alpha channel. Before building the ZIP, SnapWright's pre-export check lists missing images, empty or untranslated text, overflow, low-resolution screens, and store count limits.
- Instant Repository Integration: Extract the downloaded ZIP archive directly into your project's root folder, open terminal, and run
fastlane deliverorfastlane supply.
Frequently asked questions
Where does Fastlane deliver look for iOS screenshots?
By default, Fastlane deliver looks for screenshots in the fastlane/screenshots/ directory, grouped into subfolders by locale (such as fastlane/screenshots/en-US/). Deliver automatically maps screenshots to Apple device families based on pixel resolution.
Where does Fastlane supply store Android screenshots and feature graphics?
Fastlane supply expects images in fastlane/metadata/android/<locale>/images/. Inside this directory, screenshots are organized into folders such as phoneScreenshots/ and tenInchScreenshots/, while the feature graphic is placed at images/featureGraphic.png.
How do I upload only screenshots without rebuilding my app in Fastlane?
For iOS, run fastlane deliver --skip_binary_upload true --skip_metadata true --overwrite_screenshots true. For Android, run fastlane supply --skip_upload_apk true --skip_upload_aab true --skip_upload_metadata true.
Does SnapWright export a Fastlane-ready directory structure?
Yes. SnapWright features a dedicated Fastlane export option that packages your framed, localized screenshots into the exact folder and file hierarchy required by both Fastlane deliver and supply.
Ready to automate your store asset deployments?
Open SnapWright — Free App Store & Google Play Screenshot Maker