Skip to main content

Auto add device frames to iOS/iPadOS screenshots for App Store.

Project description

Snap2Store Logo

Snap2Store

中文文档

Snap2Store is designed for Apple developers to solve the problem that screenshots captured from the iOS simulator cannot be directly used in the App Store.
It automatically adds device frames and adjusts to the required dimensions, making your app screenshots more professional and compliant with App Store standards.


Background

Screenshots taken from the iOS simulator cannot be uploaded directly to the App Store because:

  • ❌ Sizes do not match App Store requirements
  • ❌ Missing device frames, resulting in poor presentation
  • ❌ Manual processing is time-consuming and inefficient

This tool solves these problems with one command:

  • ✅ Automatically adds real device frames
  • ✅ Outputs screenshots that meet App Store requirements
  • ✅ Batch processing for improved developer efficiency

Installation

# Using pip
pip install -U snap2store

# Or using uv
uv tool install snap2store

Usage

Typical Workflow

  1. Capture screenshots in the iOS simulator (select the iPhone 17 Pro Max or iPad Pro 13-inch simulator so the raw captures match Apple’s current App Store device requirements)
  2. Run the processing tool for the target device
  3. Get processed screenshots with the correct frame and size
  4. Upload directly to App Store Connect

CLI Commands

# Process a single screenshot (auto-detect device type)
snap2store screenshot.png

# Batch process all screenshots in a folder
snap2store screenshots_folder/

# Specify device type (iPhone)
snap2store -d iphone screenshot.png

# Specify device type (iPad) and custom output directory
snap2store -d ipad -o custom_output/ screenshot.png

# Export transparent background PNG
snap2store --transparent screenshot.png

# Show help
snap2store --help

Command Options

usage: snap2store [-h] [-d {iphone,ipad,ipad_mini}] [-o OUTPUT] [--transparent] [-v] input

Snap2Store - Add device bezels to iOS/iPadOS screenshots to meet App Store requirements

positional arguments:
  input                 Screenshot file or folder path

options:
  -h, --help            show this help message and exit
  -d {iphone,ipad,ipad_mini}, --device {iphone,ipad,ipad_mini}
                        Specify device type (auto-detect if not provided)
  -o OUTPUT, --output OUTPUT
                        Output directory (default: ./output/)
  --transparent         Export with transparent background as PNG (default: white background JPG)
  -v, --version         show program's version number and exit

Examples:
  snap2store screenshot.png                  # Auto-detect device type and process single screenshot
  snap2store screenshots/                    # Process all screenshots in the folder
  snap2store -d iphone screenshot.png        # Specify as iPhone screenshot
  snap2store -d ipad -o custom_output/ img/  # Specify as iPad screenshot and custom output directory
  snap2store -d ipad_mini screenshot.png     # Specify as iPad mini screenshot
  snap2store --transparent screenshot.png    # Export transparent background as PNG

Local Testing with uv

Run from the project root:

# Install project dependencies into the uv environment
uv sync

# Check CLI options
uv run snap2store --help

# Test default output: white background JPG
uv run snap2store path/to/screenshot.png

# Test transparent output: transparent background PNG
uv run snap2store --transparent path/to/screenshot.png

Expected results:

  • Default mode generates output/<filename>_framed.jpg with a white background
  • --transparent generates output/<filename>_framed.png with a transparent background

Output

  • 📁 Processed files are saved in the output/ folder
  • 📝 File naming format: original_filename_framed.jpg or original_filename_framed.png
  • 🎯 App Store compliant: correct dimensions and format
  • 🖼️ Default export: white background JPG with quality 85 and optimized compression
  • 🎨 --transparent export: transparent background PNG

Output Dimensions

  • 📱 iPhone: 1242 × 2688 px
  • 📱 iPad: 2064 × 2752 px

These dimensions fully meet App Store Connect requirements, so the screenshots can be uploaded directly.


Tech Stack

  • Python 3.x
  • Pillow (PIL): image processing
  • psd-tools: PSD file parsing

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

snap2store-0.2.1.tar.gz (9.5 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

snap2store-0.2.1-py3-none-any.whl (9.6 MB view details)

Uploaded Python 3

File details

Details for the file snap2store-0.2.1.tar.gz.

File metadata

  • Download URL: snap2store-0.2.1.tar.gz
  • Upload date:
  • Size: 9.5 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for snap2store-0.2.1.tar.gz
Algorithm Hash digest
SHA256 d906f96eebd688c96b5fec695c59c0fedcc60648c60e9837498f04a306d39b4b
MD5 6dc37f4b7d3b6ac8e4b6e1164673a2cc
BLAKE2b-256 962db6fbd9d2484925021d38d058626f8c97c6d8ac7f608dfe1fe3cdb0d7368f

See more details on using hashes here.

File details

Details for the file snap2store-0.2.1-py3-none-any.whl.

File metadata

  • Download URL: snap2store-0.2.1-py3-none-any.whl
  • Upload date:
  • Size: 9.6 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for snap2store-0.2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 3295cb25200f0b043e69c98b0bae9c87bd6762467efeee3d11ca25a27cb92216
MD5 d690946c1fa4e83530dc0b27bfef3fc7
BLAKE2b-256 2b40740d49c2d94492be56bd1789c4d803fb8a7ce7d3cdd608e14aba1ae844d4

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page