Shadowrocket Settings and Features
First decide when the connection should start, then choose how requests should be handled. Check Global Routing, Config, On Demand, and Data in that order to assess the routing mode, rule matching, and results separately.
These steps focus on iPhone and iPad. App menus may change; refer to the labels shown in your current version. System requirements are as listed on the App Store page. For your first connection, see the getting started guide.
Global Routing: Config, Proxy, and Direct
Global Routing determines how requests are handled overall. It is neither a server protocol selector nor a master connection switch.
On Home, find Global Routing and choose Config, Proxy, or Direct. Before selecting a mode, check the server selected on Home and the active configuration in Config. Verify changes with new requests; existing connections may continue on their previous route, so refreshing a page once is not enough to confirm a setting has taken effect.
| Mode | How it works | When to use it | Notes |
|---|---|---|---|
| Config | Uses rules in the active configuration to determine how requests are handled. | For everyday routing based on domains, addresses, and other conditions. | Make sure the active Config is the same file you edited. |
| Proxy | Routes requests through the proxy as an overall mode. | Temporarily test the selected server’s connection. | This does not reselect the PROXY policy for every rule. |
| Direct | Connects directly. | Temporarily check access over the current network alone. | This does not disable the system’s connection configuration or turn off On Demand. |
Choose Config for everyday use
To apply different policies to different requests, choose Config and then check the rule order. Selecting a server on Home does not mean every request will use it: requests matching DIRECT connect directly, those matching REJECT are blocked, and those matching PROXY follow the applicable proxy policy. If a rule references a policy group, also check which option is currently selected in that group.
Use Proxy and Direct to narrow down an issue
If a destination behaves unexpectedly in Config, temporarily compare Proxy or Direct for that same destination to see whether the issue may involve the rule path. Change one mode at a time, record the result, then restore the original setting. This comparison can help isolate an issue, but it cannot by itself confirm that DNS, the server, or the destination service is working correctly. These are overall routing modes; check connection logs to understand how individual requests were handled.
Rule routing: match conditions and policies
The left side of a rule defines its match condition; the end specifies the policy to apply. Rule types and policies are different: PROXY is not a domain-matching method.
In Config, select the file currently in use and inspect its Rule section. Rules are generally evaluated from top to bottom, and the first match determines how a request is handled. Put narrow exceptions first, followed by broader rules, and place FINAL last as the fallback policy when no earlier condition matches. After editing and saving, make sure the file is active.
| Keyword | What it matches or means | What to check |
|---|---|---|
DOMAIN | An exact domain. | Enter the domain only, without a path. |
DOMAIN-SUFFIX | A specified domain and its subdomains. | Covers a broader scope than a single exact domain. |
DOMAIN-KEYWORD | A keyword contained in a domain. | Short keywords can match too broadly. |
IP-CIDR / IP-CIDR6 | An IPv4 or IPv6 address range. | The address range and subnet mask must use the required format. |
GEOIP | IP geolocation category. | A category does not necessarily reflect where the destination actually operates. |
USER-AGENT | Recognized User-Agent information. | Visibility depends on the request; do not rely on it as the sole criterion. |
FINAL | The fallback policy when no earlier rule matches. | Put it at the end of the rules to avoid overriding later entries. |
PROXY / DIRECT / REJECT | Proxy traffic / connect directly / reject the request. | A policy, not a match condition. |
Understand rule order with a minimal example
[Rule]
DOMAIN,account.example.com,DIRECT
DOMAIN-SUFFIX,example.com,PROXY
FINAL,DIRECT
This example illustrates syntax only. For account.example.com, the first rule matches and applies DIRECT. The second rule matches other domains under example.com; all remaining requests fall through to FINAL. If the second rule comes first, it will match earlier and override the exact-domain exception. This example is not a complete configuration for every network.
If traffic is routed unexpectedly, first check that Global Routing is set to Config, then inspect the matching rule and its policy. Don’t change DNS, servers, and rule order all at once before confirming which rule matched. For more on configuration structure, address ranges, and rule priority, see the configuration field reference.
Subscriptions and server management
Subscribe manages a set of server details that can be updated. Adding a server individually saves its connection settings field by field. Neither replaces rule configuration.
Subscribe: import an existing subscription
On Home, tap Add Server, choose Subscribe, and enter an existing subscription URL provided by your service provider in the appropriate field. Save it, update it, and check that the server entries appear before selecting one to use. Subscription URLs may contain access credentials. Treat them as sensitive information and don’t share the full URL in public screenshots or support requests.
A successful subscription update only means the contents were retrieved and processed; it does not mean every server in the list is usable. After updating, check that the selected entry is still there, whether its name changed, and whether its connection settings suit the original purpose. Subscription-managed entries may be recreated on the next update, so don’t rely on temporary manual edits as the only way to preserve settings. Keep your own configuration notes if needed.
Add Server: enter server details manually
To add a server manually, choose the correct protocol in Add Server, then enter its address, port, and authentication details. Shadowsocks, VMess, VLESS, Trojan, Hysteria2, and WireGuard use different fields; don’t enter one protocol’s settings into another protocol’s form. For TLS, transport, public key, and other fields, follow the server details you already have rather than guessing from the server name.
You can use the notes field to identify a server’s purpose, but the note does not change how requests are routed. After saving, select the server, run Connectivity Test, and verify access with an actual request. If the list contains similar entries, check the address and protocol—not just the name—to avoid choosing an outdated one.
What Connectivity Test and Test Method can tell you
Connectivity Test shows results under specific test conditions. The method is affected by settings such as Test Method; its result is not the response time for every destination or a measure of actual transfer speed. If a test succeeds but access fails, also check rules, DNS, authentication, and the destination. If a test fails, first make sure the test target and method suit the current network.
On Demand: connect based on network conditions
On Demand controls when a connection is triggered. Global Routing and Config control how requests are handled once the connection is established.
In Settings, open On Demand and review the listed triggers and exceptions before enabling or changing them for your use case. Available network conditions depend on the options shown in the app. For your first setup, start with a simple condition and test it, then add network exceptions one at a time. This makes it easier to identify which condition affects unexpected connection behavior.
For example, if you want a connection to start automatically on certain networks, first make sure a regular manual connection works. Then enable the relevant On Demand condition. Switch to a network that meets the condition and check the system and in-app connection status. On Demand won’t fix an unavailable server or supply a missing password, certificate, or rule.
If the connection starts again after you disconnect manually, check whether On Demand is still enabled and whether the current network meets its trigger conditions. To pause automatic connections, adjust On Demand first, then check the connection switch. Changing Global Routing to Direct does not disable automatic connection conditions.
Data: traffic statistics and reading checks
Data shows transfer amounts recorded by the app. It is not a service provider’s bill and cannot, on its own, tell you whether your rules are correct.
Open Data and check the displayed statistics category, accumulation period, and upload and download directions before tracking changes for a server. If the current screen offers per-app categories, switch categories to compare them. App identification and categorization depend on the system and request information, so don’t assume uncategorized traffic indicates an unusual connection. When comparing two actions, use the same category and observation period.
To see whether an action generates traffic to a destination, note the starting value, perform one specific action, wait for the display to refresh, and compare the increase. Background sync, media preloading, and activity from other apps also transfer data, so don’t attribute the entire increase to the page you just opened. Before resetting statistics, save any readings you need, use the reset option in the app, and check which data the confirmation prompt says will be cleared.
The app’s figures may differ from your service provider’s because of different measurement periods, connection overhead, units, or billing methods. Resetting the app’s statistics does not reset your provider’s usage, and a new billing period does not necessarily clear Data. Check your provider’s records for remaining allowance, and use the app’s connection logs to investigate traffic. For details, see the Data traffic statistics guide.
Settings: key options and what they affect
Settings is not the only place where options are defined. DNS and other settings may also be affected by the active Config, so check which configuration is in effect before making changes.
DNS: check resolution and the connection route together
DNS resolves domain names to addresses used for connections. Check DNS in the relevant Settings options and the active Config. First see whether the configuration specifies a resolver, then decide where to make a change. Don’t cycle through multiple DNS addresses just because one domain won’t open. Verify the server connection first, then check whether resolution succeeds and returns the expected result.
Use a resolver you have confirmed is reachable and suitable for your needs, and keep a record of the original value. The route used for DNS requests is not the same as the final connection policy; successful name resolution does not guarantee a successful connection. After making a change, test with a new request and reconnect if needed to avoid interference from cached results or existing connections. For parameter details, see the configuration fields.
Test Method: keep test conditions consistent
Test Method selects how server tests are run. Open the corresponding option in Settings and choose from the options currently shown. When comparing servers, use the same method and test target; results from different methods are not directly comparable. A test reflects performance under specific conditions, not a complete measure of connection quality.
If test results don’t match actual access, note the method, test target, and current Global Routing mode, then verify with a real request. Don’t keep changing conditions just to get a lower test value; doing so makes troubleshooting less reliable. Testing is only one diagnostic step—check authentication, rules, and DNS separately.
Today Widget: quick access
Today Widget provides quick actions or a status view. Check the related options in Settings, then use the system’s editing controls to add an available widget. Its appearance and availability depend on the current system and the options described in the app. After adding it, confirm that it points to the Config or server you’re using; the widget’s display alone doesn’t prove the destination is reachable.
If the status doesn’t update promptly after you start a connection from the widget, return to the app and check the actual state. On Demand may still reconnect when its conditions are met, so disconnecting once from the widget may not disable automatic connections. Use the app’s status and an actual request to verify network behavior.
iCloud: sync and separate backups
iCloud syncs data supported by the app when the account and system conditions allow it. Check the iCloud options and in-app guidance in Settings, and confirm that iCloud is available in system settings. Organize your current configuration before enabling sync, then check what appears on another device. Don’t assume every server, subscription, rule, and local statistic will sync in the same way.
Sync does not preserve version history. Deletions or unwanted changes may also propagate to other devices, so export important Config files separately and store them safely. Backup files need protection too if they contain subscription URLs or authentication details. When moving to another device, confirm that app access, sync, and configuration recovery are each complete before connecting; don’t overwrite an existing configuration without checking its contents.
Diagnostics: test one hypothesis at a time
Diagnostics helps collect or review information related to connection issues. Open the relevant option in Settings and use the tools currently available to check the network, name resolution, or connection. First write down the conditions needed to reproduce the issue, such as “same server, Config mode, request to one domain fails,” then run the relevant test. Changing the server, DNS, and rules all at once makes the results hard to compare.
If you need to save diagnostic results, keep only the parts relevant to the issue and check for subscription credentials, authentication details, browsing records, or personal addresses. When describing the issue to someone else, use domain names and field names to explain what happened; don’t share sensitive details in full. After troubleshooting, restore temporary changes and verify everyday access again.
Review changes in order
A fixed review order makes it easier to find the cause than changing several options at once. First confirm that the basic connection works, then check rules and automatic behavior.
- Check the input details. Confirm that the existing subscription updated successfully, or verify the manually entered server protocol, address, port, and authentication fields. Don’t use the note as a substitute for checking the settings.
- Check the mode and file. Review Global Routing on Home and confirm which file is active in Config. Editing a configuration file does not make it the active one.
- Make a new test request. Use Connectivity Test as a diagnostic, then verify the actual destination. Record the test method and result so existing connections don’t skew your assessment.
- Check the matching policy. Inspect the rule and final policy for the request, distinguishing DIRECT, PROXY, and REJECT. If only one domain is affected, start with its exact-match rules and DNS result.
- Check automation and statistics last. Once basic access works, verify the On Demand triggers, Data reporting period, and iCloud sync results.
To roll back, restore the original values for the changes you made instead of importing multiple configurations from unknown sources. Keeping a verified working Config and a brief change log can prevent repeated troubleshooting. For help with menus, first-time authorization, or restoring a purchase, continue with the official manual sections below.