Official manual · First connection

Shadowrocket Setup Guide

Follow these steps: add → choose a mode → connect → test → troubleshoot. First confirm that an existing server can access a destination, then work through the rule details.

This guide uses the English labels shown in the app. Official screenshots help identify each screen, but the layout may vary by device and app interface; follow the options shown in your app. See the complete manual for the full setup guide.

Add Server: Add a Server or Import a Subscription

First, check whether you have a subscription link or details for a single server. A subscription link typically provides a list of servers; individual server details must be entered into the corresponding fields. Choose one method—there's no need to import the same information twice. Keep the original details handy, and when copying, avoid including instructions, extra spaces, or line breaks.

Have a Subscription Link? Choose Subscribe

On Home, find Add Server, or use the add button to open it. Tap Type, choose Subscribe, then paste the full subscription link into the URL field for that type. A name or note is just for identification; choose something you can recognize. It doesn't replace the subscription link or affect whether the link works.

Check that the link is complete, then save and return to Home. Wait for the subscription to load. When successful, you should see a subscription group and its server entries, not just the group name. If the group is empty or loading fails, check the link, your network, and the provider's service status first. Don't change Global Routing yet: changing modes can't add server details that haven't been imported.

Have Details for One Server? Enter Them by Type

Open Add Server and choose the protocol type specified by your provider under Type. Enter the Host, Port, and required authentication details. The official screenshot shows the fields for one type, including Password and Method. Other types have different fields, so don't assume every protocol uses the same set of parameters.

Host is the server address, and Port is the port number. Match the password, encryption method, and other protocol parameters to the details you received. Don't enter a subscription URL in Host or replace an option just because another one looks more common. If you have a compatible QR code, use Scan QR Code; check the type and address before saving.

After saving, return to Home and confirm the new entry appears in the SERVER list. This only confirms that the details were added; it doesn't prove the server can connect. Select the server you want to test, then choose a routing mode. See the glossary for the difference between a subscription and a configuration file.

Official Shadowrocket Add Server screen showing Type, Host, Port, Password, Method, and the QR code import option
Official App Store screenshot: Add Server. Choose a Type first, then check the fields required for it. Subscribe fields depend on the screen shown after you select that type.

Global Routing: Choose Config, Proxy, or Direct

Global Routing controls how traffic is handled; it doesn't fill in server details. Return to Home and open Global Routing. This guide covers three modes—Config, Proxy, and Direct—to help you decide what to check. Before choosing, decide whether you're testing the server or rule-based routing.

Config: Apply the Active Configuration

With Config selected, traffic is handled according to the rules in the active configuration. Open Config and check which configuration file is active; seeing a file in the list isn't enough. Importing a subscription doesn't set up routing rules. A subscription provides server details, while a configuration file defines how traffic is matched and handled.

The configuration editor in the official screenshot includes sections such as General, Rule, Hosts, URL Rewrite, and HTTPS Decryption. To get started, focus on the destinations and policies in Rule; you don't need to change every section. Rules are generally matched in order, so an earlier match may determine the result. See the complete manual for rule syntax and configuration maintenance.

Proxy: Test the Selected Server

Choose Proxy to check the selected server's connection and access without making routing rules another variable. This can help with initial troubleshooting, but it doesn't guarantee access to every destination or make incorrect server details work. If Proxy works but Config doesn't behave as expected, check the configuration and rule matches instead of importing the same server again.

Direct: Test Without a Proxy Route

With Direct selected, traffic is handled without using the proxy. A webpage loading in this mode doesn't show that the selected proxy server is working. After the initial connection test, switch back to Config for everyday rule-based routing, confirm the active file, and test a specific destination.

DOMAIN-SUFFIX,example.com,PROXY
IP-CIDR,192.168.0.0/16,DIRECT
FINAL,DIRECT

These examples use reserved example domains to illustrate rule structure: PROXY and DIRECT are policy names, while FINAL handles traffic that didn't match an earlier rule. Don't replace your existing configuration with this example. First make sure the selected mode matches your goal, then select a server and connect.

Official Shadowrocket Config editor screen showing General, Rule, Hosts, URL Rewrite, HTTPS Decryption, and Add Rule
Official App Store screenshot: Config editor. Choose Global Routing on Home; rules in Config determine how traffic is handled in Config mode.

Home: Select a Server and Connect

Select a server before turning on the switch at the top. In the SERVER section on Home, tap the server you want to use and check for the selection dot on the left. Opening a server's edit screen is not the same as selecting it. If you open its settings, save or go back and confirm the selection dot is still shown in the list.

Make sure Global Routing matches the mode you chose in the previous step, then turn on the connection switch at the top. The first time you connect, the system may ask permission to add a VPN configuration. This authorization lets the app establish a system network connection. Read the prompt, confirm you're acting on behalf of Shadowrocket, then approve and complete device authentication as required.

