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.
- Entry name: This identifies the server but does not guarantee that it works. Start with an entry whose source you can verify.
- Type: It should match your existing details, such as Shadowsocks, VMess, VLESS, Trojan, Hysteria2, or WireGuard. Don’t switch protocols arbitrarily while troubleshooting.
- Address and Port: These must match the configuration you were given. Port
443is one possible value, not a universal setting for every entry. - Authentication and transport settings: Check the password, UUID, TLS, Server Name, and other values against the relevant protocol and original configuration. Don’t guess based on the entry name.
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.
-
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.
-
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.
-
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.
-
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
RecommendedRequests 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.
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 result | What you can conclude | Next step |
|---|---|---|
| Connected; test responds | The test target was reachable under the current conditions | Open a page you need to access and check the actual request |
| Connected; test timed out | The test did not complete in time; the cause is not yet known | Keep the server unchanged and compare routing mode, network, and test target |
| Not connected; server entry shows a latency value | An entry test and the system connection are separate results | Return to Home and check the switch, permissions, and any error |
| Test passes; a particular page fails | The test target is reachable, but the page has a separate issue | Check 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- Record reproducible conditions: Note the server name, current network, Global Routing selection, test result, and the specific action that succeeded or failed. You can compare them one by one if something changes later.
- Protect sensitive details: Hide subscription URLs, passwords, UUIDs, and other credentials in screenshots or support requests. Exact error messages and steps taken are usually more useful for troubleshooting than full credentials.
- Recheck after an update: Updating an existing subscription may change server entries or settings. After updating, check the selected entry, test result, and real-world access—not just whether a new name appears in the list.
- Verify automatic connections separately: If you use On Demand, restore the conditions in Settings → On Demand and test what happens when the network changes. A successful manual connection does not mean every automatic trigger is configured correctly.
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.