At a glance

For your first connection, check three things in order: the intended server is selected in SERVER, iOS allows the VPN connection, and both Connectivity Test and real-world access work. This guide is for users who have already imported their own subscription or server details into Shadowrocket. Follow the steps in Home, then distinguish server issues from routing rules and network problems. Don’t judge success by the switch or a single latency reading alone.

1. Before connecting: Check that SERVER contains an available entry

The Shadowrocket connection switch does not create a server automatically. Open Home and check whether the imported entries appear under SERVER. If the list is empty, import your existing details first. If you see a subscription group but no server entries, check whether the subscription updated successfully. The one-time app purchase does not include a proxy service. This site does not provide, sell, or recommend servers, subscriptions, or providers.

If you already have a subscription, tap “+” in the upper-right corner of Home, set Type to Subscribe, enter your subscription URL, and save. Then check the updated list. The URL may contain access credentials, so don’t post it in public comments or screenshots. A successful subscription update only confirms that configuration data was retrieved; you still need to verify the connection.

2. Select a default server in Home and connect

Tap a server row in SERVER to select it as the current default. Open the entry’s details or edit screen to review its settings—these actions serve different purposes. After selecting a server, confirm the selection indicator appears on the right row; don’t rely on where you last tapped. With a Config that uses policy groups, rules may route traffic through another server in a group. The selected default does not override every rule.

  1. Select an entry

    Go to Home → SERVER, tap the row for the server you want, and confirm the selection indicator appears next to it. If the list is long, check the group and name first to avoid choosing a similar entry.

  2. Check the routing mode

    Go to Home → Global Routing and check the current selection. Use Config for your existing rules. To temporarily isolate the effect of rules, switch to Proxy for a comparison test, then restore your original mode.

  3. Connect

    Return to Home and turn on the connection switch at the top. The first time you connect, iOS may ask to add a VPN configuration. Confirm the request is from Shadowrocket, allow it, and complete device authentication as prompted.

  4. Check the status

    Wait for the connection status on Home to update. If it still shows Not Connected, resolve the permission issue or error first. If it shows connected, continue with Connectivity Test and a real-world access check.

VPN permission lets the app process traffic through the system network extension; it does not verify the server itself. Even after granting permission, authentication failures, network issues, or mismatched settings can prevent access. Likewise, the system VPN indicator only reflects the system-level connection status. It does not guarantee that a particular site will follow the expected routing policy.

3. Global Routing: Separate test mode from your everyday mode

The connection switch controls whether a connection starts; Global Routing determines how traffic is handled. Note both settings while troubleshooting. The comparison below applies to traffic handled by the app. Check rules, policy groups, and the current configuration separately—an enabled switch does not mean every request goes through the selected default server.

Config

Recommended

Requests are matched against the current configuration’s rules and may use DIRECT, PROXY, REJECT, or a policy group. Requests that don’t match an earlier rule are typically handled by the FINAL rule; they don’t necessarily connect directly.

Best for: Everyday routing and your first rule checks when you already have a verified configuration.

Proxy

Uses a proxy routing mode to temporarily reduce the impact of rule-based routing during a test. Test the same destination again after switching and compare the result with Config. Don’t change servers at the same time.

Best for: Checking whether a server can handle requests or comparing rule-based routing.

Direct

Uses a direct connection. If the destination opens, that only shows it’s reachable directly on the current network; it doesn’t confirm that the selected server is working.

Best for: Establishing a direct-connection baseline and checking whether an issue appears only when proxying is enabled.

Scene

Uses the policy set for the configured scene. For a first troubleshooting pass, check the scene conditions and the behavior they trigger. If no scene is configured, use a clear Config or Proxy comparison instead.

Best for: Users who have configured scenes and want to verify condition-based switching.

For example, DOMAIN-SUFFIX,example.com,DIRECT in Config sends requests matching that domain suffix through DIRECT. Even with a default server selected, the selection indicator won’t route those requests through a proxy. Rules are matched in order; read GEOIP, IP-CIDR, FINAL, and other rules in the context of your current configuration. See the rule reference for syntax details.

4. Connectivity Test: Interpret results at three levels

