With steelyard, generate insightful App Size Graphs & JSON Metrics using App Store Connect API on Mac.
To install steelyard using Homebrew, run the following command:
brew install mcrollin/steelyard/steelyard
To install using Mint, run:
mint install mcrollin/steelyard
Alternatively, you can manually build the tool:
swift build -c release --disable-sandbox --product steelyard
Or run it:
swift run steelyard
To use steelyard, you'll need to provide several details that are obtained via Apple's Developer Portal.
Follow the following steps to create an API key and retrieve the necessary information.
- Go to App Store Connect > Users and Access > Keys > App Store Connect API.
- Click the + button to create a new key.
- Give the key a name, select
Developer
(or higher) access role and generate it. - Download the generated .p8 file.
Note: Store this file in a secure place, as you won't be able to download it again.
- In the list, find your key, hover over the Key ID and tap on the
Copy Key ID
button. - The Issuer ID with a
Copy
button is available right above the list of keys, under the Users and Access section.
The Private Key Path is the location where you've stored the downloaded .p8 file.
The App ID can be found in the App Store Connect > Apps > General > App Information > General Information > Apple ID.
For each command, you'll need to supply the following arguments: key-id
, issuer-id
, private-key-path
, and app-id
.
Create a PNG image that displays historical size graphs for a specific app.
The command format is as follows:
USAGE: steelyard graph [<options>] <key-id> <issuer-id> <private-key-path> <app-id>
ARGUMENTS:
<key-id> The key ID from the Apple Developer portal.
<issuer-id> The issuer ID from the App Store Connect organization.
<private-key-path> The path to the .p8 private key file.
<app-id> The App ID.
OPTIONS:
-l, --limit <limit> Specify the number of items to analyze. (default: 30)
- For builds, the range is 1 to 200.
- For versions, the range is 1 to 50.
--by-version Fetch sizes categorized by version, not build. Slower to retrieve.
--download-size/--no-download-size
Include download sizes. (default: --download-size)
--install-size/--no-install-size
Include install sizes. (default: --install-size)
-o, --output <output> Specify the destination path for the generated file.
-v, --verbose Display all information messages.
--dark-scheme Set to dark color scheme.
--reference-device-identifier <reference-device-identifier>
The reference device to highlight in the charts. (default: iPhone12,1)
-h, --help Show help information.
Produces a JSON file with in-depth size metrics for a specific app with the following format:
{
"id": "1234567890",
"name": "ExampleApp: AI FooBar",
"bundle_id": "com.foobar.example",
"builds": {
"6.1.0": {
"marketing_version": "6.1.0",
"version": "910",
"id": "abcd1234-5678-9def-ghij-klmnopqrs",
"uploaded_at": "2023-05-01T12:34:56Z",
"sizes": {
{
"id": "xyza9876-5432-1wvu-tsqr-onmlkjihgf",
"os_version": "Universal",
"device_model": "iPhone12,1",
"download_bytes": 987654321,
"install_bytes": 123456789
},
...
}
},
...
}
}
The command format is as follows:
USAGE: steelyard data <key-id> <issuer-id> <private-key-path> <app-id> [--limit <limit>] [--by-version] [--download-size] [--no-download-size] [--install-size] [--no-install-size] [--output <output>] [--verbose]
ARGUMENTS:
<key-id> The key ID from the Apple Developer portal.
<issuer-id> The issuer ID from the App Store Connect organization.
<private-key-path> The path to the .p8 private key file.
<app-id> The App ID.
OPTIONS:
-l, --limit <limit> Specify the number of items to analyze. (default: 30)
- For builds, the range is 1 to 200.
- For versions, the range is 1 to 50.
--by-version Fetch sizes categorized by version, not build. Slower to retrieve.
--download-size/--no-download-size
Include download sizes. (default: --download-size)
--install-size/--no-install-size
Include install sizes. (default: --install-size)
-o, --output <output> Specify the destination path for the generated file.
-v, --verbose Display all information messages.
-h, --help Show help information.
This project is licensed under the MIT License.