[Setup]
Shadowrocket Setup Guide
Start with an existing subscription or server details, then add it, choose a mode, connect, and verify access. This official manual uses the iPhone / iPad interface as an example. First establish a connection you can test, then review the rule details.
[Preparation]
Identify your details and check the current network
This tutorial follows the steps for an initial setup: first add an entry to the server list, then decide which requests should use the proxy, and finally connect and check the result. If you have already imported a server, go straight to the Global Routing step. If you have changed several settings before, note the current selections first so you can track what changes during troubleshooting.
Start by identifying what kind of details you have. A subscription link is generally used to retrieve and update a set of server details; a single share link usually describes one server; manual setup requires you to enter the protocol, address, port, and authentication details separately. Do not mistake a provider's login page for a subscription link, or treat a single share link as a subscription that updates over time. If you are unsure, ask your service provider what the details are for.
Before connecting, confirm that your device can access the current Wi-Fi or cellular network. Complete any required Wi-Fi sign-in first. The domains and rules in this tutorial illustrate syntax; they are not working connections. Use your own valid details, but do not post links containing authentication information on public pages or in screenshots.
The four images below are official App Store screenshots that help locate Add Server, Config, Home, and Settings. Text positions may vary with the system or display settings. Refer to the interface labels and field purposes rather than copying server entries from the screenshots. For complete rule syntax, see the rule reference; this tutorial focuses on what you need to check for a first connection.
[Add Server]
01 Add a server or import a subscription
Importing a subscription and entering details manually are separate options. Choose one based on the details you have; there is no need to add both.
With a subscription link: select Subscribe
Open Home, tap the add button to open Add Server, then select Subscribe under Type. Paste the complete subscription link obtained from your service provider into the URL field, add a note to help identify it, then save. Check for spaces, line breaks, or extra text added by a messaging app. Query parameters are part of the link, so do not remove them without a reason.
After saving, wait for the subscription to load, then return to Home and check whether server entries appear in the SERVER area. An entry means the details were imported; it does not guarantee that every server can connect. Tap the entry you want to use to select it. Adding a subscription to the list without selecting a server does not complete the connection setup. If the list is empty after import, first check whether the subscription returned valid content; do not immediately change Config rules.
To refresh a subscription later, use the action menu for that subscription entry and run an update, then wait for the result. An update retrieves server details from the remote source, so entry names or parameters may change. Confirm your current selection again after updating. Subscription links often contain access credentials; when sharing a troubleshooting screenshot, hide the entire link and its authentication parameters, not just the note.
With individual server details: check Type and authentication fields
If you have the details for a single server, choose the matching protocol under Type in Add Server, then enter Host and Port. Host is the server address; do not include a port, webpage path, or complete subscription link. Enter the Port number provided by your service provider. Password, Method, and other protocol-specific fields must match the server settings. The screenshot shows fields for a specific protocol; available fields vary when you change Type, so do not try to fill in every field shown there.
For protocols such as Trojan that use TLS, also check the SNI and TLS settings provided by your service provider. Do not weaken certificate verification at random to bypass an error. If you have a QR code, use Scan QR Code to import it. For a single share link, use the corresponding import option. Import from Cloud JSON is for the relevant file format, not a general-purpose option for every link. After saving, return to Home, select the entry you added, and continue to the next step.
Common manual-entry mistakes include choosing the wrong Type, omitting a digit in Port, or copying extra characters. Check each field against the original details instead of trying different protocols one after another. For the difference between share links, Subscribe, and Config, see the terminology guide.
[Global Routing]
02 Choose a Global Routing mode
The server determines which remote endpoint the proxy connection uses. Global Routing determines how requests are handled; these are separate settings.
After adding and selecting a server, return to Home and tap Global Routing. The three basic modes are Config, Proxy, and Direct. Do not confuse the mode selector on Home with the configuration-file manager in the bottom Config tab just because both use the word Config: the former determines whether rules are applied, while the latter is used to select and edit a specific configuration.
Config: route traffic according to the current configuration
Choose Config for rule-based routing in everyday use. Then open Config, confirm that the configuration file you want to use is selected, and check its Rule section. Rules are matched in order, and the matching rule determines the policy. PROXY uses a proxy policy, DIRECT connects directly, and REJECT blocks the request. If the configuration references a policy group, also check which option is selected within that group. Having an entry in the server list does not guarantee that a rule will use it.
Here is a minimal syntax example for routing a specified domain and its subdomains through the proxy while connecting directly to everything else. It explains the relationship between rules; you do not need to replace your existing configuration with it for initial setup. example.com is a demonstration domain. In actual use, replace it with the destination you need to handle. Keep a copy of the original configuration before editing, so a successful subscription import is not followed by new issues caused by overwritten rules.
[Rule]
DOMAIN-SUFFIX,example.com,PROXY
FINAL,DIRECT
The first rule matches example.com and its subdomains. FINAL handles requests that did not match earlier rules. If FINAL appears before a specific domain rule, that later rule cannot work as intended. The General, Rule, Hosts, URL Rewrite, and other sections shown in the screenshot serve different purposes. You do not need to edit them all to verify your first connection. For step-by-step rule editing, see the Rule reference.
Proxy and Direct: use them to isolate issues
Proxy is useful for temporarily testing the proxy path of the selected server while troubleshooting, reducing variables introduced by rule-based routing. It does not mean that all system traffic will always follow the same path under every network condition. Direct sends requests without forwarding them through a proxy server, and can show whether a destination is accessible directly on the current network. It does not prove that the server connection works.
For an initial test, try Proxy to check proxy access, then switch back to Config to verify the rules. After switching modes, make a new request and, if needed, close and reopen the test page to avoid reusing an old connection. Once the mode and Config are set, turn on the switch at the top of Home.
[Home]
03 Turn on the connection and authorize the system configuration
Check the selected server and Global Routing first, then establish the system connection so you know which configuration is in use.
Return to Home. In the SERVER area, confirm that the server you just imported or entered is selected, then check the Global Routing value. If the top of the screen shows Not Connected, the current connection has not been established. Turn on the switch at the top. The first time you connect, the system will usually ask to add a VPN configuration. Allow it as prompted, then complete the password or biometric verification on your device. Do not enter your device passcode in the Password field in Add Server; they serve different purposes.
After authorization, return to Shadowrocket and wait for the status on Home to change. The system VPN configuration lets the device hand relevant network requests to the app; it does not mean that the remote server is reachable. Even if the switch stays on, verify access in the next step. If system authorization has been revoked, the app may not be able to maintain a connection. Resolve the authorization issue rather than repeatedly refreshing the subscription.
If the switch turns off again immediately, check whether another VPN connection is active, whether device management policies apply, and whether the Shadowrocket VPN configuration is disabled. For troubleshooting, stop conflicting connections first and try again. On managed devices, follow your organization’s requirements and do not attempt to bypass restrictions. If a specific error appears, note its exact text and the steps that triggered it, then address the relevant part of the process.
To disconnect normally, turn off the switch at the top of Home. If the connection later starts again automatically, review On Demand and its trigger conditions in Settings rather than deleting the server. Keep one manual connection active for now, complete the verification below, then decide whether to enable automatic connections.
[Connectivity Test]
04 Verify three aspects of the connection
Check the system connection, destination reachability, and rule matching separately. A single test result is not enough to assess everything.
First: does the connection stay active?
Return to Home and confirm that the connection switch is still on, the correct server is selected, and no error keeps appearing. After authorization, allow time for the connection to establish before running Connectivity Test. The result reflects the selected test method. A failed probe may be related to how the server responds to that probe, so do not conclude from one result alone that the account or subscription is unusable.
Second: can you access the expected destination?
Open a browser, visit a destination that you expect to use the proxy, and refresh an actual page. Do not rely only on content already cached by the browser or on the VPN indicator on the device. If the webpage fails but Connectivity Test returns a result, continue checking DNS resolution, TLS, the destination site, and the specific connection. If all destinations fail, first recheck the server details and current network rather than immediately adding more rules.
You can also switch between Wi-Fi and cellular data, reconnect, and compare whether only one network fails. During testing, note the network type, Global Routing mode, selected server, and destination domain. There is no need to record or share authentication credentials. If an old connection remains after changing networks, turn the switch off and on again, then revisit the destination.
Third: does Config route traffic as expected?
In Config mode, compare with a destination expected to use DIRECT. If the current version provides request logs, check the matched rule and final policy for the destination. Confirm that requests requiring the proxy actually use PROXY; do not assume success just because a page loads. A destination may be accessible directly on the current network, so a page loading does not by itself prove that it used the proxy.
If Proxy works but Config does not, first check the selected configuration, the order of domain rules, and the FINAL policy. If both modes fail, check the server details and network. After verification, leave Global Routing in the mode you actually need and keep a record of the working steps. This gives you a baseline for comparison after subscription updates or rule changes.
[Settings]
05 Troubleshoot based on where the process failed
Identify where the process stopped before checking Settings. You do not need to change every advanced option to connect for the first time.
Import failed: check the link and data format
If a subscription will not update or the list is empty, first confirm that you are using the subscription address, not your provider’s management page. Check that the copied content is complete, the subscription is still valid, and the current network can retrieve its contents. Some update requests depend on specific network conditions; ask your service provider for details. Do not confuse a failed subscription update with a failed server connection. If the server appears in the list but cannot be used, move on to checking its parameters and connection.
Connection failed: check the server and test method
Compare Type, Host, Port, Password, and protocol-specific fields with the original details. For TLS-related errors, check the device time and confirm that the name matches the server requirements. Do not simply loosen verification settings. In Settings, review Test Method to understand how Connectivity Test currently works. Results from different methods are not directly comparable, and a single response time does not guarantee stable performance.
If one server fails while others in the same subscription work, note the failed entry and error, then check that server’s status with your service provider. If all servers fail only on one network, first check that network’s authentication, connection conditions, and name resolution. Do not delete every entry because of one failed test; keeping them lets you compare the results.
Connected, but traffic is routed incorrectly: revisit Global Routing
Check whether Direct was selected by mistake, whether a different Config is in use, or whether an earlier rule matched the destination first. To inspect the rules, keep one clear test destination and check each rule from the specific domain rule through FINAL. DNS, URL Rewrite, HTTPS Decryption, and other settings each have specific use cases. Do not enable them all when troubleshooting an initial connection. For more on syntax and priority, see the rule reference.
Automatic connections and diagnostics: adjust these last
On Demand triggers connections under specified conditions; it does not correct invalid server details. First confirm that a manual connection works, then check the On Demand conditions and expected behavior in Settings. If the connection starts again automatically after you disconnect manually, review this setting. Proxy, TCP, UDP, and other items in Settings are more detailed network options. Leave them unchanged until you have identified the issue, so you do not introduce more variables.
To investigate further, use the relevant tools in Diagnostics and note the network type, destination, and sequence of actions when the error occurred. Diagnostic records may contain domains, server addresses, or authentication details. Review and hide sensitive information before sharing them. After troubleshooting, restore any temporary mode or test-setting changes, then repeat “connect—visit—check rules” to confirm the result. For more common scenarios, see Frequently Asked Questions. Look up unfamiliar fields in the terminology guide.
[Download]
Get and install Shadowrocket on other devices
The steps above use iPhone / iPad as an example. Shadowrocket for iPhone / iPad costs $2.99 as a one-time purchase on the App Store. Versions for Mac (Apple silicon and Intel), Windows, Android, and Linux are free. For other devices, choose the appropriate package in the download guide. Packages are available from this site at /dl/; follow the prompts shown on your device for interface locations and system authorization.
Current version Loading · iPhone / iPad $2.99 one-time purchase; Mac, Windows, Android, and Linux versions are free.
If a system prompt appears during installation, first confirm that the file came from this site. On Mac, check “Open Anyway” in “Privacy & Security.” In Windows SmartScreen, check the run option under “More info.” On Android, allow the browser used for the download to “Install unknown apps”; you can revoke the permission after installation. On Linux, handle execution permissions or dependencies according to the package format. Instructions for these steps and other prompts are in installation approval guidance. Do not approve files from unknown sources.