After connecting, tap Connectivity Test in Home and wait for the result. It checks whether the test target is reachable; it is not a bandwidth test or a comprehensive check of every app, domain, and protocol feature. The result depends on the target, test method, and current network, so consider it alongside real-world access.

Level 1
Connection status: Is a VPN connection established by the system?
Level 2
Connectivity Test: Does the test target respond?
Level 3
Real-world access: Do the target request and routing behave as expected?

If the result shows a value in ms, it is the time taken for that test—not download speed. A lower value does not guarantee stable long-term transfers. A latency test for an entry in SERVER is also different from Connectivity Test in Home. A test value for one entry does not prove that all current traffic uses it, or that a real-world request has completed successfully.

Observed resultWhat you can concludeNext step
Connected; test respondsThe test target was reachable under the current conditionsOpen a page you need to access and check the actual request
Connected; test timed outThe test did not complete in time; the cause is not yet knownKeep the server unchanged and compare routing mode, network, and test target
Not connected; server entry shows a latency valueAn entry test and the system connection are separate resultsReturn to Home and check the switch, permissions, and any error
Test passes; a particular page failsThe test target is reachable, but the page has a separate issueCheck DNS, routing policy, and the error for that domain

After testing, open a page you need in a browser and refresh it; don’t rely on cached content. If the app’s request log shows that the request matched DIRECT, a working page does not prove that the proxy path works. If it matched PROXY or a policy group, check the policy actually used and its result. One successful test does not replace a full check.

5. Can’t connect? Check permissions, network, server, and rules in order

Change only one variable at a time and keep the test target the same. First determine whether the connection failed to start or whether it connected but access failed. Repeatedly deleting and reimporting all configurations can erase useful comparison data without identifying the cause.

  1. Check the connection status and permissions first. Return to Home and make sure the switch stays on. If iOS hasn’t allowed the VPN configuration, complete the authorization. If an error appears, note its exact wording; don’t treat a permission issue as a server timeout.
  2. Check your basic network connection. If you can, disconnect and confirm that the current Wi-Fi or cellular network can open ordinary webpages. If public Wi-Fi requires browser-based authentication, complete it before trying again in Home.
  3. Check the current server. Verify the selection indicator in SERVER, Address, Port, and protocol-specific authentication details. If you have a subscription, update it and check whether the entries changed. An update does not prove that every entry is usable.
  4. Compare routing modes. Keep the same server and network, switch from Config to Proxy temporarily, and repeat the same request. If only Config fails, check the rules, policy groups, and selected policy before changing protocols.
  5. Compare networks. Keep the same entry and routing mode, switch between Wi-Fi and cellular, and test again. If the problem occurs on only one network, it may be related to that network’s DNS, access restrictions, or transport conditions.
  6. Check automatic connection last. If the connection turns back on after you switch it off manually, go to Settings → On Demand and check which conditions are enabled. You can temporarily disable the relevant automatic connection setting while troubleshooting, then restore it afterward.

Compare two networks with the same server

Test on Wi-Fi
  • Complete any browser-based authentication required by the current network.
  • Record Global Routing, the test result, and the destination that failed.
  • Keep the server and authentication settings unchanged.
Test on cellular
  • Make sure the device allows the relevant app to use cellular data.
  • Repeat the test with the same routing mode and destination.
  • Record the connection status and real-world access result separately.

Switch only the network and leave the configuration unchanged to see whether the difference is network-related. If both networks fail, don’t assume they share the same cause.

If only a specific feature fails, distinguish ordinary web requests from other traffic types such as UDP. A webpage loading does not mean every type of traffic works. Check the protocol, server configuration, and whether the service supports the relevant traffic before adjusting the settings. Don’t treat Connectivity Test as a verdict on every feature.

6. After your first successful test: Restore everyday settings and keep a record

Your first connection is fully verified when the connection status is normal, Connectivity Test responds, and the destination you need works as expected. If you temporarily used Proxy, restore Config or your usual scene as needed, then check a frequently used page again. Previous test results don’t automatically reflect routing after you restore your settings.

Shadowrocket is a paid app for Apple platforms, primarily used on iPhone and iPad, and is available exclusively through the App Store. Check the App Store listing for system requirements. When getting the app, verify the developer, Shadow Launch Technology Limited, the official icon, and app ID 932747118. Connection setup and purchase verification are separate steps; complete both as needed.