Official Manual / Getting Started

Shadowrocket Setup Guide

Import an existing subscription, choose Global Routing, and test the connection. First confirm a connection you can verify, then adjust rules and on-demand settings.

The workflow is “Add → choose a routing mode → connect → verify → troubleshoot.” Official screenshots help identify fields and navigation. The interface may vary by device and app version, so use the English interface labels to find each option. Do not copy any connection details shown in screenshots.

01 / Add Server · Subscribe

Add a server or import an existing subscription

First determine whether you have a subscription link or a set of server parameters. Each requires a different setup process.

Open Shadowrocket and stay on Home. Find the SERVER group and the Add Server option. If you already have a subscription link, copy the complete link from your existing provider. Tap Add Server, choose Subscribe in Type, then enter the link in the URL field on the add screen. Check that the beginning, path, and trailing parameters are all intact, then save. Subscription links often contain authentication details. Keep them private and do not paste them into public comments or screenshots.

After saving the subscription, wait for it to load, then return to Home and check whether the SERVER group and its server entries appear. If you see a subscription name but no selectable entries, first check for errors during import or update. Do not turn on the connection switch yet. An empty list may mean the link is incomplete or expired, the current network cannot retrieve it, or the returned content is not in the expected format. Repeatedly adding the same link usually creates duplicate groups and does not resolve the original retrieval issue.

Enter server details manually with Add Server

If you have a server address, port, and authentication details, choose the protocol specified in your information under Type in Add Server; do not choose Subscribe. Then check Host, Port, and the fields required by that protocol. For example, Shadowsocks requires you to check Password and Method. Other protocols may show different authentication or transport settings. There is no universal set of default values for these fields. Do not reuse a password, encryption method, or transport option from one protocol for another.

Enter the address specified in your server details in Host and use the matching port in Port. When copying values, watch for spaces, line breaks, and full-width punctuation at either end. Preserve the capitalization and special characters in passwords. If the details specify TLS, a server name, or additional transport parameters, check the corresponding options too. Do not assume setup is complete after entering only an address and port. If you cannot confirm a field, check with the source of your server details instead of switching options at random.

If you have a QR code for import, use Scan QR Code. Use Import from Cloud JSON only when your details specifically provide a compatible Cloud JSON file. After saving, return to Home, select a server under SERVER, and confirm that the selection indicator is on that entry. Seeing a subscription group does not mean a server has been selected. The entry only confirms that it was added; next, choose the Global Routing mode for the connection.

Official Shadowrocket Add Server screenshot showing Type, Host, Port, Password, Method, and import options at the bottom
Add Server: choose Type first, then enter the fields using the server details you have.

02 / Global Routing · Config

Choose a routing mode and rule configuration

The server determines the connection route; Global Routing determines how requests are handled. Importing a subscription does not mean a suitable rule configuration has also been imported.

Return to Home and tap Global Routing to see the current selection. The three modes are Config, Proxy, and Direct. Config applies actions based on the rules in the active configuration file. Proxy sends applicable requests through the selected proxy route, which is useful for testing a server. Direct sends requests over the current network. These modes change how requests are handled; they do not supply missing server authentication or fix an unreachable server address.

For an initial test, choose Config if you already have a configuration file you have checked, then confirm which Config is active. If you have not confirmed that the rules are correct, you can temporarily use Proxy to test an existing server, then switch back to Config to check traffic routing. Direct is useful as a comparison with your basic network. A successful request over Direct only shows that the request works on the direct route; it does not confirm that the proxy server is working.

Check Config before changing all your rules

Open Config to see the active configuration file. On its editing screen, you can identify sections such as General, Rule, Hosts, URL Rewrite, and HTTPS Decryption. When getting started, focus on Rule and the active configuration rather than enabling every option. A subscription generally maintains server entries, while Config describes how connections are handled. Check them separately, even if both came from information you already had. Seeing a server under SERVER does not mean Rule has been configured.

Rules are generally matched from top to bottom, and the first matching rule determines the action. PROXY sends a request to a proxy policy, DIRECT connects directly, and REJECT blocks the request. The following is a syntax example, not a complete configuration for everyone, and it does not include a usable server. The policy referenced by PROXY must also be available in the active configuration. Copying a few lines does not create a proxy route automatically.

  • DOMAIN-SUFFIX,example.comPROXY
  • GEOIP,CNDIRECT
  • DOMAIN-KEYWORD,adsREJECT

Before using Add Rule, export or keep a copy of the current Config. Change one item at a time and note why you changed it. Do not change Rule, Hosts, and HTTPS Decryption all at once before verifying the connection; if something fails, it will be difficult to identify the cause. See the glossary for the matching scope of DOMAIN-SUFFIX, GEOIP, and other keywords. After confirming the mode and configuration, return to Home to make the first connection.

Official Shadowrocket Config screenshot showing General, Rule, Hosts, URL Rewrite, HTTPS Decryption, and Add Rule
Config: check Rule and the selected configuration first, then decide whether to use Add Rule.

03 / Home · Not Connected

Turn on the connection and approve the system prompt

Check the server and Global Routing again before connecting. The switch status and server availability must be tested separately.

