Shadowrocket Troubleshooting
Separate purchase, permissions, imports and request routing, then check them in order. The answers below assume you already have your own subscription or server details. Change one thing at a time and keep working configurations intact.
Select a question to expand the answer. New users can start with the Getting Started guide. For a step-by-step review of the settings, see the complete user manual.
App Store
Verify and purchase
Verify the app first, then check purchase status for your device and account.
See the app verification steps →Can't find Shadowrocket in the App Store? What to check first
Make sure you searched for Shadowrocket, then check your Apple Account's store region and device compatibility. Availability can vary by storefront, so don't buy an app based on a similar name alone. Open the product page from the getting-the-app guide and verify the developer, Shadow Launch Technology Limited, and app ID 932747118. If the page says the app isn't available in your region, check your account's country or region. If you need to change it, go to Settings > Apple Account > Media & Purchases > View Account > Country/Region and follow Apple's instructions for your balance, subscriptions and payment information.
How can I verify that the App Store app is Shadowrocket?
Check all three: the developer is Shadow Launch Technology Limited, the product page URL contains id932747118, and the icon matches the official icon in this site's header. A similar name or icon alone isn't enough to verify the app. Open the product page to check compatibility, local pricing and the purchase button; don't rely on search results alone. Shadowrocket is a paid Apple-platform app available exclusively through the App Store. Before purchasing, follow the getting-the-app guide to verify the details. Check the App Store listing for system requirements and purchase availability.
Do I need to buy Shadowrocket again when I get a new iPhone or reinstall it?
Sign in to the App Store with the Apple Account used for the original purchase. Find Shadowrocket in Purchased or your app list, then follow the prompts to download it again. Restoring purchase eligibility and restoring app configuration are separate: your servers, subscriptions and configuration files may not return after reinstalling, so save anything you need beforehand. If the App Store still shows a price, check the purchasing account, purchase history and current storefront before paying again. Refer to the App Store listing for redownload eligibility, and see the purchased-app recovery section of the getting-the-app guide for steps.
Can I install Shadowrocket on iPad? What about Mac and Apple TV?
Shadowrocket is primarily used on iPhone and iPad. Open the same App Store product page on the device you want to use, check compatibility and confirm the purchase status for your Apple Account. The layout and location of some controls may differ on iPad; look for Home, Config and Settings in the actual interface. Shadowrocket is also available from the same storefront for Mac and Apple TV, and is obtained only through the App Store. Check the App Store listing for system requirements and purchase availability. Use the store prompt on the target device to determine whether payment is required; don't infer this from what another device displays.
How much does Shadowrocket cost? Does the purchase include servers?
Shadowrocket is a one-time purchase. The US storefront price is about $2.99; other storefronts show local currency, and the final price is the amount on the App Store confirmation screen. A one-time app purchase is not a server plan. It covers use of the app; you still need your own subscription or server details to connect. Get subscriptions from your service provider. This site provides purchase verification and the official manual, not server access. For purchase issues, check your App Store purchase history. For server expiry, data limits or connection parameters, check the details of your existing service—these are separate matters.
Home / Settings
Installation and first launch
Approve the system prompt and test a manual connection before setting up automatic triggers.
See the Getting Started guide →What does the VPN configuration prompt do the first time I open the app?
This is a system authorization prompt to create a VPN configuration for the app, allowing Shadowrocket to handle network requests according to your settings. After confirming that you're using the verified app, approve the prompt and complete any authentication required by your device. Granting permission doesn't mean the server is available or that every request will use a proxy; Global Routing and your rules determine the route. If you canceled the prompt, try connecting again in the app to bring it up. Connect only when you understand the source, settings and purpose. Approving system permissions is not a connectivity test.
The connection switch won't turn on, or turns off right away. What should I check?
Go to Home and confirm that a server is available to select and that no VPN authorization prompt is pending. Check the VPN status in system settings, stop any other VPN connection in progress, then try again. If the device is managed by an organization, its restrictions may prevent a configuration from being created; ask the device administrator to check permissions. If it still fails, note the app's message, reopen the app and restart the device before testing again. Don't delete all configurations as a first step—back up anything you need. A switch that won't stay on is different from a server test timing out. Resolve permission and configuration issues first, then check the remote connection.
The interface is in English. Where are the controls for a first connection?
For your first connection, start on Home. SERVER is the server list, Global Routing selects how requests are handled, and Connectivity Test helps check connectivity. Select Add Server to enter details or Subscribe to use an existing subscription. Manage configuration files in Config and find common options in Settings. This manual keeps these interface labels in English so you can match them to the app. If your device lets you set a language for an individual app, check Shadowrocket's language options in the system's app settings; available choices depend on the interface. You can follow the English labels either way.
I've selected a server but still can't connect. How do I check which server is the default?
In the Home screen's SERVER list, find the server you want and check that the DOT marking the default selection appears beside the expected entry. Importing server details only adds them to the list; it doesn't select them or confirm they work. Run an available connectivity test for the entry, turn on the connection, then check both Connectivity Test and actual access. If several entries have similar names, open each one's details and verify the protocol, address and port to avoid selecting an old entry. Test one entry at a time, then switch after checking the result to distinguish a selection issue from incorrect settings.
What should I check before enabling On Demand?
First establish a stable manual connection. Confirm that the default server, Global Routing, DNS and actual access behave as expected, then check the On Demand triggers in Settings. On Demand starts connections under specified conditions; it doesn't fix server problems. If you're troubleshooting automatic reconnections or changes in connection status, temporarily disable On Demand and test manually. Once you've identified the issue, restore the conditions one by one. Don't change rules and On Demand settings at the same time, or it will be hard to tell what caused the change. Test how the app behaves after sleep and network changes on your own device.
Subscribe / Add Server
Subscriptions and server imports
Tell subscription URLs, individual server settings and configuration files apart to avoid using the wrong input field.
See the configuration file guide →Subscribe import failed. What should I check, and in what order?
Check that your subscription link is complete and has no leading or trailing spaces, line breaks or missing parameters. In Add Server, choose Subscribe; don't paste a subscription URL into a single server's address field. Next, check that your current network can reach the URL, then verify the service status and confirm that the response uses a subscription format supported by the app. A web login page, error page or expired content can't be parsed as a subscription. Get the link from your service provider. When reporting an issue, describe the error and steps without sharing the full link. Subscription URLs may contain access credentials, so hide their parameters in screenshots.
How can I update a subscription without losing information that still works?
Note the current default server and back up important configurations first. Then update the subscription from its group’s action menu; the exact menu label may vary by interface. After updating, check for errors, confirm the entries are as expected and make sure the previous default server is still there. An update may add, remove or replace server details, so more entries don't necessarily mean the connection works. Test the server you intend to use. If updating fails, keep the existing working entries, check the link and service status, then try again. Don't repeatedly delete the group as a substitute for troubleshooting. Update configuration files and subscriptions separately so you can roll back changes more easily.
I scanned a QR code, but no usable server appeared. What went wrong?
First confirm that the QR code contains server details or subscription content supported by the app, not a regular webpage, account sign-in page or image description. When you use Scan QR Code, allow camera access if needed and keep the code clear, without glare or cropping. Recognizing text doesn't mean its format can be imported. If the app says it isn't supported, check the protocol and make sure the content is complete; don't modify encoded parameters at random. Ask your service provider for the text details for the same entry and add them using the appropriate method. QR codes may contain passwords or subscription credentials, so don't publish the original image when troubleshooting.
Which settings are easiest to get wrong when adding a server manually?
Choose the protocol that matches your existing details, then check the address, port, credentials, and encryption or transport settings one by one. Fields aren't interchangeable across protocols: UUID, password, TLS, SNI and path each serve a different purpose, and whether a field can be left blank depends on the server configuration. Don't guess settings from a server name, and don't disable TLS verification just because a test failed. If your details include a domain, keep it as provided instead of replacing it with its resolved IP address. Change one group of fields at a time, test and note the result. See the protocol section of the manual for more details.
What's the difference between a subscription, a server and a Config file?
A server entry stores one connection destination and its protocol settings. Subscribe fetches and updates a set of server entries. A configuration file in Config organizes request-handling settings such as rules and DNS. Importing a subscription doesn't mean the correct configuration file is selected, and switching configuration files doesn't update a subscription. Troubleshoot these separately: check whether the server connects, whether the current configuration is enabled, and whether Global Routing is using the expected mode. Back up working configurations before making changes so you don't mistake a rules issue for a failed subscription. If updates are automatic, check the subscription and configuration file update results separately.
Global Routing / Data
Routing rules and troubleshooting
Compare the same destination, check the local network first, then inspect the server and rules.
See the Settings guide →How do I choose Config, Proxy or Direct in Global Routing?
Global Routing has three modes: Config, Proxy and Direct. Config routes requests according to the rules in the current configuration file, making it suitable for everyday use once you've checked the rules. Proxy applies the proxy policy to requests and can help isolate rule-related issues. Direct provides a direct-connection comparison. System and configuration settings may still affect individual requests. When troubleshooting, note the original mode, test the same destination in each mode as needed, then restore the original setting. If Proxy works but Config doesn't, check the rules and policy references first. If Direct also fails, check the local network and destination service.
The app says connected, but I can't access the internet. How can I narrow down the problem?
A connected status only confirms that the local VPN configuration is established; it doesn't prove that the remote server or every request is working. Turn off the connection first and confirm that the local network works, then test the default server. Next, compare Proxy and Config in Global Routing using the same destination, and check the policy and errors in the request log. If domains aren't resolving, check whether the DNS settings match the current configuration. Change one factor per test and note the network type, destination and error message. Don't change the server, DNS and rules all at once. If the underlying network isn't working, restore it before continuing.
Only one website won't load. Should I change the rules or switch servers?
First check whether other destinations work. For the failed request, inspect the rule and policy that actually matched. Rules are generally evaluated in order; a broad condition earlier in the list can take precedence over a more specific one later. Check that conditions such as DOMAIN-SUFFIX and IP-CIDR are correct, that policy references exist, and that the FINAL fallback behaves as expected. If the destination works in Proxy but fails in Config, check the rules first. If both modes fail, check the server and destination service. Don't add a broad rule based only on a website's name. After making changes, retest the affected request and destinations that previously worked.
Does a Connectivity Test timeout mean the server is definitely down?
A single timeout isn't conclusive. Results can also be affected by the local network, test destination, DNS, protocol settings and device time. Make sure the device is set to update its time automatically, repeat the test on a stable network, then check the server address, port, credentials and TLS-related fields. You can compare Wi-Fi and cellular networks while keeping the same server and test conditions. A successful test doesn't guarantee that every website is reachable; verify with actual requests too. If the test keeps failing, send your service provider the error details with credentials hidden, along with your network environment and reproduction steps.
Does Data help explain increased battery use after connecting?
Check app activity for the same period in system battery usage, then compare it with traffic recorded under Data to see whether there is continuous transfer. Battery use can also be affected by signal strength, background tasks, repeated reconnections and protocol workload, so don't attribute every change to the connection switch. While troubleshooting, pause active speed tests and large downloads, temporarily disable On Demand, and compare results on the same network under similar conditions. If traffic doesn't match your expectations, check request logs and background app activity rather than deleting the entire configuration. Data is for monitoring; it isn't a measure of battery consumption or server-side billing.