Skip to content
This page was generated and translated with the assistance of AI. If you spot any inaccuracies, feel free to help improve it. Edit on GitHub

Platform Variants ​

A variant represents a platform-specific build target under a product. Each variant has its own platform, identifier (bundle ID or package name), architecture, and installer type. Releases are uploaded to specific variants.

Supported Platforms ​

PlatformIdentifier ExampleInstaller TypeArchitecture
ioscom.example.myappipaarm64
androidcom.example.myappapkuniversal, arm64-v8a, armeabi-v7a
macoscom.example.myappdmg, pkg, ziparm64, x86_64, universal
windowscom.example.myappexe, msi, zipx64, arm64
linuxcom.example.myappdeb, rpm, appimage, tar.gzx86_64, aarch64

Creating a Variant ​

Via Admin Panel ​

  1. Open the product you want to add a variant to.
  2. Click Add Variant.
  3. Fill in the fields:
FieldRequiredDescription
PlatformYesTarget platform (ios, android, macos, windows, linux)
Display NameYesHuman-readable name (e.g., "iOS", "Android ARM64")
IdentifierYesBundle ID or package name
ArchitectureNoCPU architecture
Installer TypeNoFile type (ipa, apk, dmg, etc.)
Minimum OSNoMinimum OS version requirement
Sort OrderNoDisplay order on the download page (lower = first)
  1. Click Save.

Via API ​

bash
curl -X POST http://localhost:8000/admin/api/products/prd_abc123/variants \
  -H "X-Auth-Token: YOUR_ADMIN_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "platform": "ios",
    "display_name": "iOS",
    "identifier": "com.example.myapp",
    "arch": "arm64",
    "installer_type": "ipa",
    "min_os": "15.0"
  }'

Response:

json
{
  "ok": true,
  "data": {
    "id": "var_def456",
    "product_id": "prd_abc123",
    "platform": "ios",
    "display_name": "iOS",
    "identifier": "com.example.myapp",
    "arch": "arm64",
    "installer_type": "ipa",
    "min_os": "15.0",
    "published": true,
    "sort_order": 0
  }
}

Typical Product Setup ​

A typical multi-platform product might have these variants:

MyApp (Product)
├── iOS (com.example.myapp, ipa, arm64)
├── Android (com.example.myapp, apk, universal)
├── macOS Apple Silicon (com.example.myapp, dmg, arm64)
├── macOS Intel (com.example.myapp, dmg, x86_64)
├── Windows (com.example.myapp, exe, x64)
└── Linux (com.example.myapp, appimage, x86_64)

Single Architecture vs. Multiple

For platforms that support universal binaries (like Android or macOS), you can create a single variant with universal architecture. For platforms where you ship separate binaries per architecture, create one variant per arch.

Updating a Variant ​

bash
curl -X PUT http://localhost:8000/admin/api/variants/var_def456 \
  -H "X-Auth-Token: YOUR_ADMIN_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "display_name": "iOS (Ad-Hoc)",
    "min_os": "16.0"
  }'

Deleting a Variant ​

Cascading Delete

Deleting a variant removes all its releases and uploaded files permanently.

bash
curl -X DELETE http://localhost:8000/admin/api/variants/var_def456 \
  -H "X-Auth-Token: YOUR_ADMIN_TOKEN"

Variant Statistics ​

Get download statistics for a specific variant:

bash
curl http://localhost:8000/admin/api/variants/var_def456/stats \
  -H "X-Auth-Token: YOUR_ADMIN_TOKEN"

ID Format ​

Variant IDs use the prefix var_ followed by a random string (e.g., var_def456).

Next Steps ​

Released under the Apache-2.0 License.