# AltStore Docs

Welcome to AltStore! This guide will show you how to install AltStore onto your iPhone or iPad and get started sideloading apps. And if you're a developer, check out our guide on how to distribute your apps on AltStore!

[Return to Homepage](https://altstore.io)

## [AltStore PAL](/altstore-pal/what-is-altstore-pal)

## [AltStore Classic](/altstore-classic/your-altstore)&#x20;

## [Release Notes](/release-notes/altstore-pal)

## [Developer Resources](/developers/make-a-source)

## [Patreon](/patreon/beta-access)

## [About Us](/about-us/team)


# What is AltStore PAL?

AltStore PAL is an official alternative app marketplace **available only in the EU, Japan, and Brazil.**  With AltStore PAL you can install apps not available in the App Store, but without the limitations of AltStore Classic.

You can download AltStore PAL now from our [website](https://altstore.io/download).

#### AltStore PAL v. AltStore Classic

If you've ever sideloaded before using AltStore (Classic) or are wondering about sideloading in general, here are some key differences:

<table><thead><tr><th>Feature</th><th width="202">AltStore PAL</th><th>AltStore Classic</th></tr></thead><tbody><tr><td>EU, Japan, and Brazil Only</td><td>✅</td><td>❌</td></tr><tr><td>Installs Notarized Apps</td><td>✅</td><td>❌</td></tr><tr><td>Installs .ipa FIles</td><td>❌</td><td>✅</td></tr><tr><td>3rd Party Sources</td><td>✅</td><td>✅</td></tr><tr><td>Requires Computer</td><td>❌</td><td>✅</td></tr><tr><td>Apps Expire</td><td>❌</td><td>✅ (7 days)</td></tr><tr><td>Installed App Limit</td><td>❌</td><td>✅ (3 apps)</td></tr><tr><td>Full iOS App Capabilities</td><td>✅</td><td>❌</td></tr><tr><td>Requires Apple ID &#x26; Password</td><td>❌</td><td>✅</td></tr><tr><td>Supports JIT</td><td>❌</td><td>✅</td></tr></tbody></table>


# Sources

Sources are links to apps provided by developers and they control what apps are available to download through AltStore PAL. When you find an app you want to download from AltStore PAL, just add the source from the developer's website and their apps will appear in the Browse tab.&#x20;

To add and manage sources, first go to the Sources tab. From there you can add a source by tapping the ”+” button and enter the source's URL.&#x20;

{% hint style="info" %}
Not sure where to start? Try adding one of our Recommended Sources!
{% endhint %}

<div><figure><img src="/files/yvgpTsx3KH0ynssYYHfG" alt=""><figcaption></figcaption></figure> <figure><img src="/files/BF4hzbCNPjv3aT2s3NZD" alt=""><figcaption></figcaption></figure></div>


# Updating AltStore PAL

Unlike apps distributed with AltStore, AltStore PAL itself cannot be updated from the My Apps tab. Instead, there are two ways to update it  - automatically in the background, or manually from Settings.

### Update Automatically

1. Go to Settings -> App Installation
2. Turn on "App Updates" under Automatic Downloads
3. AltStore should update itself within 24 hours after an update is released

<figure><img src="/files/pdivZkB17nb8w1cz3Gt7" alt="" width="188"><figcaption><p>Toggle On "App Updates" </p></figcaption></figure>

### Update Manually

#### Safari

1. Open Safari
2. Go to <https://altstore.io/download>
3. Tap 'Download'
4. AltStore PAL will update itself to the latest version in the background

#### Settings app

1. Go to Settings -> App Installation -> AltStore
2. Tap "Update Now" under App Information

{% hint style="warning" %}
You may need to wait up to 24 hours for the update to appear.
{% endhint %}

<figure><img src="/files/IMduKq8JZktJlYF6aGf2" alt="" width="188"><figcaption><p>Option will appear if App Updates are off</p></figcaption></figure>


# Day One Promo

If you originally paid €1,50 to download AltStore PAL, you're eligible to claim a special promo as thanks for supporting us from the beginning! Please follow the instructions below to redeem this promo, which includes:

* Exclusive "Day One" AltStore icon
* One month free of our "Early Adopter" tier on [Patreon](https://patreon.com/rileyshane)

{% hint style="warning" %}
**You must update AltStore PAL to version 2.1.3 or later to claim this promo.**
{% endhint %}

### Instructions

{% hint style="info" %}
If you would just like the exclusive icon without a free month of our "Early Adopter" Patreon tier, you can start from **Step 3**.
{% endhint %}

1. Go to [patreon.com/rileyshane](https://patreon.com/rileyshane) and click "Join for Free" to join our campaign as a free member.&#x20;

<figure><img src="/files/aiCq8gXRfC5PHFpPk4qZ" alt="" width="375"><figcaption></figcaption></figure>

2. Connect your Patreon account in AltStore from the Settings tab.
3. Go [here](https://buy.stripe.com/6oEg2u80z5vI0Mg4gg) on your iPhone or iPad with AltStore PAL installed.
4. Type in the same email address you used to subscribe and Stripe will automatically recognize you have a subscription. If you used Apple Pay, follow the additional instructions below.

<details>

<summary>Apple Pay</summary>

1. Tap the Apple Pay button.
2. Attempt to checkout by double clicking to pay and Stripe will recognize your existing subscription. **You will not be charged again and it is only required for email verification.**
3. Tap "Continue" on the "Payment wasn't processed" screen.

&#x20;  ![](/files/idE6RPxbzoxwIcfUXuAi) ![](/files/Di5MYaVn2JMwMeFYUtCc)&#x20;

</details>

5. Tap "Continue" to be taken to the Redeem Promo page.

<div><figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXc7mgCsgGz7DhVzZOrol7cEc5RvtirJreXoGKybBZ5QiCJIlMuYbLLWq4OpurhLzYpKz-SLTj5UpZeU6D33Ss_4iBpn0XkPhiF-kbKyzfevy8hrlX2ERtVjRxUZdwgFKAtYJmx0ozCaPJCljKXJvYD_GyBi?key=Td4Vb7OZ1J_SnC3adbD3fQ" alt="" width="375"><figcaption><p>Enter Email</p></figcaption></figure> <figure><img src="/files/biHyO9SHU4E4xxX0Hwd2" alt="" width="375"><figcaption><p>Stripe will Confirm Your Subscription</p></figcaption></figure></div>

6. Tap "Redeem in AltStore" and then tap "OK" on the alert to be taken to AltStore PAL.
7. After a couple of seconds, you will see a confirmation alert. You can now access your promo benefits! **Make sure your Patreon is linked and you have joined our campaign as a Free Member to download our betas.**

If you have problems claiming the promo, please email us at <support@altstore.io> with the email you used to subscribe, and we will help to verify your subscription.

{% hint style="warning" %}
Your free month will begin as soon as you redeem the promo in AltStore PAL.
{% endhint %}

<figure><img src="/files/cJFFcr3QTOUURFNPey3G" alt="" width="375"><figcaption><p>You'll see this alert once you've successfully completed all the instructions</p></figcaption></figure>

### <br>


# Troubleshooting

If you have issues downloading or using AltStore PAL, make sure to check this guide and see if any of these items apply to you. If you go through this list and still need help, reach out to[ support@altstore.io](mailto:support@altstore.io)

<mark style="color:purple;">**NSURLError when Downloading an App**</mark>

You may need to turn off your VPN as VPNs can cause NSURLError when downloading app with PAL

<mark style="color:purple;">**"The source \[Source Name] is not supported by this version of AltStore" Error**</mark>

You may see this alert if you are trying to add a source to an older version of AltStore PAL. Please update to AltStore PAL 2.2 or later.

<mark style="color:purple;">**Restart Your Device**</mark>

If you run into any issues while downloading, be sure to first restart your device. This may be required for your device to recognize AltStore and allow you to download. Once you do this, you can continue with the other below suggestions.

<mark style="color:purple;">**Apple ID region must be a country in the European Union**</mark>

AltStore PAL can only be downloaded onto devices physically located in the [European Union](https://european-union.europa.eu/easy-read_en), and that are logged into an EU Apple ID. You can find your Apple ID's region under Apple ID > Media & Purchases > Country/Region in Settings. And just because we've been asked this a lot, **this does not include the UK.**

<mark style="color:purple;">**Missing Download Link (Re-Download)**</mark>

You can redownload to the same device at any time by clicking the payment button again and typing in the same email address you used to check out before (or attempt to use Apple Pay again) - Stripe will automatically redirect you to the AltStore PAL download page. You do not need to re-subscribe&#x20;

<mark style="color:purple;">**Your Device is on iOS 17.4+**</mark>

AltStore PAL can only be run on devices running iOS 17.4 or later. Please ensure your device is up to date before trying to install.

<mark style="color:purple;">**Problems with Apple Pay**</mark>

There are some issues that may cause Apple Pay to fail, so we suggest making sure your payment has been processed correctly before trying to download AltStore PAL. If your payment continues to fail, we recommend providing a credit card directly or using another payment option.

<mark style="color:purple;">**Can't install with 3rd Party Browsers (Chrome, Arc, Brave, etc.)**</mark>

Currently, Apple only permits installing marketplace apps from the Safari browser. If you've already subscribed using a 3rd party browser, you can copy + paste the URL of the download page to Safari and finish installing AltStore PAL from there.

Optionally you can start the process over again in Safari. Type in the same email address you used to check out before (or attempt to use Apple Pay again), and Stripe will automatically redirect you to the AltStore PAL download page — you do NOT need to re-subscribe.

<mark style="color:purple;">**Still Running into Issues?**</mark>

If you've tried everything above and are still having issues installing AltStore PAL, please start the entire process over again from the [altstore.io](https://altstore.io) homepage. Type in the same email address you used to check out before (or attempt to use Apple Pay again), and Stripe will automatically redirect you to the AltStore PAL download page — you do NOT need to re-subscribe.


# How to Install (Windows)

This page will help guide you through the process of installing AltStore onto your iOS device using a Windows computer. Soon you will be able to start sideloading apps!

## **Before Installing AltStore:**

1. Download and install the latest version of iTunes **and** iCloud directly from Apple (**not** the Microsoft Store).

{% hint style="info" %}
**iTunes Direct Download Links:**

Windows 64-bit: <https://www.apple.com/itunes/download/win64>

Windows 32-bit: <https://www.apple.com/itunes/download/win32>
{% endhint %}

{% hint style="info" %}
**iCloud Direct Download Link:**

Windows 32-bit and 64-bit: <https://updates.cdn-apple.com/2020/windows/001-39935-20200911-1A70AA56-F448-11EA-8CC0-99D41950005E/iCloudSetup.exe>
{% endhint %}

{% hint style="warning" %}
If you **need** to use the Windows Store version of iCloud, you can still use AltStore by following our alternate steps in the [Troubleshooting Guide](/altstore-classic/troubleshooting-guide#windows-i-need-to-use-the-windows-store-icloud).
{% endhint %}

## **Installing AltStore:**

1. Download [AltServer for Windows](https://cdn.altstore.io/file/altstore/altinstaller.zip)
2. Extract `AltInstaller.zip` and run `Setup.exe`.
3. Go to search in your Windows task bar, then type in "AltServer" and click "Run as administrator." Make sure to allow access to private networks if prompted. AltStore will appear as an icon in the taskbar.

{% embed url="<https://youtube.com/clip/UgkxO1aP-iQYEPV4GVjbW_pxOv3ZsQwFCi1b>" %}

4\. Connect your iOS device to your computer and make sure it is unlocked. Trust your device with your computer if needed.

5\. Open iTunes and sign in using your Apple ID.

6\. In iTunes, enable "Wi-Fi sync" on your device.

![](/files/DZjm7RamMKF7DsKKFsTQ)

7\. Click the AltServer icon in the bottom right taskbar. Then go to “Install AltStore” and choose your iOS device.

8\. Enter your Apple ID email address and password. This will allow AltServer to authenticate with Apple and configure your account to support sideloading apps.

{% hint style="info" %}
Your Apple ID and password are sent **only** to Apple — not us or anyone else.
{% endhint %}

{% embed url="<https://youtube.com/clip/UgkxPQXL6XH_5S9YOamCK1JsB0IuzUr9hOwc>" %}

8\. Wait a few seconds, then an AltServer notification should appear saying AltStore has been successfully installed onto your device.

{% hint style="info" %}
You may need to restart your device to make AltStore appear on your Home Screen.
{% endhint %}

9\. On your iOS device, go to Settings -> General -> Profiles & Device Management. Tap “Trust \[Your Apple ID],” then tap “Trust” again to confirm.

![Image courtesy of @LouisAnslow](https://files.gitbook.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAfe8qEztjcTjsjjaMBY2%2Fuploads%2F1NUuIKBgS0adjhFhOqVt%2F1-CwxM2iiAN0kLSWGuRQcCHQ-2%20\(dragged\).jpg?alt=media\&token=f94229f1-89be-4e25-854d-d13736f64ca3)

{% hint style="info" %}
"Profiles & Device Management" may read as a number of things depending on your version, but you can always find it near the bottom of Settings -> General.
{% endhint %}

#### Enable Developer Mode (iOS 16+)

11\. To use AltStore on iOS 16 or later, you need to enable Developer Mode on your device by going to Settings -> Privacy and Security -> Developer Mode.

<figure><img src="/files/8Ox3y44JkBdrxVD3DG0D" alt=""><figcaption><p><strong>Image Courtesy of @9to5mac</strong></p></figcaption></figure>

**You are now ready to sideload apps using AltStore!**

[**Still having trouble? Check out our troubleshooting guide here**](/altstore-classic/troubleshooting-guide)**.**


# How to Install (macOS)

This page will help guide you through the process of installing AltStore onto your iPhone or iPad using a macOS computer. Soon you will be able to start sideloading apps!

1. Download [AltServer for macOS](https://cdn.altstore.io/file/altstore/altserver.zip) (requires macOS 11 or later).

{% hint style="info" %}
If you are on macOS 10.14 or 10.15, download [AltServer 1.6.2](https://f000.backblazeb2.com/file/altstore/altserver/1_6_2.zip)
{% endhint %}

2. Copy `AltServer.app` to your `/Applications` folder.
3. Launch AltServer, which will appear as an icon in the menu bar.

{% embed url="<https://youtube.com/clip/Ugkxn_M11jWOZH0F7sZSrPD-DsokfUiiDc_m>" %}

4\. Connect your iOS device to your computer and make sure it is unlocked. Trust your device with your computer if needed.

5\. Enable "Wi-Fi sync" on your device.

{% hint style="info" %}
**(macOS 10.14 Mojave or Earlier)**&#x20;

Open iTunes, then enable “Sync with this iPhone/iPad over Wi-Fi” for your device.
{% endhint %}

![](/files/DZjm7RamMKF7DsKKFsTQ)

{% hint style="info" %}
**(macOS 10.15 Catalina or Later)**

Open Finder, then enable “Show this iPhone/iPad when on WiFi” for your device.
{% endhint %}

![](/files/L59Ti1XrY6z1zeOG6Tms)

7\. Click the AltServer icon in the Mac menu bar, go to “Install AltStore”, then choose your device.

{% hint style="info" %}
&#x20;[**If you see an "Install Mail Plug-in..." alert, follow the instructions on next page.**](/altstore-classic/how-to-install-altstore-macos/enable-mail-plug-in)
{% endhint %}

8\. Enter your Apple ID email address and password. This will allow AltServer to authenticate with Apple and configure your account to support sideloading apps.

{% hint style="info" %}
Your Apple ID and password are sent **only** to Apple — not us or anyone else.
{% endhint %}

{% embed url="<https://youtube.com/clip/UgkxROxdCFzoG49W51lxAPaNZO6gV6nUIeev>" %}

9\. Wait a few seconds, then an AltServer notification should appear on your Mac saying AltStore has been successfully installed onto your device.

{% hint style="info" %}
If you don't see any notifications from AltServer, make sure you've given AltServer permission to send you notifications in System Preferences.
{% endhint %}

{% hint style="info" %}
You may need to restart your device to make AltStore appear on your Home Screen.
{% endhint %}

10\.  On your iOS device, go to Settings -> General -> VPN & Device Management. Tap "\[Your Apple ID]", then tap “Trust \[Your Apple ID],” then tap “Allow” to confirm.

<figure><img src="/files/5TeauZQDS10exuZ57VaO" alt=""><figcaption></figcaption></figure>

{% hint style="info" %}
"VPN & Device Management" may read as a number of things depending on your version, but you can always find it near the bottom of Settings -> General.
{% endhint %}

#### Enable Developer Mode (iOS 16+)

11\.  To use AltStore on iOS 16 or later, you need to enable Developer Mode on your device by going to Settings -> Privacy and Security -> Developer Mode.

<figure><img src="/files/8Ox3y44JkBdrxVD3DG0D" alt=""><figcaption><p><strong>Image Courtesy of @9to5mac</strong></p></figcaption></figure>

**You are now ready to sideload apps using AltStore!**

[**Looking for more apps? You can continue here to learn more about apps in AltStore**](/altstore-classic/how-to-install-altstore-windows)**.**

[**Still having trouble? Check out our troubleshooting guide here**](/altstore-classic/troubleshooting-guide)**.**


# Enable Mail Plug-in

1. Click “Install Mail Plug-in...” from the AltServer menu.
2. Enter your password to grant AltServer permission to install the plug-in.

{% embed url="<https://www.youtube.com/clip/UgkxbO_2GV9wiLDGVkA7EA6DF96D7tzRfd2X>" %}

3\. Open Mail (quit Mail first if it was already running).

4\. Open Mail > Preferences and click “Manage Plug-ins...”

![](/files/FMS2xE28fqiXV8HR4659)

5\. Enable `AltPlugin.mailbundle`.

![](/files/ILjZu5ReqydKAIRcXirF)

6\. Click “Apply and Restart Mail” to finish installing the Mail plug-in.

{% embed url="<https://www.youtube.com/clip/UgkxTtbK8bDInOMJCqVU8Pea-vhofIuTqNH->" %}

7\.  [Return to the previous page to finish installing AltStore](/altstore-classic/how-to-install-altstore-macos).


# Getting Started

## News

The "News" tab is where you can view all news updates from us, including major app updates, upcoming features, and more!

&#x20;                                                ![](/files/RInkU0PcQcXoe5zPi4dE)                    &#x20;

## Browse

The "Browse" tab is where you can find apps available for you to sideload.

Tap an app to view its AltStore page, including the app description and any screenshots, then tap `FREE` to install it.

&#x20;                                                ![](/files/UdGOImWrua8stAH0V5I5)

## My Apps

The "My Apps" tab is where you can see all the apps you have sideloaded with AltStore.

&#x20;                                               ![](/files/WmrAaK6NLaoyGDmidy5r)&#x20;

Apps installed with AltStore expire after 7 days, at which point they can no longer be opened. AltStore will attempt to "refresh" your sideloaded apps in the background to prevent this from happening, but you can also manually refresh your apps at any point by pressing the "Refresh All" button.

Due to restrictions by Apple, you can only have 3 sideloaded apps installed on a device at a time. To work around this, AltStore allows you to "deactivate" sideloaded apps, which backs up their data and removes them from your device to free up a slot for another app. You can then "activate" the app again later to re-install it and restore its data. For more information about activating and deactivating apps, please read the [Activating Apps](/altstore-classic/activating-apps) page.

## Settings

The "Settings" tab is where you can view and adjust your AltStore settings.

&#x20;                                         ![](/files/eis0YUSdTOkW4IMmwzLS)

**Account**\
View Apple ID information such as your name and email address, and whether your account is a paid developer account or a regular Apple ID (a.k.a. "Free Developer Account").

**Patreon**\
Tapping "Join the beta" will take you to a screen where you can link your Patreon account. If you have joined [our Patreon](https://www.patreon.com/rileyshane), linking your account will allow you to sideload the beta versions of AltStore, Delta, and Clip from the My Apps tab.

**Refreshing Apps**\
If "Background Refresh" is enabled, AltStore will periodically wake up in the background and attempt to refresh your apps with AltServer. You can also tap "Add to Siri..." to make a Siri Shortcut that can be run directly by Siri or the Shortcuts app, including via Personal Automations.                    &#x20;

&#x20;                                             &#x20;


# AltServer

AltServer is a companion application for your computer that allows AltStore to sideload apps onto your device. As long as AltStore is on the same WiFi network as a computer running AltServer — or is plugged-in directly to the computer via USB — AltStore can sideload, refresh, activate, and deactivate apps. AltServer is also used to install AltStore in the first place, and if your AltStore expires you can manually refresh it by re-installing AltStore with AltServer **without** deleting AltStore first.

AltStore will try to automatically refresh your apps throughout the week, so we recommend launching AltServer at computer startup and leaving it running in the background to ensure AltStore can do its job.

If you have trouble using AltServer, please check our [troubleshooting guide](/altstore-classic/troubleshooting-guide).


# No Computer Instructions

{% hint style="warning" %}
This feature is still in beta and only available on Patreon. Instructions subject to change.
{% endhint %}

To use AltStore Classic without a computer, you will need to follow the below instructions.

### Set Up Steps

{% hint style="info" %}
Requires AltServer 1.8 or later.
{% endhint %}

1. Install [LocalDevVPN](https://apps.apple.com/us/app/localdevvpn/id6755608044) to your iOS device from the App Store
2. Configure remote AltServer
   1. Connect your iPhone or iPad to your Mac or PC via USB
   2. Go to Settings tab in AltStore Classic
   3. Tap "Configure Remote AltServer..." in the Remote AltServer section
   4. Tap "Continue" on the alert that appears
   5. Tap "Trust" on your iPhone or iPad and enter your passcode when prompted

### Instructions

1. Start VPN
   1. Launch LocalDevVPN on your iOS Device
   2. Tap "Connect"
2. Make sure you're connected to WiFi **(not cellular)**
3. **DONE!** You can now use AltStore to sideload and refresh your apps without connecting to AltServer on your computer.

{% hint style="info" %}
If you have issues, you can try picking a different remote AltServer by tapping "Choose Server" in AltStore's settings.
{% endhint %}


# App IDs

Every app you sideload with AltStore requires a certain number of "App IDs" to be registered with your Apple ID, which depends on the number of app extensions each app contains. **You can only register up to 10 App IDs at a time**, but each App ID expires after one week. If you want to sideload an app that requires more App IDs than you have available, you'll have to wait for enough App IDs to expire.

To see a list of all App IDs registered with your Apple ID and when they will expire, tap "View App IDs" from the My Apps tab.

&#x20;                                            ![](/files/Nra8UNjGztVl01Ex1Z9T)


# Activating Apps

You can sideload as many apps as you want with AltStore, but due to Apple's restrictions **only 3 sideloaded apps can be active at a time**. If you try to activate more than 3 apps, you will be prompted to "deactivate" a sideloaded app first. Deactivating an app will make AltStore back up all its data before removing it from your iPhone or iPad, freeing up a slot for you to then sideload another app. Alternatively, you can manually deactivate an app at any time by long-pressing it in the My Apps tab and pressing "Deactivate".

Deactivated apps will appear in a separate "Inactive" section on the My Apps tab. Once deactivated, an app can later be "activated" by pressing `ACTIVATE`, which will cause AltStore to re-install the app and restore all its data.

&#x20;                                              ![](/files/IqfZrEkSrCQvTem41PlZ)        &#x20;


# Enabling JIT

Just-In-Time Compilation (JIT)  is a technology that allows certain types of apps to run significantly faster, or even at all. iOS does not normally allow apps to use JIT for security reasons, but you can enable JIT for apps sideloaded with AltStore Classic by following the instructions below.

{% hint style="info" %}
Using JIT requires a one-time setup with a Mac or PC. For an alternative method of enabling JIT, see [AltJIT](/altstore-classic/enabling-jit/altjit).
{% endhint %}

## Set-up Instructions

{% hint style="info" %}
These instructions only need to be done once to set your device up to use JIT.
{% endhint %}

#### Jitterbugpair (Mac/PC)

To enable JIT, you first need to download a program on your Mac or PC that will export information about your device.&#x20;

1. Download `jitterbugpair` onto your computer
   1. [macOS](https://cdn.altstore.io/file/altstore/altstore/jitterbugpair.zip)
   2. [Windows](https://github.com/osy/Jitterbug/releases/download/v1.3.1/jitterbugpair-win64.zip)
2. Plug your iPhone or iPad into your computer
3. Open Terminal (Mac) or PowerShell (Windows)
4. Drag `jitterbugpair` into the Terminal/PowerShell window and hit 'Enter'
5. Type `open .` then hit 'Enter' to open the output directory in Finder (Mac) or Explorer (Windows)
6. Locate the `.mobiledevicepairing` file and transfer it to your iOS device

#### Import File into StikDebug/SkitJIT&#x20;

Once you've created the pairing file, you can import it into StikDebug/StikJIT to enable JIT:

<details>

<summary>StikDebug (AltStore PAL)</summary>

1. Install StikDebug from the [StikDebug source](altstore-pal://source?url=https://stikdebug.xyz/apps.json)
2. Open StikDebug
3. Press "Allow" when prompted to add VPN Configurations and follow instructions
4. Tap 'Select Pairing File'
5. Select the `.mobiledevicepairing` file you transferred to your device in the above steps

</details>

<details>

<summary> StikJIT (AltStore Classic)</summary>

1. Install StosVPN from the [App Store](https://apps.apple.com/us/app/stosvpn/id6744003051)
2. Download StikJIT .ipa from [GitHub](https://github.com/0-Blu/StikJIT/releases)
3. Sideload StikJIT using AltStore Classic
4. Launch StosVPN and tap "Connect"
5. Press "Allow" when prompted to add VPN Configurations and follow instructions
6. Launch StikJIT
7. Tap 'Select Pairing File'
8. Select the `.mobiledevicepairing` file you transferred to your device in the above steps

</details>

## Enabling JIT

<details>

<summary>StikDebug (AltStore PAL)</summary>

1. Open AltStore Classic
2. Long-press an app in My Apps
3. Tap "Enable JIT"
4. The chosen app will then launch with JIT enabled

</details>

<details>

<summary>StikJIT (AltStore Classic)</summary>

1. Open StosVPN and tap "Connect"
2. Open AltStore Classic
3. Long-press an app in My Apps
4. Tap "Enable JIT"
5. The chosen app will then launch with JIT enabled

</details>

{% hint style="warning" %}
If you see a 'Device Not Mounted' error alert, force-quit StikDebug and try again.
{% endhint %}


# AltJIT

AltJIT allows apps sideloaded with AltStore to enable just-in-time compilation, more commonly known as JIT. JIT allows some apps to run significantly faster — or even at all — but iOS does not normally allow apps to use JIT for security reasons. AltJIT is an AltStore-specific workaround that allows you to enable JIT for any sideloaded app whenever you're on the same WiFi as AltServer.

### Enable JIT

{% hint style="info" %}
There are additional requirements for users on iOS 17. Please see the instructions below.
{% endhint %}

#### **AltStore**

1. Open the "My Apps" tab then long-press the app you want to use JIT.&#x20;
2. Press "Enable JIT" to launch the app, and within a few seconds you should see an AltStore notification saying JIT has been enabled.&#x20;

#### **AltServer**

1. First, make sure that the app you want to use JIT with is running in the foreground of your device.&#x20;
2. Go to “Enable JIT” > \[Your Device], then choose an app you want to use with JIT.&#x20;

{% hint style="info" %}
Once enabled, an app can continue using JIT until it is force-quit from the app switcher or purged from memory while suspended in the background.
{% endhint %}

If you're experiencing issues getting AltJIT to work, be sure to check out our [troubleshooting guide](/altstore-classic/troubleshooting-guide).

### iOS 17 Instructions (macOS only)

{% hint style="warning" %}
Using AltJIT on iOS 17 is not yet supported for Windows users.
{% endhint %}

Currently, there are extra steps needed to enable JIT on iOS 17+:

1. Open Terminal on your Mac
2. Install Xcode Command Line Tools with the following command:

```
xcode-select --install
```

{% hint style="warning" %}
If you are running macOS Sonoma and see an error that Command Line Tools aren’t currently available, try the following commands instead:
{% endhint %}

```
sudo mkdir -p /Library/Developer/CommandLineTools   
sudo touch /Library/Developer/CommandLineTools/.beta  
```

3. Install [Homebrew](https://brew.sh/) with the following command:

{% code overflow="wrap" %}

```
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
```

{% endcode %}

4. Install [pymobiledevice3](https://github.com/doronz88/pymobiledevice3) with the following commands:

```
brew install openssl@3 
python3 -m pip install -U pymobiledevice3==2.30.0 
```

{% hint style="warning" %}
You must use pymobiledevice3 version 2.30.0 or earlier. Later versions may not be compatible.
{% endhint %}

5. Connect your device to your Mac via lightning/USB-C. **Enabling JIT via WiFi is not yet supported**
6. Open AltStore (or any app that requires JIT)
7. AltServer run Enable JIT

Once everything is installed, you can now enable JIT as usual from AltServer, though you may be asked to enter your password.

{% hint style="info" %}
Enabling JIT on iOS 17 may take up to a minute. To speed up this process, we recommend installing [Xcode](https://apps.apple.com/us/app/xcode/id497799835?mt=12).
{% endhint %}

### Troubleshooting

#### "The process 'altjit' failed with code 1. The process 'python3' failed with code 1. stream.tell() failed"

The version of pymobiledevice3 you are using is not currently working with AltServer. Please run the following command to install the last compatible version:

```
python3 -m pip install pymobiledevice3==2.30.0 construct==2.10.69
```

#### "Could not connect to device. The process 'python3' returned unexpected output. Error: No such command 'start-quic-tunnel'."

The version of pymobiledevice3 you are using is not currently working with AltServer. Please run the following command to install the last compatible version:

```
python3 -m pip install pymobiledevice3==2.30.0 construct==2.10.69
```

####

#### "pymobiledevice3 timed out" (AltServer.ProcessError 0)

If you keep getting this error while trying to enable JIT, you can try extending the default timeout duration by entering the command below in Terminal.  Just change "120" to your preferred duration (in seconds).

```
defaults write com.rileytestut.AltServer JITTimeout 120
```

####

#### "pymobiledevice3 not installed"

Make sure you have followed the above instructions and installed pymobiledevice3. If you're still seeing this error after you've installed it, you can try downloading Xcode and using this command to reinstall pymobiledevice3:

{% code overflow="wrap" %}

```
/Applications/Xcode.app/Contents/Developer/usr/bin/python3 -m pip install -U pymobiledevice3
```

{% endcode %}

####

#### "Could not attach debugger to \[app]. \[app] is not running"

This means that you tried to enable JIT without the requested app running in the foreground. Make sure to launch the app and have it running before you enable JIT.

If you're still running into issues, you can enable it from AltStore by long-pressing the app in the My Apps tab and selecting "Enable JIT"

####

#### "Could not connect to device \[Device ID]."

Make sure your device is plugged into your Mac/PC via USB/Lightning until AltJIT has successfully been enabled. Once it's been enabled, you can unplug your device and continue using JIT as long as the app is kept running.


# Trusted Sources

Trusted Sources are sources that have been reviewed to make sure they meet our safety standards and available to add easily from within AltStore. You can learn more about adding other 3rd Party sources [here](/altstore-pal/sources).

#### <mark style="color:purple;">OatmealDome’s AltStore Source</mark> <a href="#mark-stylecolorpurpleoatmealdomes-sourcemark" id="mark-stylecolorpurpleoatmealdomes-sourcemark"></a>

**URL**: [https://altstore.oatmealdome.me](altstore://source?url=https://altstore.oatmealdome.me)

**Apps:**

* [DolphiniOS](https://dolphinios.oatmealdome.me)&#x20;
* [DolphiniOS (beta)](https://dolphinios.oatmealdome.me/beta)&#x20;

#### <mark style="color:purple;">UTM Repository</mark>

**URL**: [https://alt.getutm.app](altstore://source?url=https://alt.getutm.app)

**Apps:**

* [UTM](https://getutm.app/)&#x20;

#### <mark style="color:purple;">Flyinghead</mark> <a href="#mark-stylecolorpurpleflyingheads-sourcemark" id="mark-stylecolorpurpleflyingheads-sourcemark"></a>

**Link**: [https://flyinghead.github.io/flycast-builds/altstore.json](altstore://source?url=https://flyinghead.github.io/flycast-builds/altstore.json)

**Apps:**

* [Flycast](https://utip.io/flyinghead)&#x20;

#### <mark style="color:purple;">Provenance</mark> <a href="#mark-stylecolorpurpleflyingheads-sourcemark" id="mark-stylecolorpurpleflyingheads-sourcemark"></a>

**Link**: [https://provenance-emu.com/apps.json](https://provenance-emu.com/#)

**Apps:**

* [Provenance](https://provenance-emu.com/#)

#### <mark style="color:purple;">PojavLauncher</mark> <a href="#mark-stylecolorpurpleflyingheads-sourcemark" id="mark-stylecolorpurpleflyingheads-sourcemark"></a>

**Link**: [https://alt.crystall1ne.dev](https://provenance-emu.com/#)

**Apps:**

* [PojavLauncher](https://pojavlauncherteam.github.io/)


# MacDirtyCow

Follow these instructions to remove the 3-app limit using the MacDirtyCow exploit

{% hint style="info" %}
MacDirtyCow requires iOS 14.0-16.1.2 (excluding 15.7.2)

**iOS 16.2 or later is not supported**
{% endhint %}

1. Download WDBRemoveThreeAppLimit.ipa [from GitHub](https://github.com/zhuowei/WDBRemoveThreeAppLimit/releases/tag/v1.0)&#x20;
2. Sideload the .ipa with AltStore
3. Open WDBRemoveThreeAppLimit and tap ‘Go’
4. Return to AltStore and open Settings tab
5. Swipe up with 3 fingers 3 times to reveal MacDirtyCow section
6. Disable “Enforce 3-App Limit”&#x20;
7. You can now install more than 3 apps!

{% hint style="warning" %}
You are still limited to 10 App IDs at a time
{% endhint %}

&#x20;

&#x20;               ![](/files/raio6oPFjFc1CmUxm6K8) ![](/files/fvTkDCRoo5qicfctWdP1)


# Error Codes

This page includes a list of various error codes you may receive while using AltStore.

## AltStore Errors

#### <mark style="color:purple;">**(1000) An unknown error occurred.**</mark>&#x20;

`AltStore.OperationError`

This means that AltStore ran into an unexpected error. Please check our [Troubleshooting Guide](/altstore-classic/troubleshooting-guide), and you can reach out to us directly if the issue persists.

####

#### <mark style="color:purple;">**(1001) The operation returned an unknown result.**</mark>&#x20;

This means that AltStore ran into an unexpected error. Please check our [Troubleshooting Guide](/altstore-classic/troubleshooting-guide), and you can reach out to us directly if the issue persists.

#### <mark style="color:purple;">**(1002) The operation was cancelled.**</mark>&#x20;

`AltStore.OperationError`

This means that the performed action was stopped. Please try again.

#### <mark style="color:purple;">**(1003) The operation timed out.**</mark>&#x20;

`AltStore.OperationError`

This means that AltStore ran into problems trying to complete the requested action. Please try again and check our [Troubleshooting Guide](/altstore-classic/troubleshooting-guide) for additional help. You can reach out to us directly if the issue persists.

#### <mark style="color:purple;">**(1004) You are not signed in.**</mark>&#x20;

`AltStore.OperationError`

This means that you must enter your Apple ID information in the settings tab to do the requested action.

#### <mark style="color:purple;">**(1005) The app**</mark> <mark style="color:purple;">**could not be found.**</mark>

`AltStore.OperationError`

This means that AltStore could not locate the file to download or install, most likely because the file does not exist at the provided URL.

#### <mark style="color:purple;">**(1006) AltStore could not determine this device's UDID.**</mark>

`AltStore.OperationError`

This means that AltStore couldn't read the device UDID embedded by AltServer when installing AltStore. Make sure you're installing AltStore with the latest AltServer version and not via another method.

#### <mark style="color:purple;">**(1007) This app is in an invalid format**</mark><mark style="color:purple;">.</mark>

`AltStore.OperationError`

This means the app you're trying to install is not a standard .ipa. Try downloading the app from another location.

#### <mark style="color:purple;">**(1008) Invalid parameters**</mark><mark style="color:purple;">.</mark>

`AltStore.OperationError`

This means an internal error occured and AltStore couldn't provide the necessary information to perform the requested task. Please try again and check our [Troubleshooting Guide](/altstore-classic/troubleshooting-guide) for additional help. You can reach out to us directly if the issue persists.

#### <mark style="color:purple;">**(1009) You cannot register more than 10 App IDs within a 7 day period**</mark>.

`AltStore.OperationError`

This means that you have reached the maximum amount of App IDs available. Please check the App IDs in the My Apps tab to see when they will expire.

#### <mark style="color:purple;">**(1010) There are no AltStore sources.**</mark>

`AltStore.OperationError`

This means an internal error occured and AltStore is unable to fetch changes for any Sources you've added. Please try again and check our [Troubleshooting Guide](/altstore-classic/troubleshooting-guide) for additional help. You can reach out to us directly if the issue persists.

#### <mark style="color:purple;">**(1011) AltStore was denied permission to launch the app.**</mark>

`AltStore.OperationError`

This means AltStore couldn't launch a sideloaded app because you tapped "Cancel" on the "AltStore wants to open \[app]" alert, or because you still need to trust your Apple ID in Settings.

#### <mark style="color:purple;">**(1012) AltStore's shared app group could not be accessed.**</mark>

`AltStore.OperationError`

This means AltStore was not able to access the directory where app backups are stored. Make sure you're installing AltStore with the latest AltServer version and not via another method.

#### <mark style="color:purple;">**(1200) AltServer could not be found.**</mark>

`AltStore.OperationError`

This means that AltStore is having trouble discovering AltServer on your local network. Make sure you're connected to the same WiFi network as your PC/Mac running AltServer, or try connecting your device to your computer via USB.

#### <mark style="color:purple;">**(1201) A connection to AltServer could not be established.**</mark>

`AltStore.OperationError`

This means that AltStore is having trouble connecting to AltServer on your PC/Mac. Make sure you have Wi-Fi sync enabled, and otherwise you may try plugging in your device directly via USB.

#### <mark style="color:purple;">**(1202) The connection to AltServer was dropped.**</mark>

`AltStore.OperationError`

This means that AltStore's connection to AltServer on your PC/Mac was interrupted. Make sure you have Wi-Fi sync enabled, and otherwise you may try plugging in your device directly via USB.

## AltServer Errors

#### <mark style="color:purple;">**(0) Exception Error**</mark>

`AltServer.ExceptionError`

This error can appear for many reasons, and below are a few that you might see (this is not an exhaustive list).

#### "vector too long"

This means that Windows Defender is blocking your request. You may need to first disable Real-Time Protection on Windows in order for AltStore to work as expected.

#### <mark style="color:purple;">**(1999) Underlying Error**</mark>&#x20;

`AltServer.ServerError`

This means that AltServer ran into an unknown error. We recommend reaching out to our support channels if the issue persists.

#### <mark style="color:purple;">**(2000) Unknown Error**</mark>&#x20;

`AltServer.ServerError`

This means that AltServer ran into an unknown error. We recommend reaching out to our support channels if the issue persists.

#### <mark style="color:purple;">**(2001) Could not connect to AltServer. / There was an error connecting to the device.**</mark>&#x20;

`AltServer.ServerError`

This means that AltServer is having trouble connecting to your iOS device. Try plugging your device directly into your computer if it is not already.

If you still have issues, please refer to the [Troubleshooting Guide](/altstore-classic/troubleshooting-guide).

#### <mark style="color:purple;">**(2002) Lost Connection to AltServer.**</mark>

`AltServer.ServerError`

This means that the connection was dropped between AltServer and your iOS device. Make sure your device and computer are connected to the same WiFi network and try again.

If you still have issues, please refer to the [Troubleshooting Guide](/altstore-classic/troubleshooting-guide).

#### <mark style="color:purple;">**(2003) AltServer could not find this device.**</mark>

`AltServer.ServerError`

This means that AltServer had trouble locating your iOS device either over USB or via WiFi. Make sure your device and computer are connected to the same WiFi network and that your device is trusted and try again.

If you still have issues, please refer to the [Troubleshooting Guide](/altstore-classic/troubleshooting-guide).

#### <mark style="color:purple;">**(2004) Failed to write app data to device.**</mark>

`AltServer.ServerError`

This means that AltServer tried to write a file to your device and could not or was interrupted. Make sure your device and computer are connected to the same WiFi network and that your device is trusted and try again.

If you still have issues, please refer to the [Troubleshooting Guide](/altstore-classic/troubleshooting-guide).

#### <mark style="color:purple;">**(2005) AltServer received an invalid request.**</mark>

`AltServer.ServerError`

This means that AltServer received a request it did not understand. This may be because you are running an outdated AltServer version, so please make sure to update to the latest version.

#### <mark style="color:purple;">**(2006) AltServer sent an invalid response.**</mark>

`AltServer.ServerError`

This means that AltStore received a response from AltServer it did not understand. This may be because you are running an outdated AltStore version, so please make sure to update to the latest version.

#### <mark style="color:purple;">**(2007) The app is invalid.**</mark>

`AltServer.ServerError`

This means that the app your were attempting to install was found to be in an invalid format. If you continue to have issues, try downloading from alternate source.

#### <mark style="color:purple;">**(2008) An error occurred while installing the app.**</mark>

`AltServer.ServerError`

This means that iOS rejected the app you were attempting to install. Make sure to use a version compatible your iOS version.

#### <mark style="color:purple;">**(2009) Cannot activate more than 3 apps with a non-developer Apple ID.**</mark>

`AltServer.ServerError`

This means that you have reached the maximum amount of sideloaded apps you can have with a Free Developer Account. Apple limits the amount of sideloaded apps you can have with a free account, and to remove the limit you need to sign up for a Paid Developer account at [developer.apple.com](https://developer.apple.com).

You can also remove this limit if you have a device capable of using the [MacDirtyCow](/altstore-classic/macdirtycow) exploit

#### <mark style="color:purple;">**(2010) Your device must be running iOS 12.2 or later to install AltStore.**</mark>

`AltServer.ServerError`

This means that you will need to update your phone to the minimum iOS version required before you can continue to use AltStore.

#### <mark style="color:purple;">**(2011) AltServer does not support this request.**</mark>

`AltServer.ServerError`

This means that AltServer received a request it did not recognize. You may be running an outdated AltServer version, so be sure to update.

#### <mark style="color:purple;">**(2012) Received an unknown response from AltServer.**</mark>

`AltServer.ServerError`

This means that AltStore received a response from AltServer it did not recognize. You may be running an outdated AltStore version, so be sure to update.

#### <mark style="color:purple;">**(2013) The provided anisette data is invalid.**</mark>

`AltServer.ServerError`

This means that the Apple ID information AltStore used to try to sign in was invalid because of an unknown issue. Make sure you are using the latest version of iCloud if you are on Windows and that your date/time are accurate.

#### <mark style="color:purple;">**(2014) AltServer could not connect to Mail plug-in. (macOS)**</mark>

`AltServer.ServerError`

This means that AltServer could not find the Mail plug-in either because it is not enable or you are not running the Mail app on your Mac. Make sure the Mail app is running on your Mac and that the plug-in is enabled. For more help, check the [Mail Plug-In](/altstore-classic/how-to-install-altstore-macos/enable-mail-plug-in) page in the install guide.

#### <mark style="color:purple;">**(2015) Could not find provisioning profile.**</mark>

`AltServer.ServerError`

This means that the provisioning profile needed to install this app could not be located. This is most likely a problem with AltStore itself, so please message support or to our Patreon inbox.

#### <mark style="color:purple;">**(2016) An error occurred while removing the app.**</mark>

`AltServer.ServerError`

This means that there was an issue while removing an app. There are a number of different issues so make sure to check your error log for a more specific message on your issue.&#x20;

#### <mark style="color:purple;">**(2100) The Requested app is not currently running on the device.**</mark>

`AltServer.ServerError`

This means that you tried to enable JIT without the requested app running in the foreground. Make sure to launch the app and have it running before you enable JIT.

#### <mark style="color:purple;">**(2101) The disk is incompatible with \[iOS version].**</mark>

`AltServer.ServerError`

This means that the developer disk required to enable JIT is not compatible with your device's OS version. Make sure you're running the latest version of AltStore and AltServer, and try again later.

## **Apple Developer Errors**

#### <mark style="color:purple;">**(3000) An unknown error occurred.**</mark>

`AltStore.AppleDeveloperError`

Updated information coming soon

#### <mark style="color:purple;">**(3001) The provided parameters are invalid.**</mark>

`AltStore.AppleDeveloperError`

Updated information coming soon

#### <mark style="color:purple;">**(3002) Incorrect Apple ID or password.**</mark>

`AltStore.AppleDeveloperError`

This means that the Apple ID credentials you used were invalid. Make sure the username and password are correct.&#x20;

If you still have issues, you can also try creating a new Apple ID to use with AltStore.

#### <mark style="color:purple;">**(3003) An app-specific password is required. You can create one at appleid.apple.com.**</mark>

`AltStore.AppleDeveloperError`

Updated information coming soon.

#### <mark style="color:purple;">**(3004) You are not a member of any development teams.**</mark>

`AltStore.AppleDeveloperError`

Updated information coming soon.

#### <mark style="color:purple;">**(3005) This device's UDID is invalid.**</mark>

`AltStore.AppleDeveloperError`

Updated information coming soon.

#### <mark style="color:purple;">**(3006) This device is already registered with another ID.**</mark>

`AltStore.AppleDeveloperError`

Updated information coming soon.

#### <mark style="color:purple;">**(3007) The certificate request is invalid.**</mark>

`AltStore.AppleDeveloperError`

Updated information coming soon.

#### <mark style="color:purple;">**(3008) There is no certificate with the requested serial number for this team.**</mark>

`AltStore.AppleDeveloperError`

Updated information coming soon.

#### <mark style="color:purple;">**(3009) The name for this app is invalid.**</mark>

`AltStore.AppleDeveloperError`

AltStore couldn’t register an App ID with Apple because the app name contains non-ASCII characters. You can try downloading from another source.

#### <mark style="color:purple;">**(3010) The bundle identifier for this app is invalid.**</mark>

`AltStore.AppleDeveloperError`

Updated information coming soon.

#### <mark style="color:purple;">**(3011) The bundle identifier for this app has already been registered.**</mark>

`AltStore.AppleDeveloperError`

Updated information coming soon.

#### <mark style="color:purple;">**(3012) There is no App ID with the requested identifier on this team.**</mark>

`AltStore.AppleDeveloperError`

Updated information coming soon.

#### <mark style="color:purple;">**(3013) You may only register 10 App IDs every 7 days.**</mark>

`AltStore.AppleDeveloperError`

Updated information coming soon.

#### <mark style="color:purple;">**(3014) The provided app group is invalid.**</mark>

`AltStore.AppleDeveloperError`

Updated information coming soon.

#### <mark style="color:purple;">**(3015) App group does not exist.**</mark>

`AltStore.AppleDeveloperError`

Updated information coming soon.

#### <mark style="color:purple;">**(3016) The identifier for the requested provisioning profile is invalid.**</mark>

`AltStore.AppleDeveloperError`

Updated information coming soon.

#### <mark style="color:purple;">**(3017) There is no provisioning profile with the requested identifier on this team.**</mark>

`AltStore.AppleDeveloperError`

If you are seeing this error, it's likely due to a recent server-side change made by Apple. Please see the following announcement with more info: <https://twitter.com/altstoreio/status/1638599316762664974?s=20>

#### <mark style="color:purple;">**(3018) This account requires signing in with two-factor authentication.**</mark>

`AltStore.AppleDeveloperError`

Updated information coming soon.

#### <mark style="color:purple;">**(3019) Incorrect verification code.**</mark>

`AltStore.AppleDeveloperError`

Updated information coming soon.

####

#### <mark style="color:purple;">**(3020) Failed to perform authentication handshake with server.**</mark>

`AltStore.AppleDeveloperError`

Updated information coming soon.

#### <mark style="color:purple;">**(3021) The provided anisette data is invalid.**</mark>

`AltStore.AppleDeveloperError`

This error means that the information used to authenticate your AppleID information either expired or invalid. Make sure your computer date and time are accurate and that you’ve installed iTunes and iCloud from Apple.

## **Apple API Error**

#### <mark style="color:purple;">(1100) Your session has expired.</mark>

`Apple.APIError`

This error means that the information used to authenticate your Apple ID is either expired or invalid. Make sure your computer's date and time are accurate and try again.

#### <mark style="color:purple;">(1102) Apple ID cannot be used for development.</mark>

`Apple.APIError`

You may need to agree to Apple’s Terms of Service on [developer.apple.com](https://developer.apple.com). If that doesn’t work, you can create a new “throwaway” Apple ID dedicated to sideloading.

#### <mark style="color:purple;">(-20101) Your account information was entered incorrectly.</mark>

`Apple.APIError`

This error means that the username or password used to authenticate your Apple ID is either expired or invalid. Make sure you've entered them both in correctly and that your computer's date and time are accurate.

## **Connection Errors**

#### <mark style="color:purple;">**(0) Error Unknown.**</mark>

`AltServer.ConnectionError`

This means that AltServer ran into an unknown error. We recommend reaching out to our support channels if the issue persists.

#### <mark style="color:purple;">**(1) Device Locked.**</mark>

`AltServer.ConnectionError`

This means that you will need to unlock your device before AltServer can connect.

#### <mark style="color:purple;">**(2) Invalid Request.**</mark>

`AltServer.ConnectionError`

Updated information coming soon

#### <mark style="color:purple;">**(3) Invalid Response.**</mark>

`AltServer.ConnectionError`

Updated information coming soon

#### <mark style="color:purple;">**(4) Usbmuxd.**</mark>

`AltServer.ConnectionError`

Updated information coming soon

#### <mark style="color:purple;">**(5) SSL Error.**</mark>

`AltServer.ConnectionError`

Updated information coming soon

#### <mark style="color:purple;">**(6) Timed Out.**</mark>

`AltServer.ConnectionError`

Updated information coming soon

## **Windows Errors**

<mark style="color:purple;">**(1100) Your session has expired. Please log in.**</mark>&#x20;

`NSURLErrorDomain`

1. Make sure iTunes is closed.&#x20;
2. Go to Program Data -> Apple Computer -> iTunes -> ADI -> delete the files&#x20;
3. Start iTunes&#x20;
4. Retry installing AltStore&#x20;

## Other Errors

#### <mark style="color:purple;">(22410) Failed to write to disk</mark>

This means that an error occurred while writing files to disk. Make sure your phone and PC both have plenty of available disk space and try again.

#### <mark style="color:purple;">(512) Failed to write to disk</mark>

`NSCocoaErrorDomain`

This means that an error occurred while writing files to disk. Make sure your phone and PC both have plenty of available disk space and try again.

#### <mark style="color:purple;">**(1) AltJIT failed with error code 1 (iOS 17)**</mark>

`AltServer.ProcessError`

If you are trying to enable JIT on an iOS 17 device, you may see this error. Make sure to install all dependencies and keep your device connected with the app open until JIT has successfully been enabled. Instructions for this can be found [here](/altstore-classic/enabling-jit/altjit#ios-17-instructions-macos-only).

#### <mark style="color:purple;">**(3) AltStore PAL Install Error**</mark>

`AltStore.InstallationError3`

If you receive this error, it means the developer might not yet have agreed to the latest Apple Developer Program License Agreement. Once the developer agrees, the app should work as expected.

#### <mark style="color:purple;">**Socket Errors**</mark>

If you receive a "Socket" Error, it likely means you need to enable Developer Mode on your device. You can do this by going to Settings > Privacy & Security > Developer Mode (ON)


# Troubleshooting Guide

Having problems with AltStore or AltServer? Try some of these troubleshooting tips!

### Installation&#x20;

#### <mark style="color:purple;">I followed the instructions, but I still can't install AltStore.</mark>

Please make sure you tried the following:

* Have you said “Trust” on both your Mac and iOS device after connecting your device to your Mac? You can check by opening Finder (macOS 10.15 Catalina or later) or iTunes (macOS 10.14 Mojave and earlier) with your device connected to your Mac and seeing if a dialog box pops up asking if you want to trust the device.
* Try using another Apple ID. If necessary, you can [create a new Apple ID](https://appleid.apple.com/account#!\&page=create) specifically for use with AltStore for free.
* Make sure iTunes and/or iCloud are running while using AltServer.
* (Windows) Right-click AltServer and choose “Run as Administrator”&#x20;
* (Windows) Did you install iTunes or iCloud from the Microsoft Store? If so, you’ll need to uninstall them and download the latest versions directly from Apple.

### Sign-In

#### <mark style="color:purple;">AltStore freezes/takes forever to sign-in.</mark>

This could happen for a number of reasons. If you’re experiencing this issue, please check the following:

* Are you on public/work/school WiFi? If so, your WiFi might be preventing devices from discovering each other. Try connecting your computer to your phone’s hotspot and trying again. (If you're using an iPad, make sure it's connected to your hotspot as well.)
* Have you said “Trust” on both your Mac and iOS device after connecting your device to your Mac? You can check by Finder (macOS 10.15 Catalina or later) or iTunes (macOS 10.14 Mojave and earlier) and seeing if a dialog box pops up asking if you want to trust your phone.
* (Windows) Firewall might be blocking incoming network connections to AltServer. You must enable network access for AltServer in your firewall settings for it to receive refreshed apps from AltStore.
* (Windows) Did you install iTunes or iCloud from the Microsoft Store? If so, you’ll need to uninstall them and download the latest versions directly from Apple.
* You may need to make sure iTunes and iCloud are running on your computer as well.
* Finally, try plugging your iPhone or iPad into your computer. This should fix all connectivity problems, but does mean AltStore may not be able to automatically refresh apps for you in the background over WiFi.

### AltServer

#### <mark style="color:purple;">AltStore says “Could not find AltServer” when trying to sideload or refresh apps.</mark>

AltServer must be running on a computer connected to the same WiFi as AltStore in order to sideload or refresh apps. If AltServer is running on the same WiFi network as AltStore and you're still receiving this error, try the following:

* Are you on public/work/school WiFi? If so, your WiFi might be preventing devices from discovering each other. Try connecting your computer to your phone’s hotspot and trying again. (If you're using an iPad, make sure it's connected to your hotspot as well.)
* Have you said “Trust” on both your Mac and iOS device after connecting your device to your Mac? You can check by Finder (macOS 10.15 Catalina or later) or iTunes (macOS 10.14 Mojave and earlier) and seeing if a dialog box pops up asking if you want to trust your phone.
* (Windows) Your firewall might be blocking incoming network connections to AltServer. You must enable network access for AltServer in your firewall settings for it to receive refreshed apps from AltStore.
* (Windows) Did you install iTunes or iCloud from the Microsoft Store? If so, you’ll need to uninstall them and download the latest versions directly from Apple.
* Finally, try plugging your iPhone or iPad into your computer. This should fix all connectivity problems, but does mean AltStore may not be able to automatically refresh apps for you in the background over WiFi.

#### <mark style="color:purple;">I’m unable to change my network settings to allow devices to communicate with each other (such as on school/work/public WiFi).</mark>

You can always sideload and refresh apps without WiFi by plugging your iPhone or iPad into your computer. However, this means AltStore may not be able to refresh apps for you in the background over WiFi.

### AltJIT

#### <mark style="color:purple;">AltServer says “JIT could not be enabled for \[App]".</mark>

This could happen for a number of reasons. If you’re experiencing this issue, please check the following:

* Make sure the app you are trying to enable JIT for is running in the foreground on your device.
* Are you on public/work/school WiFi? If so, your WiFi might be preventing devices from discovering each other. Try connecting your computer to your phone’s hotspot and trying again. (If you're using an iPad, make sure it's connected to your hotspot as well.)
* Have you said “Trust” on both your Mac and iOS device after connecting your device to your Mac? You can check by Finder (macOS 10.15 Catalina or later) or iTunes (macOS 10.14 Mojave and earlier) and seeing if a dialog box pops up asking if you want to trust your phone.
* (Windows) Firewall might be blocking incoming network connections to AltServer. You must enable network access for AltServer in your firewall settings for it to receive refreshed apps from AltStore.
* (Windows) Did you install iTunes or iCloud from the Microsoft Store? If so, you’ll need to uninstall them and download the latest versions directly from Apple.
* You may need to make sure iTunes and iCloud are running on your computer as well.
* Finally, try plugging your iPhone or iPad into your computer. This should fix all connectivity problems, but does mean AltStore may not be able to automatically refresh apps for you in the background over WiFi.

{% hint style="info" %}
If you can't find the answer to your question here, you can email <support@altstore.io> and we will try to get back to you as soon as we can.&#x20;
{% endhint %}

### What if I need to use the Windows Store version of iCloud?

AltStore requires that you install iCloud directly from Apple in order to authenticate your Apple ID. If you need to use the Windows Store version instead, you can follow these alternate instructions copied from [this reddit post](https://www.reddit.com/r/jailbreak/comments/rp5buz/tutorial_how_to_use_altserver_if_you_have_to_use/?utm_source=share\&utm_medium=ios_app\&utm_name=iossmf):

1. Download and install [iTunes](https://www.apple.com/itunes/) from the official Apple website. Make sure to **scroll down** and click on "Windows" next to the "Looking for other versions?" text.
2. Download and install [iCloud](https://support.apple.com/en-us/HT204283) from the official Apple website. Make sure to **scroll down** and click on the link in this text: "\* On Windows 7 and Windows 8, you can *download iCloud for Windows on Apple's website*".
3. Locate your "C:\Program Files (x86)\Common Files\Apple" folder. Copy the "Apple Application Support" and "Internet Services" folders, then create a new folder, name it anyway you want, and paste them in.
4. Remove iCloud from your computer. **DO NOT** remove iTunes! (Also, **NEVER** remove the "Apple Mobile Device Support" or the "Apple Application Support" that are installed alongside iTunes and iCloud.)
5. Install [iCloud](https://www.microsoft.com/store/productId/9PKTQ5699M62) from the Windows Store.
6. Download and install [AltServer](https://altstore.io/). When you open it for the first time, click on "Choose Folder...", and locate the folder you created in the 3rd step.


# Make a Source

## Overview

To distribute your apps with AltStore you need to first create a source, which is just a self-hosted JSON file containing basic metadata about your apps. Below is a list of required keys to make a valid source in AltStore along with optional keys you can use to further customize your source.

### Example Source&#x20;

Download the appropriate example source as a template to edit with your source's information.

{% hint style="success" %}
Want to generate your source automatically? Try the community-built tool AltPublisher! [probably.ninja/altpublisher](https://probably.ninja/altpublisher)
{% endhint %}

**AltStore PAL**

{% file src="/files/bx7vc660x6yUEpdOxKD7" %}

**AltStore Classic**

{% file src="/files/Is8ne2PA23zgxjGBHJuP" %}

## Source Keys

### <mark style="color:purple;">Source</mark>

```json
{
  "name": "My Example Source",
  "subtitle": "A source for all of my apps",
  "description": "Welcome to my source! Here you'll find all of my apps.",
  "iconURL": "https://example.com/source_icon.png",
  "headerURL": "https://example.com/source_header.png",
  "website": "https://example.com",
  "fediUsername": "example",
  "patreonURL": "https://patreon.com/mycampaign",
  "tintColor": "#F54F32",
  "nsfw": false,
  "featuredApps": [
    "com.example.myapp",
    "com.example.anotherapp",
  ],
  "apps": [],
  "news": [],
}
```

#### `name` <mark style="color:purple;">(string)</mark>

The name of your source as it will appear in AltStore.

#### `subtitle` <mark style="color:purple;">(string)</mark>

*(optional)*

A short, one-sentence description of your source. This will appear underneath the source's name on its About page.

#### `description` <mark style="color:purple;">(string)</mark>

*(optional)*

A full-length description of your source. This can include any information you believe is relevant for your source, such as information about your apps or additional links.

#### `iconURL` <mark style="color:purple;">(string)</mark>

*(optional)*

A link to an image that will be used to visually identify your source. It will appear as a circle.

{% hint style="info" %}
If not provided, this defaults to the `iconURL` of the first app listed in your source.
{% endhint %}

#### `headerURL` <mark style="color:purple;">(string)</mark>

(optional)

A link to an image that will be displayed as the header of your source's About page. The image will be blurred by default, but can be viewed by swiping the source's info banner.

{% hint style="info" %}
&#x20;We recommended using a **3:2** **aspect ratio** for best results.
{% endhint %}

{% hint style="info" %}
If not provided, this defaults to your source's `iconURL`.
{% endhint %}

#### `website` <mark style="color:purple;">(string)</mark>

*(optional)*

A link to the primary website for your source. It will be displayed underneath your source's name on its About page.

#### `fediUsername` <mark style="color:purple;">(string)</mark>

*(optional)*

Your preferred username for your source's account on explore.alt.store (e.g. "utm" will become [@utm@alt.store](https://explore.alt.store/@utm)). **This cannot be changed later.**

{% hint style="warning" %}
You must include this to make your source discoverable with our [`REST API`](/developers/rest-api#federate-source)
{% endhint %}

#### `patreonURL` <mark style="color:purple;">(string)</mark>

*(optional)*

A link to your Patreon campaign.  This will enable you to distribute Patreon-only apps through your Source.

You must add a Patreon object to every app listing you want to designate as Patreon-only. See the [Apps](#apps) section for more information.

#### `tintColor` <mark style="color:purple;">(string)</mark>

*(optional)*

A color that will be used to theme your source's About page. We recommend using a color that works well with your source's icon for consistent theming, but you are free to choose any color you want. **Black and white tint colors will be automatically adjusted for legibility.**

{% hint style="info" %}
This must be in hexadecimal format (e.g **#F54F32** or **C9B632**)
{% endhint %}

{% hint style="info" %}
If not provided, this defaults to the `tintColor` of the first app listed in your source.
{% endhint %}

#### `nsfw` <mark style="color:purple;">(boolean)</mark>

Signifies whether your source contains any apps with adult (NSFW) content.

{% hint style="info" %}
This value must be accurate if you've opted in for discovery.
{% endhint %}

#### `featuredApps` <mark style="color:purple;">(array of strings)</mark>

*(optional)*

An ordered list of app `bundleIdentifier`'s you want featured on your source's About page. Currently, only the first five will be displayed.

{% hint style="info" %}
If not provided, this defaults to the first five apps listed in your source.
{% endhint %}

#### `apps` <mark style="color:purple;">(array of Apps)</mark>

An ordered list of the apps in your source.&#x20;

See [Apps](#apps) section below for more.

#### `news` <mark style="color:purple;">(array of News Item)</mark>

A list of the News items in your source. The ordering does not matter because AltStore will display them in reverse chronological order according to their `date`.&#x20;

See [News Items](#news-items) section below for more.

### <mark style="color:purple;">Apps</mark>

```json
"apps": [
    {
        "name": "My Example App",
        "bundleIdentifier": "com.example.myapp",
        "marketplaceID": "12345678",
        "developerName": "Example Developer",
        "subtitle": "An awesome app.",
        "localizedDescription": "This is an awesome app only available on AltStore.",
        "iconURL": "https://example.com/myapp_icon.png",
        "tintColor": "#F54F32",
        "category": "utilities",
        "screenshots": [
            "https://example.com/myapp_screenshot1.png",
            "https://example.com/myapp_screenshot2.png",
            "https://example.com/myapp_screenshot3.png"
        ],
        "versions": [],
        "appPermissions": {},
        "patreon": {},
    },
]
```

#### `name` <mark style="color:purple;">(string)</mark>

The name of your app as it will appear on its store page.

#### `bundleIdentifier` <mark style="color:purple;">(string)</mark>

Your app's bundle identifier (`CFBundleIdentifier`). It is **case sensitive** and should match exactly what is in your `Info.plist`.

{% hint style="warning" %}
A source cannot have multiple apps with the same bundle identifier.
{% endhint %}

#### `marketplaceID` *<mark style="color:purple;">(string)</mark>*

The "Apple ID" of your notarized app. You can find this on your app's App Store Connect page under "App Information."

{% hint style="warning" %}
Not required for non-notarized apps distributed with AltStore (World)
{% endhint %}

#### `developerName` *<mark style="color:purple;">(string)</mark>*

The name of the developer or developers as it will appear on the store page.

#### `subtitle` <mark style="color:purple;">(string)</mark>

*(optional)*

A short, one-sentence description of your app that will appear in the Browse tab of AltStore.

#### `localizedDescription` <mark style="color:purple;">(string)</mark>

A full-length description of your app. This can include any information you believe is relevant for your app, such as feature descriptions or additional links.&#x20;

#### `iconURL` <mark style="color:purple;">(string)</mark>

A link to you app's icon image. It will automatically be masked to an app icon shape.

#### `tintColor`  <mark style="color:purple;">(string)</mark>

*(optional)*

The color used to theme your app's store page. We recommend using your app's existing tint color (if it has one), but you are free to choose any color you want.

{% hint style="info" %}
This must be in hexadecimal format (e.g **#F54F32** or **C9B632**)
{% endhint %}

#### `category` <mark style="color:purple;">(string)</mark>

*(optional)*

The store category best representing your app.

{% hint style="info" %}
This **must** be one of the below values. If no category is provided it will default to `other`

* `developer`
* `entertainment`
* `games`
* `lifestyle`
* `other`
* `photo-video`
* `social`
* `utilities`
  {% endhint %}

#### `screenshots` <mark style="color:purple;">(array of Screenshots)</mark>

*(optional)*

Screenshots of your app. We recommend showcasing your app's main features.&#x20;

Please see the [Screenshots](#screenshots) section below for detailed info and instructions.

#### `versions` <mark style="color:purple;">(array of App Versions)</mark>

A list of all the published versions of your app.

Please see the [App Versions](#app-versions) section below for detailed info and instructions

{% hint style="warning" %}
**The order of versions matters**. AltStore uses the order to determine which version is the "latest" release. For more information, see [Updating Apps](/developers/updating-apps)
{% endhint %}

#### `appPermissions` <mark style="color:purple;">(App Permissions object)</mark>

An object listing all entitlements and privacy permissions information used by the app.&#x20;

See [App Permissions](#app-permissions) section below for more.

#### `patreon` <mark style="color:purple;">(Patreon object)</mark>

*(optional)*

An object specifying the required pledge/tiers to download the app. &#x20;

See [Patreon](#patreon-apps) section below for more.

### <mark style="color:purple;">Screenshots</mark>

**Standard**

```json
"screenshots": [
    {
        "imageURL": "https://example.com/iphone_portrait_1.png"
    },
    {
        "imageURL": "https://example.com/iphone_portrait_2.png"
    },
    {
        "imageURL": "https://example.com/iphone_landscape.png",
        "width": 2556,
        "height": 1179
    },
]
```

If a screenshot has an aspect ratio of 9:19.5 (aka a portrait Face ID iPhone), you can optionally list the URL directly instead of a full `Screenshot` object:

```json
"screenshots": [ 
    "https://example.com/iphone_portrait_1.png",
    "https://example.com/iphone_portrait_2.png",
    {
        "imageURL": "https://example.com/iphone_landscape.png",
        "width": 2556,
        "height": 1179
    }
]
```

{% hint style="success" %}
Screenshots with an aspect ratio of 9:19.5 (aka a portrait Face ID iPhone) will have their corners automatically rounded.
{% endhint %}

#### Universal Apps

If your app supports both iPhone and iPad and you want to use different screenshots for each device, you can provide multiple arrays nested under the `iphone` and `ipad` keys, respectively, using the same format as above.

```json
"screenshots": {
    "iphone": [
        "https://example.com/iphone_portrait_1.png",
        "https://example.com/iphone_portrait_2.png",
        {
            "imageURL": "https://example.com/iphone_landscape.png",
            "width": 2556,
            "height": 1179
        }
    ],
    "ipad": [
        {
            "imageURL": "https://example.com/ipad_portrait.png",
            "width": 1668,
            "height": 2388
        },
        {
            "imageURL": "https://altstore.io/ipad_landscape",
            "width": 2388,
            "height": 1668
        }
    ]
}
```

#### `imageURL` <mark style="color:purple;">(string)</mark>

Link to a screenshot of your app.

#### `width` <mark style="color:purple;">(number)</mark>

*(optional)*

The pixel width of the image. If not provided, AltStore will assume a default size of 393 x 852 points (iPhone 15 in portrait mode).&#x20;

{% hint style="danger" %}
All iPad screenshots must provide an explicit`width.`
{% endhint %}

#### `height` <mark style="color:purple;">(number)</mark>

*(optional)*

The pixel height of the image. If not provided, AltStore will assume a default size of 393 x 852 points (iPhone 15 in portrait mode).&#x20;

{% hint style="danger" %}
All iPad screenshots must provide an explicit`height.`
{% endhint %}

### <mark style="color:purple;">App Versions</mark>

```json
"versions": [
  {
    "version": "1.0",
    "buildVersion": "60",
    "date": "2023-03-30",
    "localizedDescription": "First AltStore release!",
    "downloadURL": "https://myapp.com/myapp-1.0.ipa",
    "size": 79821,
    "minOSVersion": "12.0",
    "maxOSVersion": "16.3"
  },
]
```

For information on how to update your apps once they're published, see [Updating Apps](/developers/updating-apps).

#### `version` <mark style="color:purple;">(string)</mark>

Your app's version number (`CFBundleShortVersionString)`. It is **case sensitive** and should match exactly what is in your `Info.plist`.

#### `buildVersion` <mark style="color:purple;">(string)</mark>

Your app's build number (`CFBundleVersion)`. It is **case sensitive** and should match exactly what is in your `Info.plist`.

#### `marketingVersion` <mark style="color:purple;">(string)</mark>

*(optional)*

The full version displayed to users on your app's store page and throughout the UI. This can be anything you want and does not need to match `version` or `buildVersion`.

{% hint style="info" %}
If not provided, this will default to combining `version` and `buildVersion,`e.g. **1.3 (4)**
{% endhint %}

#### `date` <mark style="color:purple;">(string)</mark>

The release date for this version.&#x20;

{% hint style="info" %}
This should be in **ISO 8601** format (e.g. **2023-2-17** or **2023-02-17T12:00:00-06:00**)
{% endhint %}

#### `localizedDescription` <mark style="color:purple;">(string)</mark>

*(optional)*

A description of what's new in this version. You can use this to tell users about new features, bug fixes, etc.

#### `downloadURL` <mark style="color:purple;">(string)</mark>

{% hint style="warning" %}
If you're using Patreon with your app, you must attach your ADP or IPA to a Patreon post. For more information, see [Patreon Integration](/developers/patreon-integration#overview)
{% endhint %}

**AltStore Classic**

The URL of the uploaded `.ipa` file.

**AltStore PAL**

The URL of the `manifest.json` in your uploaded ADP, or the root directory of the ADP itself.

#### `size` <mark style="color:purple;">(number)</mark>

The size of your app in bytes. The size will displayed to users on your app's store page and throughout the UI.&#x20;

{% hint style="info" %}
**AltStore PAL:** For ADPs you can pick any of the variants from your `variant` folder to determine the size.
{% endhint %}

#### `assetURLs` <mark style="color:purple;">(dictionary of strings)</mark>

*(optional)*

If you are unable to preserve an ADP's directory structure as-is, this allows you to manually specify the download URL for individual files in an ADP.  The keys are the names of the files you want to override (minus file extensions) and the values are the URLs where they are hosted.

{% hint style="success" %}
This allows you to host ADPs using GitHub Releases!
{% endhint %}

```json
"assetURLs": {
    "manifest": "https://github.com/rileytestut/Delta/releases/download/v1.6/manifest.json",
    "signature": "https://github.com/rileytestut/Delta/releases/download/v1.6/signature",
    "fb855afc-8ce8-39b7-877e-63444105c95c": "https://github.com/rileytestut/Delta/releases/download/v1.6/fb855afc-8ce8-39b7-877e-63444105c95c.ipa"
}
```

#### `minOSVersion` <mark style="color:purple;">(string)</mark>

*(optional)*

The minimum iOS version supported by this release. AltStore will hide any updates that are not supported by the user's device.

#### `maxOSVersion` <mark style="color:purple;">(string)</mark>

*(optional)*

{% hint style="warning" %}
Only use this if your app is not supported beyond a specific iOS version. **Most apps should not use this.**
{% endhint %}

The maximum iOS version supported by this release **(inclusive)**. AltStore will hide any updates that are not supported by the user's device.

### <mark style="color:purple;">App Permissions</mark>

```json
"appPermissions": {
  "entitlements": [
    "com.apple.security.application-groups",
    "com.apple.developer.siri"
  ],
  "privacy": {
    "NSMicrophoneUsageDescription": "App uses the microphone to record audio.",
    "NSCameraUsageDescription": "App uses the camera to take photos."
  }
},
```

For security purposes, AltStore requires that sources list **all** entitlements and privacy permissions for every app. These will be checked against the downloaded .ipa, and AltStore will refuse to install any app whose permissions do not match.

#### `entitlements` <mark style="color:purple;">(array of strings)</mark>

A list of all entitlements used by the app and its app extensions.

```json
"entitlements": [
    "com.apple.security.application-groups",
    "com.apple.developer.siri"
 ]
```

{% hint style="success" %}
These entitlements are required for all applications, so don't need to be listed:

* `com.app.developer.team-identifier`
* `application-identifier`
  {% endhint %}

#### `privacy` <mark style="color:purple;">(dictionary of strings)</mark>

A dictionary with all the "UsageDescription" keys in your app's Info.plist along with their descriptions. We recommend using the same descriptions already in your Info.plist.

```json
"privacy": {
    "NSMicrophoneUsageDescription": "App uses the microphone to record audio.",
    "NSCameraUsageDescription": "App uses the camera to take photos."
}
```

### <mark style="color:purple;">News Items</mark>

*<mark style="color:$info;">(optional)</mark>*

```json
"news": [
  {
    "title": "New Feature Announcement",
    "identifier": "new_feature",
    "caption": "Introducing a new feature in AltStore!",
    "date": "2023-03-15",
    "tintColor": "#F54F32",
    "imageURL": "https://example.com/new_feature_image.png",
    "notify": true,
    "url": "https://example.com/new_feature_details",
    "appID": "com.example.myapp"
  },
]
```

#### `title` <mark style="color:purple;">(string)</mark>

The title of your News item.

#### `identifier` <mark style="color:purple;">(string)</mark>

A unique value to distinguish this News item from others in your source.

{% hint style="warning" %}
A source cannot have multiple News items with the same identifier.
{% endhint %}

#### `caption` <mark style="color:purple;">(string)</mark>

A short, one-sentence description of your News item.

#### `date` <mark style="color:purple;">(string)</mark>

The publishing date for this News item.

{% hint style="info" %}
This should be in **ISO 8601** format (e.g. **2023-2-17** or **2023-02-17T12:00:00-06:00**)
{% endhint %}

#### `tintColor` <mark style="color:purple;">(string)</mark>&#x20;

*(optional)*

The background color for your News item.&#x20;

{% hint style="info" %}
This must be in hexadecimal format (e.g **#F54F32** or **F65432**)
{% endhint %}

#### `imageURL` <mark style="color:purple;">(string)</mark>&#x20;

*(optional)*

A link to the image you want featured with your News item.&#x20;

{% hint style="info" %}
This will be scaled to fill a **3:2 aspect ratio**.
{% endhint %}

#### `notify` <mark style="color:purple;">(boolean)</mark>

*(optional)*

When `true`, AltStore will send a push notification about this News item when it next checks for updates in the background.

#### `url` <mark style="color:purple;">(string)</mark>

*(optional)*

A link that AltStore should open when the News item is tapped. Links will be opened in an in-app web browser.

#### `appID` <mark style="color:purple;">(string)</mark>&#x20;

*(optional)*

The bundle identifier of an associated app. This will make the app's info banner appear below the News item, which will open the app's Store page when tapped.

### <mark style="color:purple;">Patreon</mark>

By adding a Patreon object to your app listing, AltStore can ensure only Patrons can download the app.&#x20;

For more information on how AltStore's Patreon Integration works, please visit the [Patreon Integration](/developers/patreon-integration) page.

<pre class="language-json"><code class="lang-json">"patreon": {
  "pledge": 3,
  "currency": "EUR",
  "benefit": "90zyx87",
<strong>  "tiers": [
</strong>    "12abc34",
    "56cde78",
  ],  
},
</code></pre>

{% hint style="warning" %}
The below requirements are **mutually inclusive**. This means if **any** of the conditions you provide are met, a user will be able to download your app.

If you don't provide any of the following keys, AltStore will default to allowing all active Patrons to download the app regardless of tier (excluding followers).
{% endhint %}

#### `pledge` <mark style="color:purple;">(number)</mark>

*(optional)*

The minimum pledge amount required for download. This can be used to limit downloads to higher tiers.

This amount is assumed to be in USD by default. **If using a non-USD currency for your campaign, you must specify it using the currency key below.**

{% hint style="info" %}
This amount will be shown as the app's monthly price if provided. For this reason, we recommend always providing a minimum pledge amount, even if you only have one tier.
{% endhint %}

#### `currency` <mark style="color:purple;">(string)</mark>

*(optional\*)*

The [ISO currency code](https://www.iso.org/iso-4217-currency-codes.html) of your campaign's currency.&#x20;

\*This key is **required** if you provide a pledge amount and your campaign uses a non-USD currency.

#### `benefit` <mark style="color:purple;">(string)</mark>

*(optional)*

The identifier of a campaign benefit. You can add [benefits](https://support.patreon.com/hc/en-us/articles/203913559-How-to-set-up-paid-tiers-and-benefits) to any of your Patreon campaign tiers, then specify it using this key to allow anyone with that benefit to download your app.

{% hint style="info" %}
Benefit identifiers are hidden by default, but you can find them by using the [Patreon API](https://docs.patreon.com/#benefit).&#x20;
{% endhint %}

#### `tiers` <mark style="color:purple;">(array of strings)</mark>

*(optional)*

A list of tier identifiers designating which tiers are required to download. A user must be a member of one of these tiers to download your app.

You can find a tier's identifier by selecting a tier and going to its checkout page. The identifier is the numeric value at the end of the URL.

<table><thead><tr><th width="529">URL</th><th>Tier ID</th><th data-hidden></th></tr></thead><tbody><tr><td> https://www.patreon.com/checkout/shaneriley?rid=<a data-footnote-ref href="#user-content-fn-1">8373919</a> </td><td>8373919</td><td></td></tr></tbody></table>

[^1]:


# Distribute with AltStore PAL

Distributing your app with AltStore PAL is similar to what you may be used to when submitting to the Apple App Store. You will still submit apps through App Store Connect using your paid Apple Developer account, so make sure you are set up with one before proceeding. The only major difference is that your apps will only be available in the EU, Japan, and Brazil.

{% hint style="info" %}
You can distribute apps with AltStore PAL from anywhere. You **do not** need to be located in or have a business in the EU, Japan, or Brazil.
{% endhint %}

When ready, follow each of the steps outlined below to begin distributing your apps on AltStore PAL 🙂

<details>

<summary>Agree to Alternative EU Terms Addendum</summary>

The Alternative EU Terms Addendum is an additional agreement you must make with Apple in order to distribute your apps outside the App Store in the EU specifically.

Request EU Terms Addendum: <https://developer.apple.com/contact/request/alternative-eu-terms-addendum/>

**Notes:**&#x20;

1. The new terms will change your commission rates and fees for apps distributed in the EU. [Learn More](https://developer.apple.com/support/core-technology-fee/)
2. If you're only planning on only distributing in Japan, you do not need to request the EU Terms Addendum.

</details>

<details>

<summary>Add AltStore PAL as an alternative marketplace</summary>

Before you can submit your apps to AltStore PAL, you must prepare your developer account for distribution with alternative marketplaces

1. Register your Developer ID with AltStore PAL using our [REST API](/developers/rest-api). You can find your Developer ID in App Store Connect by selecting "Edit Profile" in the top right.

   <figure><img src="/files/LHAWGGJXBgau9zMk9aeM" alt=""><figcaption></figcaption></figure>
2. You will receive a response with a security token. In App Store Connect, go to Users and Access -> Integrations -> Marketplace, click '+' and input the token.

   <figure><img src="/files/T0jchkRAj4p1VFVeYpQI" alt=""><figcaption></figcaption></figure>
3. Select the app(s) you want to distribute with AltStore PAL. You can change this at any time.
4. Select "Yes, send notifications" on the next screen to let AltStore PAL process your apps automatically (recommended).

**All apps must be processed by AltStore PAL before they can be distributed.** If you don't want AltStore PAL to process your builds automatically, you can manually process them using our [REST API](/developers/rest-api).

</details>

<details>

<summary>Submit your app(s) for Notarization</summary>

Even though you are distributing outside the App Store, you still need to submit your app(s) to Apple for Notarization before they can be distributed. This is similar to Apple's App Store review process but fewer guidelines. For more detailed instructions, see Apple's [Notarization](https://developer.apple.com/help/app-store-connect/distributing-apps-in-the-european-union/submit-for-notarization) support page.

1. Select your app in App Store Connect
2. In the App Review section, click Edit under "Review Type".
3. Select "Notarization" as the review type and click Save.
4. Submit app(s) for review.

**If you still plan to distribute your app through the Apple App Store, you can skip this step.** Your apps will be automatically notarized when approved for the App Store.

</details>

<details>

<summary>Host your Alternative Distribution Package (ADP)</summary>

Once Notarized, you'll need to download your app's ADP to then host it on your server.

1. Download your ADP using our [REST API](/developers/rest-api#download-adp).
2. Upload the complete package to your server. You must preserve the directory hierarchy exactly, and the hashes of each file must not change. In other words, **DO NOT modify the `manifest.json` in any way (e.g prettifying).**

</details>

<details>

<summary>Create a source</summary>

Once your server is updated with your app's ADP, the last step is to [make a source](/developers/make-a-source), which is just a JSON file with information about your app(s).

Once you've uploaded your source, it will be made available on PAL and anyone can now add the URL to download your apps! **(Requires AltStore PAL 2.2 or later)**

</details>

<details>

<summary>Make your source discoverable (Optional)</summary>

You can optionally make your source discoverable, which means your apps and updates will appear automatically on our [website](https://explore.alt.store/) where anyone can easily find them.

1. Add the [`fediUsername`](/developers/make-a-source#fediusername-string) key to your source
2. Federate your source using our [REST API](/developers/rest-api#federate-source)

</details>


# “Download on AltStore” Badge

After you make your app live on AltStore, you can add our download badge to your website to easily link people to your app. This works for both AltStore Classic and AltStore PAL.

{% file src="/files/yPhCD5nqjSDTFnoziTDZ" %}

<div><figure><img src="/files/viPW90hNfxQgipJfzWHy" alt="" width="188"><figcaption></figcaption></figure> <figure><img src="/files/X3yITIxZcW3yjfIODgYx" alt="" width="188"><figcaption></figcaption></figure></div>

## Instructions

1. Download the "Download Badge.zip" file above
2. Upload the variant of your choice somewhere publicly accessible via URL
3. Create an AltStore deep link using one of the below [Deep Link Formats](#deep-link-formats)
4. Embed the following HTML code on your website, replacing:\
   \- `YOUR_SOURCE_URL`  with the deep link URL from step 3\
   \- `PATH_TO_IMAGE` with the URL to the image you uploaded from step 2

```
<a href="YOUR_SOURCE_URL" style="display: inline-block;">
    <img src="PATH_TO_IMAGE" alt="Download on AltStore" style="width: 245px; height: 82px; vertical-align: middle; object-fit: contain; />
</a>
```

### Deep Link Formats

**Linking to a source**

{% hint style="info" %}

#### <https://altstore.io/source/><mark style="background-color:yellow;">**URL/TO/YOUR/SOURCE**</mark><mark style="background-color:yellow;">.json</mark>

Example:

**Source URL:** <https://i.cizzuk.net/altstore/source.pal.json><br>

**Deep Link:**

```
https://altstore.io/source/i.cizzuk.net/altstore/source.pal.json
```

{% endhint %}

**Linking to an app in a source**

{% hint style="info" %}

#### <https://altstore.io/source/><mark style="background-color:yellow;">**URL/TO/YOUR/SOURCE**</mark><mark style="background-color:yellow;">.json</mark>?app=<mark style="background-color:$warning;">**APP\_BUNDLE\_ID**</mark>

Example:<br>

**Source URL:** <https://i.cizzuk.net/altstore/source.pal.json>

**App Bundle ID:** net.cizzuk.alare<br>

**Deep Link:**

```
https://altstore.io/source/i.cizzuk.net/altstore/source.pal.json?app=net.cizzuk.alare
```

{% endhint %}

**Linking to a specific app version in a source**

{% hint style="info" %}

#### <https://altstore.io/source/><mark style="background-color:yellow;">**URL/TO/YOUR/SOURCE**</mark><mark style="background-color:yellow;">.json</mark>?app=<mark style="background-color:$warning;">**APP\_BUNDLE\_ID**</mark>\&version=<mark style="background-color:pink;">**APP\_VERSION**</mark>

Example:\
\
**Source URL:** <https://i.cizzuk.net/altstore/source.pal.json>

**App Bundle ID:** net.cizzuk.alare

**App Version:** 3.0<br>

**Deep Link:**

```
https://altstore.io/source/i.cizzuk.net/altstore/source.pal.json?app=net.cizzuk.alare&version=3.0
```

{% endhint %}


# App Guidelines

**Last updated April 10, 2025**

All apps distributed with AltStore PAL must adhere to the following guidelines. If your app does not meet the requirements below, we reserve the right to block it from being distributed.

{% hint style="info" %}
These guidelines only apply to apps distributed with AltStore PAL, not AltStore Classic.
{% endhint %}

**General Requirements:**

1. The app must comply with all of Apple’s [Notarization guidelines](https://developer.apple.com/app-store/review/guidelines/#introduction), including its content and business model(s).
2. The app's metadata, including description and screenshots, must accurately reflect the app's core experience.
3. The app must comply with all legal requirements in any location where you make it available.‍
4. The app must have all necessary intellectual property rights, licenses, and permissions for its content and functionality.
5. The app should not seek to cause harm or put any individuals at risk.


# REST API

Use this to register your Developer ID with AltStore PAL, as well as to process and download ADPs for your notarized apps.

## Register Developer ID

`POST https://api.altstore.io/register`

Use this endpoint to register your Developer ID with AltStore PAL and receive a security token to add AltStore PAL as an alternative marketplace in App Store Connect.

#### Request Body

```
{
  "developerID": "[Your Apple Developer ID]",
  "email": "[Your Email Address]
}
```

#### Response

```
{
  "token": "[Your Security Token]",
  "expiration": "2025-02-26T20:30:32Z"
}
```

#### Terminal Command

```
curl --header "Content-Type: application/json" \
  -X POST \
  --data '{ 
    "developerID": "[Your Apple Developer ID]", 
    "email": "[Your Email Address]"
  }' \
  https://api.altstore.io/register
```

## Download ADP

{% hint style="warning" %}
This endpoint requires a notarized ADP ID. [Get your ADP ID](https://developer.apple.com/help/app-store-connect/distributing-apps-in-the-european-union/get-an-alternative-distribution-package-id/)
{% endhint %}

`GET https://api.altstore.io/adps/[Your ADP ID]`

Use this endpoint to check the status of an ADP, and optionally download it once it's finished processing.

To download, copy the `downloadURL` from the response and paste it into a web browser. If there is no `downloadURL`, your app is still processing and you can check the status under the `status` key.

#### Example Request

```
curl -X GET https://api.altstore.io/adps/[Your ADP ID] 
```

## Process ADP

{% hint style="warning" %}
This endpoint requires a notarized ADP ID. [Get your ADP ID](https://developer.apple.com/help/app-store-connect/distributing-apps-in-the-european-union/get-an-alternative-distribution-package-id/)
{% endhint %}

`POST https://api.altstore.io/adps`

Use this endpoint if you haven't set up marketplace notifications, or if you don't want to wait for our servers to process your app automatically. **You must include your ADP ID in the JSON request body under the `adpID` key.**

After it finishes processing, you can use the Download ADP endpoint above to download it.

#### Example Request

```
curl --header "Content-Type: application/json" \
  -X POST \
  --data '{ "adpID": "[Your ADP ID]" }' \
  https://api.altstore.io/adps
```

## Federate Source

`POST https://api.altstore.io/federate`

Use this endpoint to make your source discoverable on explore.alt.store and start federating to the open social web.

#### Request Body

```
{
  "source": "YOUR_SOURCE_URL",
}
```

#### Response

```
HTTP 200 OK
```

#### Terminal Command

```
curl --header "Content-Type: application/json" \
  -X POST \
  --data '{  
    "source": "YOUR_SOURCE_URL"
  }' \
  https://api.altstore.io/federate
```


# Updating Apps

Learn how to issue app updates

{% hint style="info" %}
Update apps in your source automatically by using AltServer's built-in AltSource tool.
{% endhint %}

### Overview

To update your app, you'll need to add a new App Versions entry to your Source JSON with a unique `version` and/or `buildVersion`. After uploading your changes, AltStore will automatically detect that an app update is available and notify users.

Specifically, AltStore detects updates by comparing the first version listed in your App Versions array (i.e index = 0) with the user's installed version. If the first version listed is not compatible with the user's device, AltStore iterates through the array until it finds one that is. If this version is different than what the user has installed, AltStore will notify them that an update is available.&#x20;

{% hint style="warning" %}
AltStore **does not** use dates to determine if there's a newer version.
{% endhint %}

### Version Compatibility

AltStore will only show that an app update is available if it's compatible with the user's OS version. By default AltStore considers all versions to be compatible, but if your update only supports certain iOS versions, you can specify this via the `minOSVersion` and `maxOSVersion` keys.

Users can see a list of unsupported updates from the My Apps tab. Additionally, if a user tries to download a new app that is not compatible with their device, they will be asked to download a previous version instead.

### Update Instructions

1. Upload the IPA file to your server and copy the URL.
2. Add a new entry to the beginning of your app's `versions` array in your Source JSON file.
   * Update `downloadURL` to the copied URL
   * Update `version` to match the app's `CFBundleShortVersionString` (e.g "1.2.1")
   * Update `buildVersion` to match the app's `CFBundleVersion` (e.g "10")

{% hint style="info" %}
Each entry must have a different `version` or `buildVersion` from the previous version.
{% endhint %}

{% code lineNumbers="true" %}

```json
"versions": [
   {
    "version": "1.1",
    "buildVersion": "2",
    "date": "2024-05-25",
    "localizedDescription": "First AltStore Update!",
    "downloadURL": "https://myapp.com/myapp-1.1.ipa",
    "size": 80925,
    "minOSVersion": "14.0",
    "maxOSVersion": "16.3"
  }
  {
    "version": "1.0",
    "buildVersion": "1",
    "date": "2024-03-30",
    "localizedDescription": "First AltStore release!",
    "downloadURL": "https://myapp.com/myapp-1.0.ipa",
    "size": 79821,
    "minOSVersion": "12.0",
    "maxOSVersion": "16.3"
  },
]
```

{% endcode %}

3\. Upload your Source JSON to your server - that's it!

{% hint style="warning" %}
**Once uploaded, the update is immediately made live.**&#x20;

For this reason, we recommend updating a staging version of your source first to verify that the changes work as expected.
{% endhint %}


# Patreon Integration

Use AltStore's built-in Patreon integration to easily distribute apps to your Patrons.

## Overview

Apps in AltStore are all free by default, but by creating a Patreon campaign you can choose to offer your apps exclusively to Patrons.

Members of your Patreon can connect their accounts to download any apps they have access to. Once a user installs your app, they'll be able to refresh it and receive updates through AltStore as long as they remain a Patron.&#x20;

{% hint style="info" %}
You can assign as many apps as you like to a single Patreon campaign. In other words, you don't need individual campaigns for each app in your source.
{% endhint %}

## How it Works

By default, apps marked as Patreon-only will show "Join Patreon" above the download button and be visible to everyone. When an app is downloaded, AltStore will first authenticate with Patreon to verify they are a patron. If they are not a patron, AltStore will direct them to your Patreon page instead.&#x20;

You can optionally limit app downloads to certain tiers by specifying the minimum pledge required in your source JSON. Additionally, you can choose to hide an app from non-Patrons completely. [Learn more](/developers/make-a-source#patreon-apps)

{% hint style="info" %}
If provided, the minimum pledge amount will be shown as the app's monthly price. For this reason, we recommend **always** providing a minimum pledge amount, even if you only have one tier.
{% endhint %}

<figure><img src="/files/Cg0AfmFq48c3cdztKOfV" alt="" width="375"><figcaption></figcaption></figure>

{% hint style="info" %}
For more fine-grain control, you can specify the exact tiers required for each app in your source's JSON. [Learn more](/developers/make-a-source#patreon-apps)
{% endhint %}

## Expired Pledges

Once a user's pledge expires, they'll no longer receive updates for your app(s) or be able to refresh them. This will cause these apps to expire after 7 days, after which they will no longer be able to be opened.

If they become a Patron again in the future, they will be able to use your apps like normal.

## Instructions

### <mark style="color:purple;">AltStore PAL</mark>

#### Upload the ADP

{% hint style="danger" %}
To ensure only Patrons can download your app, you must attach your ADPs to Patreon posts which have a limit of 200MB per attachment.
{% endhint %}

1. Create a new Patreon post
2. Attach all the files in your ADP, including `manifest.json`, `signature`, and all `.ipa` files

{% hint style="warning" %}
If you want to attach more than one ADP to the same Patreon post, you must rename `manifest.json` and `signature` to something unique.
{% endhint %}

3. Configure post visibility to limit which tiers can download it
4. Publish Patreon post

#### Update Your Source

1. Add the [`patreonURL` key](/developers/make-a-source#patreonurl-string) to your source JSON with your Patreon page's URL
2. Add a [Patreon](/developers/make-a-source#patreon-apps) object to your app's entry with the conditions required to download it (this should match the visibility of your Patreon post)
3. Use the published Patreon post's URL for your app version's `downloadURL`
4. If multiple ADPs are attached to the same Patreon post, add the [`assetURLs`](/developers/make-a-source#asseturls-dictionary-of-strings) key to your app's version and specify the URLs for `manifest.json` and `signature`&#x20;
5. Upload your source JSON to your server

### <mark style="color:purple;">AltStore Classic</mark>

#### Upload the IPA

{% hint style="info" %}
AltStore uses the Patreon API to ensure only Patrons can download your app. This requires attaching your .ipa file to a Patreon post, which has a limit of 200MB.
{% endhint %}

1. Create a new Patreon Post
2. Attach your .ipa file
3. Configure post visibility to limit which tiers can download it
4. Publish Patreon Post
5. Right-click the attachment and copy the URL

<figure><img src="/files/x7KiBQzvZRw4MNrlZT1u" alt=""><figcaption></figcaption></figure>

#### Update Your Source

1. Create a new [App](/developers/make-a-source#apps) entry in your source JSON
2. Use the copied attachment URL for your app's `downloadURL`
3. Add a [Patreon](/developers/make-a-source#patreon-apps) object to your app's entry with the conditions required to download it (this should match the visibility of your Patreon post).
4. If not yet added, add the `patreonURL` key to your source JSON with your Patreon page's URL (e.g <https://www.patreon.com/rileyshane>)
5. Upload your source JSON to your server


# AltSource CLI (Beta)

## Overview

[AltServer for macOS](https://cdn.altstore.io/file/altstore/altserver.zip) comes with a built-in `altsource` tool for easily creating and updating AltStore sources using your apps' .ipa files. You can run this tool from Terminal to automatically populate your source with information from a provided .ipa.

Currently, this tool can do the following tasks:

* Create a new source
* Add an app to an existing source
* Update an app to a new version

## Instructions

This tool is located in AltServer's app bundle: `AltServer.app/Contents/MacOS/altsource`.  In Terminal, you will need to run this tool from wherever AltServer is located (usually your Applications folder) to enter commands, e.g:

<pre><code><strong>/Applications/AltServer.app/Contents/MacOS/altsource new
</strong></code></pre>

There are two main commands, `new` and `update`. You can run either of these commands with any of the [additional arguments](/developers/altsource-cli-beta#additional-arguments) below to overwrite default values.

```
USAGE: altsource <subcommand>

OPTIONS:
  -h, --help              Show help information.

SUBCOMMANDS:
  new                     Create a new AltStore source, optionally based on a
                          provided .ipa file.
  update                  Update source with new app or version.
```

#### `new`

Generates a new source JSON file either from scratch or based on an existing .ipa file using the `--ipa` argument. Use the `-o` argument to change where the file is saved.

```
USAGE: altsource new [<options>]

OPTIONS:
  -o <o>                  The output destination.
  --ipa <ipa>             An .ipa to add to the source during creation.

```

#### `update`

Adds a new app or app version to an existing source. You can also use this command to edit your source information using the additional arguments below.

```
OVERVIEW: Update an existing AltStore source.

USAGE: altsource update [<options>] <source-url>

ARGUMENTS:
  <source-url>            The source JSON to update.
  
OPTIONS:
  -o <o>                  The output destination.
  --ipa <ipa>             An .ipa to add to the source during creation.
```

## Additional Arguments

When creating or updating a source, you can provide these arguments to populate optional values or override default values with your own. For more info on any of these arguments, including examples, see the [Make A Source](/developers/make-a-source) page.

| Command                | Use                                                                                                                              |
| ---------------------- | -------------------------------------------------------------------------------------------------------------------------------- |
| --name                 | The name of the source.                                                                                                          |
| --subtitle             | A short tagline for your source.                                                                                                 |
| --description          | A marketing description of your source.                                                                                          |
| --website              | A website with more information about your source.                                                                               |
| --icon                 | A URL pointing to your source's icon.                                                                                            |
| --header               | A URL pointing to your source's header image.                                                                                    |
| --tint-color           | A hexadecimal string representing your source's preferred tint color.                                                            |
| --app-name             | The name of the app.                                                                                                             |
| --app-developer        | The name of the app's developer.                                                                                                 |
| --app-description      | A marketing description about your app.                                                                                          |
| --app-subtitle         | A short tagline for your app.                                                                                                    |
| --app-icon             | A URL pointing to your app's icon.                                                                                               |
| --app-tint-color       | A hexadecimal string representing your app's tint color.                                                                         |
| --app-category         | The AltStore category that best represents your app. See [here](/developers/make-a-source#category-string) for supported values. |
| --version-date         | The release date for this app version.                                                                                           |
| --version-description  | A description of what's changed in this app version.                                                                             |
| --version-download-url | The URL where the provided .ipa will be hosted.                                                                                  |

###

### Examples

Create an empty source

```
path/to/altsource new 
```

Create an empty source with name

```
path/to/altsource new --name "my source"
```

Create a new source from .ipa

```
path/to/altsource new --ipa myapp.ipa
```

Create a new source from .ipa with optional app subtitle

```
path/to/altsource new --ipa myapp.ipa --app-subtitle "My Cool Source" 
```

Add app to existing source

<pre><code><strong>path/to/altsource update mysource.json --ipa myapp.ipa
</strong></code></pre>

Add app to existing source with app category and description

{% code overflow="wrap" %}

```
path/to/altsource update --ipa myapp.ipa --category "utilities" --app-description "My New App" 
```

{% endcode %}

Update an existing app to a new version with version description

<pre><code><strong>path/to/altsource update mysource.json --ipa myapp.ipa --version-description "bug fixes"
</strong></code></pre>

{% hint style="info" %}
If the .ipa provided does not exist yet in your source, this command will create a new [app entry](/developers/make-a-source#apps) in your Source
{% endhint %}


# AltStore PAL

## <mark style="color:blue;">AltStore PAL 2.3.2</mark>

<mark style="color:blue;">**June 15, 2026**</mark>

* Added Brazilian Portuguese localization
* New Brazil-inspired alternate app icon

## <mark style="color:blue;">AltStore PAL 2.3.1</mark>

<mark style="color:blue;">**March 17, 2026**</mark>

* Fixed crash on launch for some users when refreshing likes on News tab
* Fixed some app icons not working correctly on iPad
  * Default
  * AltStore Japan
  * Turquoise

## <mark style="color:blue;">AltStore PAL 2.3</mark>

<mark style="color:blue;">**March 11, 2026**</mark>

### **New**

Social Web Support

* Discover apps and sources from our new explore page [https://explore.alt.store](https://explore.alt.store/)
* Developers can opt-in to have their sources federated to explore page
* View all likes on federated apps, app updates, and news items in-app
* Sign in with your Mastodon or Bluesky account to like items directly in-app
* Share links to federated items with others or view them in system browser

Liquid Glass UI

* Updated design to fit at home on iOS 26
* New Liquid Glass app icon

Source Collections

* Redesigned Add Source screen makes discovering sources easier than ever
* View all featured sources, or view specific source “collections”
* Launching with 3 collections: Popular, Indie Gems, and Fediverse Favorites

App Icons

* New Japan-inspired alternate app icon

Misc.

* Includes `ALT_PAL_VER` header with current build version when fetching sources

### **Improved**

* Removed “Manage Subscription” from settings

### **Fixed**

* Fixed unreadable text in light mode for some news alerts (thanks [@partyknightsdev](https://github.com/partyknightsdev)!)
* Fixed My Apps tab badge count showing incorrect number of app updates
* Fixed showing empty text view for updates with no description
* Fixed Apple’s system download button not being accessible with VoiceOver
* Fixed difficulty accessing action button when VoiceOver is enabled
* Fixed category cells not being accessible with VoiceOver
* Fixed AltStore incorrectly thinking an updated failed when it succeeded in background
* Fixed false-positive errors due to installed version (temporarily) not matching expected version

## <mark style="color:blue;">AltStore PAL 2.2.3</mark>

<mark style="color:blue;">**December 23, 2025**</mark>

* Fixes app descriptions appearing in Japanese for some users even if primary language is set to English.

## <mark style="color:blue;">AltStore PAL 2.2.2</mark>

<mark style="color:blue;">**December 17, 2025**</mark>

* Initial support for Japan
* Added Japanese localization

## <mark style="color:blue;">AltStore PAL 2.2.1</mark>

<mark style="color:blue;">**November 3, 2025**</mark>

* Improved error handling when installing apps
* Mitigates iOS 26.1 bug causing apps to disappear from My Apps tab

## <mark style="color:blue;">AltStore PAL 2.2</mark>

<mark style="color:blue;">**May 6, 2025**</mark>

### New

Sources

* Supports installing apps from developers registered via our updated [REST API](https://faq.altstore.io/developers/rest-api)
* Supports localized titles, subtitles, and descriptions in sources
* Supports downloading ADPs from Patreon posts
* Supports `assetURLs` to override URLs for individual ADP assets
  * Dictionary of override URLs for files in ADP, keyed by filename (without file extension)
  * Allows for hosting ADPs is other ways besides just a directory structure (e.g. GitHub Releases)

Misc.

* Added Bluesky social media button to Settings

### Improved

UI

* Hides “See All” button in Browse tab for sources with just 1 app
* Sorts apps alphabetically in My Apps

Sources

* Supports using ADP's `manifest.json` URL as `downloadURL`
* Ignores irrelevant `maxOSVersion` AltStore Classic key

Patreon

* Migrates Patreon cookies to shared container on launch (if needed)
* Attempts to re-authenticate if necessary when downloading ADP from Patreon

Misc.

* Includes error message in `AltMarketplace` headers if error occurs
* Ignores “downgrade” updates for AltStore PAL

### Fixed

* Fixed choosing alternate app icon on iPad
* Fixed fetching Patreon post attachments with `nil` mimeType
* Fixed handling source deep link when already viewing source details
* Fixed installing ADPs with case-sensitive download URLs
* Fixed installing apps before adding source via deep link
* Fixed “Join Patreon” sheet appearance in dark mode
* Fixed not showing OPEN for installed apps when previewing source via deep link
* Fixed not showing OPEN for installed apps when previewing already-added Recommended Source
* Fixed accessing deep link Source on background context from main thread

## <mark style="color:blue;">AltStore PAL 2.1.6</mark>

<mark style="color:blue;">**January 22, 2025**</mark>

* Automatically removes apps when deleted from the Home Screen (iOS 18+)
* Adds "Discover More Apps" button to showcase featured apps on [altstore.io](https://altstore.io)
* Includes app bundle ID when logging installation progress
* Fixed apps not appearing in My Apps if installation finishes while in background
* Fixed apps not updating under certain conditions
* Fixed opening source deep links when app is not in background
* Fixed displaying internal version number instead of public version number in settings

## <mark style="color:blue;">AltStore PAL 2.1.5</mark>

<mark style="color:blue;">**November 13, 2024**</mark>

* Delays fetching Friend Zone patrons until user first opens Patreon screen
* Fixed handling Patreon rate limit errors
* Fixed crash updating apps when there is more than 1 update available
* Fixed updating apps with "Auto Manage Installed Apps" enabled
* Fixed crash if fetching MarketplaceKit install token fails

## <mark style="color:blue;">AltStore PAL 2.1.4</mark>

<mark style="color:blue;">**October 31, 2024 🎃**</mark>

* Fixed certificate validation error when redeeming PAL promo&#x20;
* Fixed "Failed to Verify AltStore" error when updating PAL

## <mark style="color:blue;">AltStore PAL 2.1.3</mark>

<mark style="color:blue;">**October 22, 2024**</mark>

### **New**

"Day One" Promo

* New promo to thank our early adopters who paid €1,50 to install AltStore PAL
* Exclusive "Day One" app icon
* 1 free month of access to our "Early Adopter" Patreon tier
* Follow instructions here to redeem: <https://faq.altstore.io/altstore-pal/day-one-promo>

Misc.

* Added dark mode & tinted variants of primary app icon
* Added new Home Screen quick actions with support info

### **Fixed**

* Fixed crash when fetching source containing app larger than 2GB&#x20;

## <mark style="color:blue;">AltStore PAL 2.1.2</mark>

<mark style="color:blue;">**August 29, 2024**</mark>

### **New**&#x20;

* “Auto Manage Installed Apps” debug setting
* Supports `marketingVersion` source key

### **Improved**

* Verifies downloaded app matches source values
* Handles MarketplaceKit deep links

### **Fixed**

* Fixed incorrect progress when installing multiple apps in single session&#x20;
* Fixed installing apps before adding sources
* Fixed Settings tab bar disappearing on iOS 18

## <mark style="color:blue;">AltStore PAL 2.1.1</mark>

<mark style="color:blue;">**August 8, 2024**</mark>

* Handles "search" and "view app" deep links
  * Search: `altstore-pal://search?q=[query]`
  * View App: `altstore-pal://viewApp?bundleID=[app bundle ID]`
* Fixed duplicate "New Update Available" notifications
* Fixed restoring offloaded apps
* Fixed updating apps under certain conditions
* Fixed not unlocking certain Patreon benefits
* Fixed showing legacy app intents in Shortcuts app

## <mark style="color:blue;">AltStore PAL 2.1</mark>

<mark style="color:blue;">**July 24, 2024**</mark>

* Supports adding "Recommended Sources"
* Added altstore-pal:// URL scheme
* Replaced AppCenter dependency with TelemetryDeck

## <mark style="color:blue;">AltStore PAL 2.0.1</mark>

<mark style="color:blue;">**June 5, 2024**</mark>

* Supports distributing Patreon-exclusive apps to free members
* Adds "Manage Subscription" option in Settings to manage PAL annual subscription
* Shows instructions when updating AltStore PAL


# AltStore Classic

## <mark style="color:green;">AltStore 2.2</mark>

<mark style="color:green;">**April 16, 2025**</mark>

### **New**

* Supports sideloading apps with “Increased Memory Limit” entitlement
* Supports localized titles, subtitles, and descriptions in sources
* Added \`altstore-classic://\` URL scheme
* Added Bluesky social media button to Settings

### **Improved**

* Hides “See All” button in Browse tab for sources with just 1 app
* Changed icon back to Classic icon by default
* Uses separate Patreon API token from AltStore PAL to improve rate-limiting
* Changed Patreon URL back to direct link
* Replaced hardcoded API keys with dynamically-loaded ones
* Switches to classic linker to silence “no platform load command found” warnings

### **Fixed**

* Fixed choosing alternate app icon on iPad
* Fixed “Join Patreon” sheet appearance in dark mode
* Fixed installing apps before adding source via deep link
* Fixed handling source deep link when already viewing source details
* Fixed redundant app update appearing after resigning expired app
* Fixed not immediately showing updates for some installed apps&#x20;
* Fixed not showing OPEN for installed apps when previewing source via deep link
* Fixed not showing OPEN for installed apps when previewing already-added Recommended Source

## <mark style="color:green;">AltStore 2.0.2</mark>

<mark style="color:green;">**November 21, 2024**</mark>

* Fixed App IDs collection view assertion crash on iOS 18
* Fixed My Apps tab collection view assertion crash on iOS 18
* Fixed "Handshake Failed" error when signing-in

## <mark style="color:green;">AltStore 2.0.1</mark>

<mark style="color:green;">**November 13, 2024**</mark>

* Added dark mode & tinted variants of primary app icon
* Added new Home Screen quick actions with support info
* Fixed crash when fetching source containing app larger than 2GB
* Delays fetching Friend Zone patrons until user first opens Patreon screen
* Fixed handling Patreon rate limit errors
* Fixed crash updating apps when there is more than 1 update available

## <mark style="color:green;">AltStore 2.0</mark>

<mark style="color:green;">**September 28, 2024**</mark>

### New

**Sources**

* Add any 3rd-party source, in addition to existing Recommended Sources!
* New dedicated Sources tab to easily manage and browse sources
* Separate "Add Source" screen to simplify adding sources
* Preview sources before adding them to AltStore
  * View detailed information as well as any additional links
  * Browse all apps and news for a source
  * "Featured Apps" section showcases a source's best apps
* Supports remote blocking malicious sources

**Redesigned Browse Tab**

* New "card" design for app listings
* View most recently updated apps at a glance
* Browse apps by source or by 8 new categories
* Scroll through featured apps from each source
* Change sort order of apps when browsing by source or category
* Tap category name to easily switch between categories when browsing
* Swipe through all screenshots directly from Browse tab

**Patreon**

* 3rd-party sources can now distribute Patreon-exclusive apps to patrons, including free members
* Donate to developers' Patreons and download Patreon-exclusive apps all within AltStore
* Supports "custom" pledge amounts so patrons can donate what they want
* Shows required pledge amount for Patreon apps (if provided)

**App Icon**

* Brand new app icon
* Choose alternate app icons in Settings

**Detailed App Permissions**

* View all entitlements and privacy permissions for an app from its store page
* Tap any permission to view a detailed description
* Automatically verifies permissions are accurate before installing
* Asks user to review permissions when installing and updating apps
  * When installing a new app, all entitlements will be shown
  * When updating an app, only added entitlements will be shown

**Source JSON**

* Supports JSON5
* `buildVersion` parameter allows distributing multiple builds with same app version
* `sha256` parameter lets AltStore verify downloaded .ipa's have the correct SHA-256 hash
* `appPermissions` parameter declares all permissions used by an app and its extensions
* `marketingVersion` parameter allows customizing the version displayed to the user

**Misc.**

* Added social media follow buttons to Settings
* Handles “search” and “view app” deep links
  * Search: `altstore://search?q=[query]`
  * View App: `altstore://viewApp?bundleID=[app bundle ID]`

### Improved

**Screenshots**

* Supports screenshots of different sizes
* Supports both iPhone and iPad specific screenshots
* Automatically rounds screenshots taken with Face ID iPhone
* Preview screenshots full-screen by tapping them from an app's store page
* Dismiss full-screen screenshots with swipe gesture

**App Verification**

* Verifies downloaded app version matches source
* Verifies downloaded app build version matches source
* Verifies downloaded app’s permissions match source
* Verifies downloaded .ipa matches SHA-256 hash (if provided)

**Source Verification**

* Verifies source's identifier doesn't change after refreshing
* Verifies source’s identifier doesn’t match existing sources when adding
* Verifies all privacy permissions have a valid `usageDescription`
* Throws error when adding marketplace source to non-marketplace AltStore (and vice versa)
* Includes missing last Coding Path value for DecodingError.keyNotFound
* Deprecates `identifier` key

**News Tab**

* Changed image aspect ratio to 3:2
* Updated font to use dynamic text styles
* Uses uniform height for all News Items on source's detail page

**Logging**

* Switched to OSLog.framework for important tasks
* Export detailed logs via Error Log from Settings tab

**Image Caching**

* Increased cache limit to reduce how often AltStore refetches images
* Clear image cache with “Clear Cache…” option in Settings

**Misc.**

* Limits relative dates to "Today" and "Yesterday"
* Changed "WiFi" spelling to "Wi-Fi"
* Displays version # for updates in My Apps tab
* Replaced AppCenter dependency with TelemetryDeck
* Added Privacy manifest
* Updated Patreon sign-out alert message to apply to all pledged apps
* Rethrows Core Data save errors after installing apps
* Captures `#fileID` and `#line` for `OperationError.appNotFound`
* Enforces consistent minimum size for `PillButton`
* Updates `AppViewController` to use `UINavigationBarAppearance` APIs

### Fixed

**Resigning Apps**

* Fixed various issues resigning certain apps
* Fixed app sometimes freezing when installing/refreshing apps
* Fixed resigning apps with entitlements the original app doesn’t have
* Fixed resigning apps without required entitlements
* Fixed resigning apps with wildcard \`keychain-access-groups\` entitlement
* Fixed resigning apps with non-English alphanumeric characters in name

**User Interface**

* Fixed Settings tab bar disappearing on iOS 18
* Fixed squished banners on App IDs screen
* Fixed button titles flashing when scrolling into view
* Fixed incorrect corner radius animation for app + source detail screens
* Fixed "More" button appearing by accident if text height exactly equals collapsed height
* Fixed not showing "more updates" button when there are more than 2 updates
* Fixed erroneously showing “Unsupported Updates Available” message
* Fixed showing “Update” button on app store page when no supported update is available
* Fixed incorrect cell height for some News items
* Fixed missing blur when pushing `AppViewController` onto modal navigation controller

**Misc.**

* Fixed crash when adding source with the same name as another source
* Fixed “Core Data error” if error occurs while parsing Source JSON
* Fixed redundant app update appearing after failing to backup/restore app
* Fixed not showing toast view if error occurs during initial sources fetch
* Fixed incorrectly handling various cancelled operations
* Fixed error fetching Friend Zone patrons due to unexpected nil name
* Fixed incorrectly merging app versions for same app from different sources
* Fixed migration error on launch if AltStore app group does not exist
* Fixed "missing app group" error if AltStore app group is not the first one listed in Info.plist
* Fixed accidentally saving "Operation Cancelled" errors to Error Log
* \[iPad] Fixed crash when removing apps from My Apps tab
* Fixed `CollapsingTextView` “TextKit 1 compatibility mode” runtime warning
* Fixed "transformable properties not using secure transformer" runtime warnings
* Fixed "unsatisfiable constraints" runtime error for `InstalledAppsCollectionFooterView`

## <mark style="color:green;">AltStore 1.7</mark>

<mark style="color:green;">**September 18, 2023**</mark>

### New

**"Active Apps" Widget (iOS 17+)**&#x20;

* View remaining days for ALL active apps from Home Screen
* Refresh apps directly from home screen by tapping countdown timers

### Improved

**Shortcuts Support**

* Converted existing "Refresh Apps" shortcut into App Shortcut
* Available by default in "App Shortcuts" section of Shortcuts app
* Displays accurate progress when refreshing apps via Shortcuts app

**Widgets**

* Updated existing home screen widget to support refreshing apps by tapping countdown (iOS 17+)
* Explicitly reloads widget timelines on app launch

### Fixed

* Fixed updating apps with manually-removed app extensions (e.g. uYou+)
* Fixed not refreshing AltStore last when refreshing via Shortcut
* Fixed race condition causing duplicate background refresh notifications (or none)
* Fixed Error Log not displaying all detailed info for certain errors

##

## <mark style="color:green;">AltStore 1.6.3</mark>

<mark style="color:green;">**April 12, 2023**</mark>

* Fixed error fetching Friend Zone patrons due to unexpected nil name
* Fixed incorrect cell height for some News items

## <mark style="color:green;">AltStore 1.6.2</mark>

<mark style="color:green;">**March 22, 2023**</mark>

* Fixed “no provisioning profile with the requested identifier…” error when sideloading and refreshing apps

## <mark style="color:green;">AltStore 1.6.1</mark>

<mark style="color:green;">**February 20, 2023**</mark>

* “Clear Cache” button removes temporary files and deleted app backups to free up disk space
* Disable new “Enforce 3-App Limit” setting to sideload more than 3 apps via MacDirtyCow exploit\*
* Fixed crash when viewing Sources on iOS 12

\*Requires iOS 14.0 - 16.1.2 (excluding 15.7.2). **iOS 16.2 or later not supported.**

## <mark style="color:green;">AltStore 1.6</mark>

<mark style="color:green;">**January 30, 2023**</mark>

### New

#### Lock Screen Widget (iOS 16 only)&#x20;

* Counts down days until AltStore expires&#x20;
* Available in 2 different styles: “text” and “icon”

#### Error Log&#x20;

* View past errors in more detail
* Tap an error to copy the error message or error code
* Search for error code directly in AltStore FAQ
* “View More Details” button to view detailed error information
* Access via new “Techy Things” section in AltStore settings

#### iOS Version Compatibility

* Supports app updates with minimum or maximum OS requirements
* Hides app updates if they’re not compatible with current device
* Falls back to downloading last compatible version on older devices
* View all unsupported updates from My Apps tab

#### Revamped Error Handling&#x20;

* Completely revamped error handling to include as much information as possible, which should make debugging certain issues much easier
* Revised error messages to be more descriptive and provide more suggestions
* Revised error domain format to `[Module].[ErrorType]`
* `AltStore.OperationError` codes start at 1000
* `AltServer.ServerError` codes start at 2000
* `AltStore.AppleDeveloperError` codes start at 3000
* Uses underlying error messages (if available) for several `AltServer.ServerError` errors
* Encodes/Decodes all Codable user info values, not just recognized types

#### Misc.&#x20;

* Adds pull-to-refresh to check for updates
* Supports new “versions” key in source JSON
* Supports updating apps from app detail page

### Improved&#x20;

#### Source Validation&#x20;

* Verifies sources don't contain duplicate app bundle identifiers
* Verifies sources don't contain duplicate app versions
* Shows error if a source is configured incorrectly instead of silently failing

#### Misc.

* Updated `LaunchViewController` error alert to display more detailed error messages
* Always displays loading indicator when fetching Friend Zone patrons
* Improves error message when .ipa does not exist at provided downloadURL
* Caches MergeErrors when refreshing sources to view later from Sources page

### Fixed

* Fixed `CollapsingTextView` incorrectly showing “more” button
* Fixed “error migrating persistent store” issue
* Fixed widgets potentially not updating after refreshing apps
* Fixed simultaneous database access from multiple AltStores
* Fixed incorrect app name and iOS version in "Unsupported iOS version" error message
* Fixed refreshing tweaked apps with removed app extensions
* Fixed error encoding CodableError Int/UInt user info values
* Fixed adding failures to NSErrors with nil localizedFailureReasons
* Fixed incorrect error toast view color when sign-in fails

## <mark style="color:green;">AltStore 1.5.1</mark>

<mark style="color:green;">**July 14, 2022**</mark>

* Fixed signing in with Apple IDs that contain capital letters
* Fixed signing in with Apple IDs that have 2FA enabled but don’t have any registered trusted devices
* Fixed repeatedly asking some users to sign in every time they refresh their apps
* Fixed “Application is missing application-identifier” error when sideloading or (de-)activating certain apps
* Fixed “Incorrect Apple ID or password” error after changing an Apple ID’s primary email address
* Fixed crash when receiving unknown error codes from AltServer

## <mark style="color:green;">AltStore 1.5</mark>&#x20;

<mark style="color:green;">**May 6, 2022**</mark>

### New

#### Trusted Sources&#x20;

* Download and update certain third party apps entirely through AltStore
* Add Trusted Sources directly from the new Sources page
* Trusted Sources are sources we’ve explicitly approved because they meet our safety standards
* Support for adding any source by URL will be coming later

#### AltJIT&#x20;

* Allows sideloaded apps to use Just-in-Time (JIT) compilation
* Long-press an app in My Apps, then choose “Enable JIT” – a few seconds later you should see an AltStore notification saying “Successfully Enabled JIT”
  * Your device must be on the same WiFi network as AltServer or connected to your computer via USB
* JIT will remain enabled until the app is quit from the app switcher or purged from memory in the background
* Requires iOS 14 or later
* Requires AltServer 1.5 or later

### Improved&#x20;

* Supports landscape app screenshots
* Adds Shane to credits and Patreon screen
* Prefetches & caches Friend Zone patrons to offset the Patreon API’s slow response time

### Fixed

* Fixed a potential crash when sideloading certain apps
* Fixed some apps having access to AltStore’s app group after being (de-)activated
* Fixed crash when adding or removing sources that have News items
* Fixed Core Data error when not connected to internet due to saving non-NSSecureEncoding items from NSError’s userInfo


# AltServer

## <mark style="color:blue;">AltServer 1.7.4 (Windows only)</mark>

<mark style="color:blue;">**March 24, 2026**</mark>

* Fixed apps crashing on launch on iOS 26.4
* Updated codesigning library to match AltStore & AltServer macOS

## <mark style="color:blue;">AltServer 1.7.3 (Windows only)</mark>

<mark style="color:blue;">**February 8, 2026**</mark>

* Fixed -22410 error when installing and refreshing apps

## <mark style="color:blue;">AltServer 1.7.3 (macOS only)</mark>

<mark style="color:blue;">**May 22, 2025**</mark>

* Fixed enabling JIT on iOS 17.4+&#x20;
  * Requires pymobiledevice3 3.2 or later

## <mark style="color:blue;">AltServer 1.7.2</mark>

<mark style="color:blue;">**September 16, 2024**</mark>

* Fixed apps becoming unverified on iOS 18

## <mark style="color:blue;">AltServer 1.7.1 (macOS only)</mark>

<mark style="color:blue;">**November 30, 2023**</mark>

* Increases default AltJIT timeout to 90 seconds
* Change AltJIT timeout via `defaults` Terminal command:

  `defaults write com.rileytestut.AltServer JITTimeout [seconds]`
* Adds `--timeout` argument to `altjit` CLI tool

## <mark style="color:blue;">AltServer 1.7 (macOS only)</mark>

<mark style="color:blue;">**September 18, 2023**</mark>

### **New**

* Mail Plug-in no longer required!
* Supports macOS 14 Sonoma

**`altjit` CLI**

* Command-line tool to enable JIT on iOS 17 devices
* Used internally by AltServer, but can be run manually via Terminal
* e.g. `AltServer.app/MacOS/altjit enable DolphiniOS --udid [device ID]`
* Requires installing additional dependencies (view [AltJIT page](https://faq.altstore.io/how-to-use-altstore/altjit) for instructions)
* Thanks to [pymobiledevice3](https://github.com/doronz88/pymobiledevice3) for their work on the iOS 17 Developer Disk format!

### Fixed

* Fixed AltJIT on iOS 17
* Fixed "About" panel appearing behind other apps
* Updates Copyright year to 2023

## <mark style="color:blue;">AltServer 1.6.2 (macOS only)</mark>

<mark style="color:blue;">**September 28, 2023**</mark>

### **New**

* Mail Plug-in no longer required!

### Fixed

* Fixed "About" panel appearing behind other apps
* Updates Copyright year to 2023

##

## <mark style="color:blue;">AltServer 1.6.1 (Windows only)</mark>

<mark style="color:blue;">**February 20, 2023**</mark>

* Supports Apple IDs with Advanced Data Protection (ADP) enabled

## <mark style="color:blue;">AltServer 1.6</mark>

<mark style="color:blue;">**January 30, 2023**</mark>

### **New**

#### Revamped Error Handling

* Completely revamped error handling to include as much information as possible, which should make debugging certain issues much easier
* Revised error messages to be more descriptive and provide more suggestions
* Adds “View More Details”/”Help” button to error alerts to view detailed error information
* Adds "Search FAQ" button to error alert
* Revised error domain format to `[Module].[ErrorType]`
* AltServer.ServerError codes start at 2000
* AltStore.AppleDeveloperError codes start at 3000
* Uses underlying error messages (if available) for several AltServer.ServerError errors
* Encodes/Decodes all Codable user info values, not just recognized types

#### iOS Version Compatibility

* Checks iOS compatibility before installing AltStore
* Downloads latest compatible AltStore version for your iOS device

### **Improved**

* Uses `CFBundleDisplayName` instead of `CFBundleName` for app name if it exists **(Windows)**
* Revised error messages to match AltServer macOS **(Windows)**

### **Fixed**

* Fixed error encoding CodableError Int/UInt user info values
* Fixed adding failures to NSErrors with nil localizedFailureReasons
* Fixed occasional crash when receiving requests from AltStore **(macOS)**
* Fixed installation alerts saying "iPhone" instead of actual device name **(macOS)**
* Fixed AltServer notification icon not appearing in Windows 11 22H2 taskbar **(Windows)**

## <mark style="color:blue;">AltServer 1.5.1</mark>

<mark style="color:blue;">**July 14, 2022**</mark>

* Fixed signing in with Apple IDs that contain capital letters
* Fixed signing in with Apple IDs that have 2FA enabled but don’t have any registered trusted devices
* Fixed incorrect “Developer Disk incompatible with \[iOS Version]” error when enabling AltJIT
* Fixed installing Mail plug-in after uninstalling it **(macOS)**
* Fixed memory leak when refreshing apps over WiFi **(macOS)**
* Fixed an issue causing wired connections to occasionally stall **(macOS)**
* Fixed an issue causing indefinite high CPU usage after enabling AltJIT **(Windows)**
* Fixed an issue causing indefinite high CPU usage after updating AltStore **(Windows)**

## <mark style="color:blue;">AltServer 1.5</mark>

<mark style="color:blue;">**May 3, 2022**</mark>

### **New**

#### AltJIT

* Allows sideloaded apps to use Just-in-Time (JIT) compilation
* Go to "Enable JIT" > \[Your Device] from the AltServer menu, then choose a sideloaded app
  * Your device must be on the same WiFi network as AltServer or connected to your computer via USB
* JIT will remain enabled until the app is quit from the app switcher or purged from memory in the background
* Requires iOS 14 or later

#### Direct .ipa Sideloading

* Sideload apps (.ipa's) directly to iOS devices without installing AltStore first
* Hold Option (macOS) or Shift (Windows) when clicking the AltServer icon to reveal new "Sideload .ipa…" menu option
* Supports iPhones and iPads running iOS 9.3 or later
* Supports Apple TVs running tvOS 9.3 or later **(macOS)**
  * For now, Apple TVs must be manually paired with Xcode first
* Apps sideloaded with AltServer must be manually re-installed every 7 days
  * Install AltStore to automatically refresh your sideloaded apps in the background

#### Multiple Device Support

* Install AltStore onto multiple iOS devices using the same Apple ID
* You must use the same computer to install AltStore each time

#### Mail Plug-in Improvements (macOS)

* AltPlugin can now be updated independently from AltServer&#x20;
* AltPlugin is no longer required if both System Integrity Protection (SIP) and Apple Mobile File Integrity (AMFI) are disabled

### Improved

* Added “…” to menu items that require additional user input to match macOS HIG **(macOS)**
* Prefers “Individual” paid teams over free teams if there are multiple Apple Developer teams associated with your Apple ID
* Revokes the previous iOS Development certificate created by AltStore (if one exists) instead of revoking a random one
* Updated “Cannot activate more than 3 apps” error alert to list all sideloaded app bundle IDs
* Revised code signing logic to more accurately match Apple’s codesign tool
* Improved error message when authenticating with invalid anisette data
* Improved error messages for libimobiledevice errors
* Improved error messages for various AltServer-specific errors
* Updated libimobiledevice dependency to 1.3.0
* Updated LaunchAtLogin dependency to 4.1.0 **(macOS)**

### Fixed

* Fixed “App Group does not exist” error when sideloading apps
* Fixed a potential crash when disconnecting an iOS device from your computer
* Fixed a potential crash when sideloading certain apps
* Fixed potentially registering an app group twice when sideloading an app containing app extensions
* Fixed “RSTPlaceholderView\.nib couldn’t be saved” error when sideloading apps **(macOS)**
* Fixed duplicate “Revoke Development Certificate” alerts when sideloading apps **(macOS)**
* Fixed issue unzipping .ipa’s with unexpected files in Payload directory **(Windows)**
* Fixed ignoring some error responses from Apple’s developer servers **(Windows)**
* Fixed memory leak when parsing responses from Apple’s developer servers **(Windows)**
* Fixed various memory leaks when managing a device’s provisioning profiles **(Windows)**
* Fixed various memory leaks when installing AltStore or sideloading .ipa’s **(Windows)**


# Beta Apps

By joining our Patreon, you can download beta versions of our apps like Delta and Clip, which include features that are currently in development, and are only available to those who have joined.

### AltStore PAL Instructions&#x20;

1. Join our [Patreon](https://www.patreon.com/rileyshane).
2. Open the Settings tab in AltStore.
3. Press “Link Patreon account”.
4. Sign in with your Patreon account. After signing in, the message on the Patreon screen will now begin with “Hey \[your name]”. If a different Patreon account than the one you want to use is already logged in via Safari, you may need to sign out in Safari first.
5. Open the Browse tab and now the beta versions of our apps will also be available to download.

{% hint style="warning" %}
To downgrade from the AltStore PAL beta to the public version, you will need to
{% endhint %}

### AltStore Classic Instructions&#x20;

1. Join our [Patreon](https://www.patreon.com/rileyshane).
2. Download and install the latest beta of AltServer from the most recent AltStore post on our Patreon [here](https://www.patreon.com/collection/48008).
3. Use AltServer beta to install AltStore beta onto your device.
4. Open the Settings tab in AltStore.
5. Press “Link Patreon account”.
6. Sign in with your Patreon account. After signing in, the message on the Patreon screen will now begin with “Hey \[your name]”. If a different Patreon account than the one you want to use is already logged in via Safari, you may need to sign out in Safari first.
7. Open the Browse tab and now the beta versions of Delta and Clip will also be available to download.

{% hint style="warning" %}
Make sure to delete the regular AltStore afterward. Having two versions of AltStore installed might cause conflicts.&#x20;
{% endhint %}


# Discord

The official AltStore Discord is where you can interact with the AltStore team and others involved with the community. We have dedicated support channels where you can receive active support from either us or our community helpers, as well as development channels where you can follow our progress and provide feedback.

To get access to the Discord, first sign up for the "Community Member" tier on [Patreon](https://www.patreon.com/rileyshane)

You then need to follow Patreon's instructions for connecting your Discord to your Patreon account:

1. Log in to your Patreon account
2. Click on **Settings** from the left side menu
3. Click on **More** > [**Connected Apps**](https://www.patreon.com/settings/apps) from the menu bar
4. Click the **Connect** button next to Discord under App Integrations
5. Enter the email address or phone number you use to log in with Discord and your password and click the **Login** button
6. Click the **Authorize** button&#x20;
7. You've successfully linked Discord to Patreon! You may need to refresh the page

Once you've linked your account, you should now have access to the server!

&#x20;                                        <img src="/files/VV7KjkjlRZDjIuXgtScS" alt="" data-size="original">


# Friend Zone

Patrons belonging to the "Friend Zone" tier will have their name displayed in the AltStore app. You can view the list of all Friend Zone Patrons by tapping "Join the beta" in the Settings tab.

&#x20;                                                 ![](/files/71TzrDY9l1rESK0BY0Yh)


# Team

## ![](/files/aQoBJdDPBNToMWSOSjXc)

### Riley Testut - Developer

Website: [rileytestut.com](https://rileytestut.com)

Email: <riley@altstore.io>

Twitter: [@rileytestut ](https://twitter.com/rileytestut)

## ![](/files/hk2MQBL3YSs8ctasPLfN)&#x20;

### Shane Gill - Operations

Website: [shanegill.io](https://shanegill.io)

Email: <shane@altstore.io>

Threads: [@shanegill.io](https://www.threads.net/@shanegill.io)


# Press Kit

To contact us for media inquiries, please email press\@altstore.io

## About

AltStore is a third-party app store for iOS devices that allows users to sideload apps not available on the official App Store - no jailbreak required. With AltStore you can:&#x20;

* Easily sideload apps (.ipa files) downloaded on your device
* Manage third party sources to browse dedicated store pages and download apps directly&#x20;
* Automatically check for app updates in the background

For more technical information on how AltStore works, please check out the project's README on GitHub: <https://github.com/altstoreio/AltStore>

## Links

Homepage: <https://altstore.io/>

Twitter: <https://twitter.com/altstoreio>

Mastodon: <https://fosstodon.org/@altstore>

GitHub: <https://github.com/altstoreio/AltStore>

## App Icon

<div><figure><img src="/files/rLTSAHmGJVoxldoX1oPr" alt=""><figcaption></figcaption></figure> <figure><img src="/files/QIXckqexPiLdpdYKjiDy" alt=""><figcaption></figcaption></figure></div>

## Framed Screenshots

<div align="center"><figure><img src="/files/6RAlzf0VquNlfasXZ7NK" alt=""><figcaption><p>Browse Tab</p></figcaption></figure> <figure><img src="/files/TogmOerLrMUtiTg0qVpB" alt=""><figcaption><p>My Apps Tab</p></figcaption></figure></div>

<div><figure><img src="/files/0PoVgQLSLlGxDAfPVVyy" alt=""><figcaption><p>News Tab</p></figcaption></figure> <figure><img src="/files/7ZJQRQaKTB5yei4RcXvT" alt=""><figcaption><p>App Store Page</p></figcaption></figure></div>

<div><figure><img src="/files/5HtVFgX4ikW8ParIoUtF" alt=""><figcaption><p>Lock Screen Widget</p></figcaption></figure> <figure><img src="/files/Q8u2lk8q9OyRH3M7oBWk" alt=""><figcaption><p>AltStore Settings</p></figcaption></figure></div>

<div><figure><img src="/files/ZaGNWgrexTZB7o6Bgsyt" alt=""><figcaption><p>Trusted Sources Page</p></figcaption></figure> <figure><img src="/files/Ykm0QsA2D9PmSZL6w85p" alt=""><figcaption><p>Error Log</p></figcaption></figure></div>

## Screenshots

<div><figure><img src="/files/C142mCamf27I3hNVB7rB" alt=""><figcaption><p>Browse Tab</p></figcaption></figure> <figure><img src="/files/GU4iCf4SgHc3lezK280z" alt=""><figcaption><p>My Apps Tab</p></figcaption></figure></div>

<div><figure><img src="/files/EBg9vYSc2kLF9LgDKcZD" alt=""><figcaption><p>News Tab</p></figcaption></figure> <figure><img src="/files/1Ayo1gwEyYzAIcKxU60w" alt=""><figcaption><p>App Store Page</p></figcaption></figure></div>

<div><figure><img src="/files/rvjTKCJSnhrRQeAYXkY1" alt=""><figcaption><p>Lock Screen Widget</p></figcaption></figure> <figure><img src="/files/HQBsqQginnzOpEsXMiG9" alt=""><figcaption><p>AltStore Settings</p></figcaption></figure></div>

<div><figure><img src="/files/A7GuTVeeCAezsfM2tt4f" alt=""><figcaption><p>Trusted Sources</p></figcaption></figure> <figure><img src="/files/SnUcLpm0oKmG8FymK9oV" alt=""><figcaption><p>Error Log</p></figcaption></figure></div>

## Promo Images

<figure><img src="/files/aPTlkbi5V1ovgUZp2Cs7" alt=""><figcaption><p>AltStore 1.5 Launch</p></figcaption></figure>

<figure><img src="/files/4u7y7MzRMTDMJMVDbvas" alt=""><figcaption><p>AltStore 1.6 Launch</p></figcaption></figure>

<figure><img src="/files/Z98WC5DXf4X0cbz86PFd" alt=""><figcaption><p>3yr Anniversary</p></figcaption></figure>

<figure><img src="/files/i99S8Y2gASQSx6cU3ZKr" alt=""><figcaption><p>Trusted Sources Announcement</p></figcaption></figure>

<figure><img src="/files/6Qyu7NzuU7ETsWymAXwF" alt=""><figcaption><p>New Feature: Sideloading Apps</p></figcaption></figure>

<figure><img src="/files/ZX4QvaQO7hdEFlHxaUre" alt=""><figcaption><p>More Trusted Sources Added</p></figcaption></figure>


# Videos

Here you can find videos of people using AltStore to do fun things!

## Our Favorite Videos&#x20;

{% tabs %}
{% tab title="The Verge" %}
{% embed url="<https://youtu.be/ftyWe6DVvO4>" %}
[**The Verge**](https://www.youtube.com/channel/UCddiUEpeqJcYeBxX1IVBKvQ) **showcases AltStore**
{% endembed %}
{% endtab %}

{% tab title="Linus Tech Tips" %}
{% embed url="<https://youtu.be/HGHQ5R3NwrA?t=259>" %}
[**Linus** ](https://www.youtube.com/c/LinusTechTips)**uses AltStore to Jailbreak an iPhone**
{% endembed %}
{% endtab %}

{% tab title="Snazzy Labs" %}
{% embed url="<https://youtu.be/LrLDKYFyLMM?t=186>" %}
[**Snazzy Labs**](https://www.youtube.com/channel/UCO2x-p9gg9TLKneXlibGR7w) **uses AltStore and UTM to run Half Life on an iPad**
{% endembed %}

{% embed url="<https://www.youtube.com/watch?v=Kztd8S0nzVw>" %}
[**Snazzy Labs**](https://www.youtube.com/channel/UCO2x-p9gg9TLKneXlibGR7w) **uses AltStore and Dolphin to turn his iPad into a Switch**
{% endembed %}
{% endtab %}

{% tab title="ETAPrime" %}
{% embed url="<https://youtube.com/clip/Ugkxqij5-5x5cp5s9uaM_hjhntPdhvfY--Jg>" %}
[ETAPrime](https://www.youtube.com/channel/UC_0CVCfC_3iuHqmyClu59Uw) uses emulators on the 2021 iPad
{% endembed %}
{% endtab %}

{% tab title="OPERATIONiDROID" %}
{% embed url="<https://www.youtube.com/watch?v=yLuyVakPpUM>" %}
[OPERATIONiDROID](https://www.youtube.com/channel/UCrSGNNsPxE-qsqoqnkFZHBg) shows you how to get AltStore running on Windows and macOS
{% endembed %}
{% endtab %}

{% tab title="iDM" %}
{% embed url="<https://youtu.be/XYEDxf8WHxc?t=55>" %}
[**iDM**](https://www.youtube.com/channel/UCsNsM8GOtj55C-mQfdFOcVw) **explains why AltStore is the best way to use unc0ver jailbreak**
{% endembed %}
{% endtab %}
{% endtabs %}


