Read Shadowrocket’s English interface in three layers: navigation, routing, and results. Home is where you choose a connection and check its status; Config manages configuration files; Settings controls app behavior. Proxy and Direct are routing choices, not protocol names, while Data displays traffic information. This guide is for new users who already have their own provider and subscription and need help following tutorials. It explains why Config can mean different things in different parts of the app.
Start with the location: Home, Config, Data and Settings
Check where a label appears before deciding what it means. Config in the navigation opens configuration-file management; Config under Home → Global Routing means routing requests according to a configuration. The label is the same, but one answers “Which file?” and the other “How should requests be routed?”
| Label | Location and purpose | What to check |
|---|---|---|
| Home | Main screen for the connection toggle, server list and entry points such as Global Routing | Selected item, connection status and routing mode |
| Config | Entry point for configuration-file management; Config may also appear as a Global Routing option | Distinguish the configuration-file page from the routing option |
| Proxy | A routing option in Global Routing; may also appear as a policy name in rules | Whether the selected proxy or corresponding policy is being used |
| Direct | A routing option in Global Routing; often written as DIRECT in rule examples | Whether the destination connection is made directly |
| Data | Entry point or section for traffic data | What is being counted, the time range, units and changes in the totals |
| Settings | App settings, including behavior such as On Demand | Changes app behavior, not server protocol parameters |
Navigation layout and visible items may vary with the device layout and app interface. Don’t rely on exact coordinates from a tutorial screenshot. Look for the English label and its location in the app. On iPad, use the same functional relationships when navigating a split view; the two columns do not represent a different routing mechanism.
Home: the connection toggle, servers and subscriptions are different things
The server selected in Home determines which set of parameters the connection uses. The connection toggle controls whether the system network connection required by the app is established. Global Routing determines how requests are routed. Selecting an entry does not mean you are connected, and a normal connection status does not guarantee access to every destination. The address, port, authentication parameters, rules and destination service availability can all affect the result.
A subscription is a source for retrieving or updating server entries in bulk; it is not a transport protocol. The steps below apply only to links from a provider you already use. A link may contain an access token or other credentials, so don’t post the full link in public discussions or replace it with an address from an unknown source while troubleshooting.
-
Check Home
Open Home and note the selected server and the value shown under Global Routing. Check the current state before making changes, and avoid changing several variables at once.
-
Add a subscription
Go to Home → “+” in the top-right corner → Type → Subscribe. Enter your own subscription link and save it. Enter subscription links and individual server addresses in their respective fields.
-
Check the entries
Return to Home and confirm that the subscription and its server list appear. To refresh it, use the update action for that subscription and check for errors. Don’t rely only on whether the list name is still visible.
-
Check routing
Go to Home → Global Routing and check whether Config, Proxy, Direct or Scene is selected. If you need to verify routing against configuration rules, first make sure the expected file is selected on the Config page.
-
Test a request
Return to Home, select the server you want to use and turn on the connection. On the first connection, follow the system prompt to authorize it. Test with a specific destination and change only one setting at a time.
Global Routing:Proxy、Direct、Config、Scene
Global Routing is where you choose a routing mode, not a protocol. The options below compare three common routing modes in Shadowrocket. “Recommended” here refers only to the rule-learning scenario in this guide: you already have a working configuration and want to understand how its rules apply. It does not mean the same setting is right for every network.
Config
RecommendedRequests are handled according to the active configuration and its rules. Different destinations can use different policies. Requests that don’t match earlier rules are still handled by the remaining rules in the configuration; don’t assume everything else goes direct.
Use when: You have a configuration and want to verify rule-based routing.
Proxy
Routes requests handled by Shadowrocket through a proxy. Use this temporarily to compare the proxy route with the rule-based route. This does not mean every system activity on the device passes through the same server.
Use when: You want to check temporarily whether different results are related to rule selection.
Direct
Uses a direct connection for the relevant requests, without forwarding them through the selected proxy server. This is a routing mode; it does not turn off the connection or remove server entries.
Use when: You want to compare results with direct access on the current network.
Scene is an entry point for scene-based routing. Check the existing scenes, their conditions and their actions; the name alone doesn’t tell you whether a request will use Proxy or Direct. If you’re working with an existing configuration, inspect the scene before using it. For repeatable rule troubleshooting, record the specific routing choice so a change in scene settings isn’t mistaken for an unstable server.
- If a destination works after switching from Config to Proxy, that only shows that the two routing paths produce different results. Check which rule matched and which policy was actually used.
- If the result is unchanged after switching to Direct, that does not prove the configuration is fine. Make sure you tested the same destination with the same type of request.
- Restore the original settings after comparing results. In particular, don’t leave Proxy enabled for temporary troubleshooting and then judge traffic as if Config rules were still in effect.
Config: how configuration files relate to rule keywords
Selecting a file on the Config page determines which configuration the app uses. Selecting Config under Global Routing determines whether requests are handled according to that configuration. A configuration file can include rules and other settings; server entries contain the parameters needed to connect to remote servers. They are related, but they are not the same data, and updating a subscription does not necessarily update every rule.
The following rule snippet is for reading purposes, not a complete configuration. The example domain and address illustrate syntax only and do not point to a service for use. Rules are evaluated in order, so put FINAL after any rules that need to be checked first.
[Rule]
DOMAIN-SUFFIX,example.com,PROXY
IP-CIDR,192.0.2.0/24,DIRECT,no-resolve
GEOIP,CN,DIRECT
FINAL,PROXY
DOMAIN-SUFFIX: matches a domain suffix. This example coversexample.comand its subdomains; it does not match keywords in webpage content.IP-CIDR: matches an IP range.192.0.2.0/24is a documentation example range;no-resolvemeans no additional domain resolution is performed for this rule.GEOIP: matches based on the geographic database result for the destination IP. It does not match based on webpage language or account region. Database results and a site’s actual service region are not the same thing.FINAL: handles requests that did not match any earlier rule. This example usesPROXY, so unmatched requests will not automatically useDIRECT.
Note the difference between Direct in the interface and DIRECT in a rule. Keep the original wording when following a tutorial, and preserve rule keywords and comma-separated syntax when editing rules. Don’t replace policy names in rules with explanatory text. If you use a custom policy group, make sure its name matches the actual definition.
Data and Settings: separate results from behavior
Data helps you understand traffic; it does not select a protocol. An increase in upload or download counts shows a change in the traffic for the statistic being displayed, but it doesn’t prove which rule handled a particular webpage request. Nor should app traffic totals be treated as the provider’s plan usage. Check the displayed measurement range and units before drawing conclusions.
How to troubleshoot: observe first, then make changes
Data: observe results
- Check which counter is displayed and what range it covers.
- Record the values before and after a test; don’t mistake a historical total for traffic from the current request.
- Use connection status and request logs as context. An increase in the count alone does not prove that access succeeded.
Settings: change behavior
- Go to Settings → On Demand and check whether on-demand connections and related conditions are enabled.
- Record the original settings before making changes, and change only one thing at a time.
- Return to Home to check connection status and Global Routing. Don’t use the settings page as a substitute for verifying the result.
Data helps you observe traffic; Settings changes app behavior. Neither replaces checking the active server and Config.
On Demand and Global Routing serve different purposes: the former can trigger a connection under specified conditions, while the latter determines how requests are routed once a connection is established. Enabling On Demand does not automatically turn on the right rules or guarantee lower battery use. To investigate battery drain, consider system battery records, usage periods and connection activity rather than drawing conclusions from the toggle’s name alone.
Type and Subscribe: enter protocol parameters in the right place
When adding an entry, Type specifies its type. Shadowsocks, VMess, VLESS, Trojan, Hysteria2 and WireGuard are names of different protocols or tunnel types; Subscribe specifies a subscription source. Don’t enter one protocol’s parameters under a different type just to make the screens look alike, and don’t paste a whole subscription link into a server address field.
| Location | What to check | Common misconception |
|---|---|---|
| Type → Subscribe | Your own full subscription link and the usage instructions from your provider | Treating a subscription as a specific encryption protocol |
| Individual protocol entry | Address, port, and the authentication, transport and security parameters for that protocol | Assuming every protocol needs only an address and password |
| Port field | The exact number provided by your provider; for example, if they specify 443, check that the field is set to 443 | Changing it to a commonly used port just because the connection failed |
| Home → Global Routing | Selecting a routing mode such as Proxy, Direct, Config or Scene | Looking here for the VMess or Trojan parameter editor |
443 is only an example port number. It does not mean a particular protocol must use it, or that entering 443 automatically enables the right security settings. If an entry was created from a subscription, check the original information after updating. If you edit it manually, note that the next subscription update may overwrite your changes.
Common questions: check each English label and its location
Why does Config appear in two places?
Open the Config page first and confirm which configuration file is active. Then return to Home → Global Routing and check whether Config is selected. The first location manages files; the second determines whether requests are handled according to a configuration. Seeing a file in the list does not prove it is being used for current routing.
If I select Proxy, do I still need to select a server?
Yes. Check the selected server and connection status in Home. Proxy specifies proxy routing; it doesn’t fill in the address, port or authentication parameters for you. Check the server first, then compare routing modes.
Why won’t a webpage load even though the Data count is increasing?
The change could come from other requests or failed retries. Record the count before testing, open one destination by itself, then check the request log, server status and current Global Routing setting. Don’t assume a webpage request succeeded just because the total increased.
The connection comes back after I turn it off. What should I check?
Go to Settings → On Demand and check for settings that could trigger the connection again. Record the original state before changing anything, then test again and check the related system connection settings. Repeatedly deleting subscriptions is not a way to troubleshoot connection triggers.
Does updating a subscription also update the rules?
Treat these as separate updates. First check the subscription entries in Home, then check the active file and its contents in Config. Whether a configuration has a separate update depends on its source and available update actions; a change in the server list alone does not tell you.
When following a tutorial, record these four things in order: the current page, the selected server, the value under Global Routing and the active Config file. This helps distinguish “I can’t find the button” from “the settings didn’t produce the expected result.” For more interface terms, see the glossary. For your first setup, follow the Getting Started guide step by step.
Verify the App Store listing and get started
Shadowrocket is a paid client for Apple platforms, available only on the App Store. Before purchasing, check the developer name, Shadow Launch Technology Limited, and app ID 932747118. Refer to the App Store listing for system requirements. A one-time client purchase is not a service plan; the information required to use the connection features comes from a provider you already use.