Official Manual · Settings Reference
Shadowrocket Features and Settings
Choose how requests are routed first, then adjust connection, DNS, and diagnostics options.
This guide focuses on using Shadowrocket on iPhone and iPad. Each section explains what a feature does, where to find it, how to configure it, and what you can’t determine from a single toggle. The interface may vary by device and app version; refer to the options shown in your app.
Config, Proxy, Direct: Three Routing Modes
Global Routing determines how requests are handled when the connection is on. It is not a server list and does not fill in missing connection details.
Where to find it and how to set it: Open Global Routing from Home and choose Config, Proxy, or Direct. Then return and check the selected SERVER and connection toggle. Config, Proxy, and Direct are the names of the corresponding options. Config mode is related to the Config tab at the bottom, where files are managed, but the two are different entry points.
| Mode | How It Works | When to Use It | What to Check |
|---|---|---|---|
| Config · Configuration | Handles requests according to the rules and policies in the active configuration. | For everyday routing by website, domain, or address. | Make sure the configuration is active and the rule order and final policy are correct. |
| Proxy · Proxy | Routes requests handled by the client through the current proxy policy. | To temporarily check whether the selected server can handle a particular request. | Check that the server is working. A test result does not represent how every app will behave. |
| Direct · Direct | Handles intercepted requests through a direct connection. | To compare against your local network or temporarily test a direct route. | Selecting this mode does not turn off the system VPN connection. |
Suggested order: If you have a working configuration, start with Config. If a particular destination has an issue, temporarily switch to Proxy or Direct and compare using the same network and destination. Switch back when you finish testing so a temporary troubleshooting setting doesn’t become your everyday setup.
Note: Proxy cannot fix invalid credentials, an incorrect port, or an unreachable server. Direct also does not mean the client connection has stopped. To stop the connection, check the Home connection toggle and the system VPN status. Existing long-lived connections may continue using the previous route after a mode change. If needed, reconnect the target app before drawing conclusions.
Rule-Based Routing: Match Conditions and Policies
A rule answers, “Does this request match the condition?” A policy answers, “What happens when it matches?” Understanding both helps explain why a website uses PROXY or DIRECT.
Where to find it and how to set it: In Config, find the configuration you’re using and back it up before checking its rules through the editing controls. Return to Home and set Global Routing to Config. Importing a file into the Config list does not mean it is active; make sure it is selected and enabled.
DOMAIN matches an exact domain, DOMAIN-SUFFIX matches a domain suffix, and DOMAIN-KEYWORD checks for a keyword in the domain. IP-CIDR and IP-CIDR6 apply to address ranges, while GEOIP matches against a database of the region associated with an address. USER-AGENT depends on whether the relevant request information is visible; it should not be treated as a way to identify apps across all encrypted connections.
| Keyword | What It Matches | Setup Notes |
|---|---|---|
DOMAIN | Exact domain | Use when you want to match a specific hostname only. |
DOMAIN-SUFFIX | Domain suffix and its subdomains | Check the suffix scope to avoid matching more domains than intended. |
IP-CIDR | IPv4 address range | The destination’s resolved address and rule order can affect the result. |
FINAL | Requests not matched by any earlier rule | Place it last to define the fallback behavior. |
DIRECT means a direct connection, PROXY uses the corresponding proxy policy, and REJECT blocks matching requests. If you use a custom policy name, it must match a policy actually defined in the configuration. Rules are generally evaluated in order, so put specific conditions before broader ones. Moving a rule can change the outcome more directly than editing its contents.
[Rule]
DOMAIN-SUFFIX,example.com,PROXY
FINAL,DIRECT
This is a minimal rule example for illustration: example.com and its subdomains use PROXY; all other requests are handled by FINAL,DIRECT. It is not a complete configuration and contains no server details. After saving, make a new request to the target domain and check the connection log to see which rule matched. Don’t rely only on whether the page appears to load.
For a detailed example, see how to route selected websites through PROXY. Before editing a remote configuration, consider its update behavior: fetching it again may overwrite local changes.
Subscriptions and Server Management
Server entries store the parameters needed for a connection. Subscribe updates a group of existing entries, while Config manages rules and related settings. These features serve different purposes and aren’t interchangeable just because their names seem similar.
Before you begin: You’ll need your own subscription or server details. A one-time purchase of the client does not include a connectivity plan. Buying Shadowrocket grants a license to use the app; you still need to provide valid connection details. This guide covers importing, organizing, and using information you already have.
Where to find it and how to set it up: From Home, use the add option to open Add Server. To add a server manually, select the Type that matches your existing details, then enter the Address, Port, and required authentication fields. Shadowsocks, VMess, VLESS, and Trojan use different fields, so don’t change only the Type while reusing all the old values. Match additional settings, including transport, TLS, and server name, to your details as well.
To import a subscription, select Subscribe, enter your full subscription URL, and save it. Supported shared content can also be imported with Scan QR Code or from the clipboard. After importing, check the Type, address, and port; successful recognition doesn’t mean the connection will work. Subscription URLs may contain access credentials, so don’t share them in public screenshots or support requests.
If you have multiple subscriptions, use clear labels to distinguish them. After updating, check whether entries were added or removed and whether the currently selected one is still available. Entries from a subscription are generally maintained remotely, so manual edits may be overwritten the next time it updates. Before making changes you need to keep, confirm how to back up and save a separate copy.
Testing and organizing: Before running Connectivity Test, check the Test Method, then test the candidate servers. Latency reflects the response under that method and to that target; it does not measure throughput or guarantee that a particular website will work. After selecting a SERVER, try the actual request again. Before deleting an old entry, make sure it is no longer needed by your active configuration or usual workflow.
For step-by-step instructions on scanning, importing shared content, updating, and backing up, see the subscription and server management guide. If an import produces no entries, first check that the link is complete and the existing subscription is active. Avoid creating multiple copies of the same entry.
On-Demand Connections and Network Changes
On Demand triggers a connection; it does not determine the route a website takes. Once connected, requests are still controlled by Global Routing and the active configuration.
Where to find it and how to set it up: Find the On Demand settings in the app. Check whether they’re enabled and review any existing conditions before making changes. Menu locations and available conditions may vary by device; refer to what the app displays. Before enabling On Demand, verify in Home that the server and configuration work as expected when connected manually.
If the current interface supports conditions based on network type or Wi-Fi, start with one that’s easy to verify. After saving, check the system VPN status on the expected network. Then switch to another network and see whether the connection changes as configured. Adding several conditions at once makes it harder to tell which one triggered the connection.
Note: With On Demand enabled, disconnecting manually from Home may not prevent the connection from restarting when a condition is met again. To disable it temporarily, check the On Demand settings as well. It also doesn’t guarantee lower battery use: network quality, reconnect frequency, and ongoing requests all affect battery life. Assess the impact based on your usage over time.
Traffic Statistics and What They Show
Data shows changes in traffic recorded by the client. It can help you check for connection activity, but it is not a billing record for your network account.
Where to find it and how to use it: Open Data and check what is being measured, the direction of traffic, and the time range in the current view. Before tracking upload and download changes, note the starting values. If you need to clear the statistics, save any records you need first, then use the reset option shown in the app. Don’t clear the data midway through troubleshooting and compare the new values directly with the old ones.
For a controlled test, close unrelated foreground tasks, make one request to the same destination, then check Data. If the target app is refreshing in the background or media and sync tasks are still running, increased traffic may not be from the page you just opened. Traffic activity only shows that data is being transferred; by itself, it does not prove that a specific request matched the expected rule.
Note: The client, the system’s cellular usage statistics, and usage records from a service may measure different traffic, time periods, and totals. Differences can result from the route taken, protocol overhead, or whether direct requests are included. Use the relevant account records to check remaining usage. To troubleshoot routing, consider Data alongside the connection logs.
DNS, Testing, and Sync Settings
Settings affect different parts of the connection. Keep a known-working baseline, and don’t change DNS, the test method, and all connection parameters at once because a single destination has an issue.
DNS: Check How Domains Are Resolved
What it does and where to find it: DNS translates domain names into addresses used to connect. Related options may appear in both Settings and the active Config, so check both when troubleshooting. First confirm whether the configuration defines DNS behavior, then identify which setting is actually in effect before changing anything.
How to configure it: Note the current DNS settings, change one option to suit your network and configuration, reconnect, and test the same domain again. If an IP address works but the domain doesn’t, DNS is worth checking, but that alone doesn’t prove DNS is the only issue. TLS, the destination service, and rule matching can also affect the result.
Note: DNS results may also affect matching against address-based rules. After changing DNS settings, check the resolved address and the matching policy; successful resolution does not guarantee that the request will be routed as expected. Cached results and long-lived connections can make changes hard to see at first, so test with a new connection.
Test Method: Make Results Comparable
What it is and where to find it: Test Method controls how Connectivity Test runs. You can check it in Settings. Different methods may test different destinations or connection stages, so results for the same server can vary without contradicting each other.
How to configure it: Keep the test method consistent when comparing servers. If the current options let you specify a test target, keep that consistent too. Run repeated tests on the same network and consider how the server performs with actual website requests. Don’t conclude that all connections have failed based on a single timeout, or choose a server long-term based only on its lowest result.
Today Widget: Quick Actions and Status
What it is and where to find it: Today Widget is designed for the corresponding system widget area. Look in Settings for related preferences. Whether the widget can be added and which actions it can show depend on the device’s operating system and the app’s current support. After adding it, check that the displayed information is what you expect.
How to set it up and what to check: To use quick controls, add the widget through the system’s widget settings, then compare its status with Home. The widget may take time to refresh, so a single display does not confirm that a connection has been established. If an action doesn’t work, check the app first, then troubleshoot the widget display.
iCloud: Syncing Is Not a Substitute for Backups
What it is and where to find it: iCloud-related sync options save or sync app data when supported. First check that iCloud is available in the system and review the relevant options in the app. Then check the sync scope described in the current interface. Don’t assume all subscriptions, configurations, history, and authentication details will sync.
How to set it up and what to check: Before enabling sync for the first time or switching devices, keep a separate backup and verify each entry on the other device. If both devices edit the same content, watch for conflicts or overwrites. Subscriptions and configurations may contain sensitive connection details, so check the storage location and access permissions when backing up, syncing, or exporting.
Diagnostics Settings and Troubleshooting Steps
Diagnostics helps gather clues for troubleshooting. Effective diagnostics don’t mean leaving every log enabled; use a reproducible request to identify the specific point of failure.
Where to find it and how to set it up: Look for Diagnostics or related tools in Settings. Read the current tool instructions, then enable only the logging needed for this check. Note your network, Global Routing mode, selected SERVER, and configuration name. Reproduce the issue once to avoid mixing clues from multiple changes.
- Check the connection first. Confirm the Home connection toggle and system VPN status, then check whether the current network can complete a basic request.
- Then check the server. Verify the selected server and its existing authentication details, then run Connectivity Test using a consistent Test Method.
- Check DNS and rules. For the same destination, check DNS resolution, match conditions, and the final policy. If needed, temporarily switch modes for comparison.
- Finally, check the target app. Reconnect and test again. Treat changes in Data as supporting evidence, not proof of success.
Note: “The test received a response,” “the system shows connected,” and “the website opened” indicate different things; none proves the others. If only one website has an issue, focus on that domain and its rules first. If all requests fail, check shared factors such as the server, network, and configuration. Restore your original settings after testing and turn off any detailed diagnostic logging you no longer need.
Before sharing troubleshooting details, hide subscription URLs, passwords, authentication fields, and unnecessary access logs. Include only the symptoms and steps needed to understand the issue. For more scenario-specific answers, see Frequently Asked Questions. For the full process from importing to the first connection, see the user guide.