Return to Home and confirm that the selected entry under SERVER is the server you want to test. Check that Global Routing is still set to the mode chosen in the previous step. Once confirmed, turn on the connection switch beside Not Connected at the top. When establishing a connection for the first time, the system may prompt you to add a VPN configuration. Read and approve the prompt, complete the system verification required by your device, then return to Shadowrocket. Do not repeatedly tap the switch before system approval is complete; that can make a pending authorization seem like a connection failure.

The system VPN configuration routes traffic within the app's handling scope through the client. Allowing the configuration does not mean server authentication has succeeded. After returning to Home, check whether the connection status at the top has changed and the switch remains on. If it turns off immediately, note the prompt and first check that the system configuration was added, whether the device has management restrictions, and whether another VPN connection is controlling the network. Do not delete all network settings on the device just to retry.

If the status stays connected, do not change any more settings yet. Keep the server, routing mode, and network conditions unchanged and continue to the next step. You can note the selected server name and Global Routing mode for comparison later, but do not record a password or complete subscription link. A switch that stays on only indicates that the client connection is established. Confirm remote response, page availability, and rule matching with actual requests.

Official Shadowrocket Home screenshot showing the Not Connected switch, Global Routing, Connectivity Test, and SERVER group
Home: check the server, Global Routing, top switch, and Connectivity Test in order.

04 / Connectivity Test · Data

Check test results and actual requests

Verify three things separately: the client stays connected, the server route responds, and the target request uses the expected action.

Tap Connectivity Test on Home and wait for the current test to finish. The result indicates connectivity for a specific test method and target; it does not mean every website or app will be accessible. A single timeout does not prove that a server is permanently unavailable. Keep the current conditions and test again to see whether the result is consistent. If you use a different Test Method, treat it as a separate test and do not compare its displayed values directly with those from another method.

Next, open a browser, visit a page you expect to be accessible, and refresh it. Use a new request where possible so you do not mistake locally cached content for a successful connection. Then return to the client and check the available connection records in Data. Use the request time and destination domain to find the page request. If the records show a matched rule or policy, check that it matches your configuration: does a request expected to go direct use DIRECT, does a request expected to use a proxy go to PROXY, or did REJECT match first?

If a page works under Proxy but fails under Config, first check Rule order, policy references, and domain resolution. You do not need to reimport the subscription immediately. If both modes fail, continue checking the server and network route. If only some page resources fail to load, check the separate domains used by those resources; reaching the main page and reaching every resource are not the same result.

An increase in traffic values in Data only indicates that requests were recorded or processed. On its own, it does not prove that a specific request used the correct route. After testing, keep the configuration you have confirmed works, then gradually restore the mode you need for daily use. If you need automatic connections, review the On Demand conditions afterward. Verifying a manual connection first helps separate trigger issues from server issues.

05 / Settings · Diagnostics

Troubleshoot based on where the issue occurs

Change one variable at a time. Keeping the error message and reproduction conditions is more useful than repeatedly deleting all settings.

No servers appear after import

Turn off the connection first and confirm that the basic network can access a regular page. Then check whether the existing subscription URL is complete, has expired, or contains spaces. A failed subscription update and a failed server connection happen at different stages: in the first case, no entries have been retrieved; in the second, entries exist but no usable route can be established. Do not adjust Global Routing before any server entries are available. If the existing details need to be reissued or access restored, check with their original source. Do not send a complete subscription to strangers.

Entries appear, but tests keep timing out

Open the entry's edit screen and check Type, Host, Port, and authentication fields against the original server details. Then check the required Method, TLS, or transport parameters for the protocol. Confirm that the device system time is accurate; a significant discrepancy may affect secure connections. If possible, test the same entry separately over Wi-Fi and cellular data. Change only the network, not the protocol, between tests. If only one network fails, investigate that network route first. If all networks fail, focus on the settings and remote availability.

The switch is on, but the destination is unreachable

Check Global Routing again. If Direct is selected by mistake, requests that need a proxy will not switch to the proxy route just because the connection switch is on. If you use Config, check whether an earlier REJECT rule matched or the request was assigned to an unavailable policy. You can temporarily switch to Proxy for comparison, then return to the previous mode. Do not hide the issue by disabling all rules, and do not treat one inaccessible destination as proof that the entire client is not working.

Keep troubleshooting details in Settings

Open Settings and first check whether Test Method suits the current test. If you need more information, review the diagnostic details in Diagnostics. On Demand, Proxy, TCP, and UDP affect different parts of the connection process, so avoid changing them all at once when troubleshooting for the first time. If connections turn on automatically and repeatedly, check the existing On Demand conditions. If only a specific type of traffic fails, investigate the corresponding setting instead of resetting everything.

When keeping notes, record where the issue occurred, the routing mode, the network used, the original message, and the comparisons already tried. Before sharing diagnostic screenshots, hide subscription addresses, passwords, authentication details, and personal connection information. See Frequently Asked Questions for more specific issues. For store regions, purchases, and restoring a previous purchase, see the App Store guide. Once troubleshooting is complete, restore the configuration you have verified and stop adding unnecessary changes.

Official Shadowrocket Settings screenshot showing Language, Test Method, On Demand, Diagnostics, Proxy, TCP, and UDP
Settings: check Test Method first, use Diagnostics as needed, and test setting changes one at a time.