If you deny system authorization, the connection won't be fully established. Return to the app, start the connection again, and respond to the system prompt rather than changing the server password. A managed device, system restrictions, or another active VPN configuration may also affect authorization or connection. Check which configurations your device allows.

After authorizing, return to Home. Check whether the status at the top changes from Not Connected to connected and whether the switch stays on. If it turns off again right away, note any error message and whether the issue occurred before or after system authorization. These point to different causes, covered in the troubleshooting steps below.

A connected status only means the system connection has started; it doesn't confirm that server authentication, remote access, or routing rules are all correct. Test again after changing servers or modes. During initial setup, change one thing at a time and keep any working settings so you can identify the cause if something goes wrong.

Official Shadowrocket Home screen showing the Not Connected switch, Global Routing, and Connectivity Test at the top, with SERVER and Add Server below
Official App Store screenshot: Home. The screenshot shows a disconnected state. In practice, select an entry under SERVER before turning on the switch at the top.

Connectivity Test: Check the Connection and Access

Consider the test result alongside real-world access. Keep the connection on, tap Connectivity Test on Home, and wait for the result. It checks whether the test destination is reachable under current conditions. A successful result doesn't verify every site, protocol, or rule, and a failure alone doesn't prove the entire server is unusable.

Next, open a browser and visit a destination you specifically want to test and know should be reachable. Don't rely on a page that's already loaded; reload it and check for a new request. Note the destination, selected server, and Global Routing mode. Keep the destination the same for later comparisons so the results are useful.

In Config mode, also check whether the destination matches the expected rule. For a destination expected to use PROXY, check the destination and policy in the connection log. A destination expected to use DIRECT can't prove that the proxy route works. A page loading confirms access, but you need rules and logs to determine how its traffic was handled.

To compare modes, keep the same server selected and visit the same destination in Proxy and Config. If Proxy works but Config doesn't, check rule order, policy references, and the active configuration first. If both fail, recheck the server details, service status, and current network. This helps narrow down the cause; don't draw conclusions from a single test.

Traffic changes in Data can provide a useful clue, but other app or system requests may also generate traffic. An increase alone doesn't prove that a destination used the expected policy. Likewise, the reported test duration isn't the same as real-world download speed. Once testing is complete, keep the mode and configuration you intend to use. If the results are still unclear, work through the checks in the final step.

Settings and Common Issues: Check One Variable at a Time

Start with where the problem occurs; don't reset everything. Note whether there's no imported content, the switch won't stay on, the test fails, or only a specific destination fails. After changing one item, repeat the test with the same destination. That way, you can tell what made a difference.

No Server Entries After Import

Review the import details. Make sure the subscription uses the Subscribe type, the link is complete and still valid, and your device's current network can retrieve its contents. Don't remove or edit authentication parameters in the link. If your provider has changed it, get the current link from them. Keep any necessary custom details before updating, and don't delete the only working entry until you've found the cause.

The Switch Turns Off or System Authorization Is Incomplete

First confirm that system VPN configuration authorization was allowed, then check whether another VPN connection or device management restrictions could affect this connection. If you dismissed the first prompt, start the connection again and complete authorization. Since this issue occurs while the system connection is being established, check permissions and device status before changing routing rules repeatedly.

Connection Stays On, but Testing or Access Fails

Check that the selection dot is next to the intended server, then verify Type, Host, Port, and authentication details. Once the fields are correct, confirm the service is still available. If appropriate, test on another network your device is allowed to use to see whether the current network is a factor. Note what changes; a one-off success doesn't necessarily mean the issue is resolved.

In Settings, find Test Method, which affects how connectivity tests are evaluated. If a test fails but access works, understand the test conditions before changing the setting. On Demand controls automatic connection conditions. If the connection returns after you manually disconnect, check those conditions rather than assuming the switch is malfunctioning.

Only Config or a Specific Destination Has Issues

Return to Config and confirm the expected file is active. Check whether an earlier rule already matches the destination and whether the referenced policy is appropriate for the current configuration. If you suspect a DNS issue, note the symptoms and check one setting at a time; don't change DNS, rules, and protocol parameters together. For more advanced options such as Proxy, TCP, and UDP, follow the relevant section in the complete manual.

Use Diagnostics in Settings to investigate further. When preparing diagnostic information, include the symptoms, mode, reproduction steps, and test results. Remove subscription links, authentication details, passwords, and other identifying information before sharing. See FAQ for common follow-up questions; you don't need to share your entire configuration to report an issue.

Official Shadowrocket Settings screen showing Language, Test Method, Today Widget, On Demand, Diagnostics, Proxy, TCP, and UDP
Official App Store screenshot: Settings. Troubleshoot the settings related to the symptoms you've observed; there's no need to change everything.

Where to Go After Your First Connection

Once you can reliably reproduce a successful connection, learn configuration maintenance step by step. Keeping your current working settings makes it easier to assess changes than trying several new options at once.