September 17, 2026 · Troubleshooting · About 10 minutes

Shadowrocket Slow Speed: Troubleshoot Nodes, Routes, Protocols, and Your Local Network

Troubleshoot slow speeds layer by layer: check the node, route, protocol, local Wi-Fi, and cellular connection, with practical Shadowrocket settings to review.

At a glance

For users with their own service provider and subscription who can connect but experience slow access. First note the node and Global Routing selection in Home, then use a consistent test target to compare the node, route, protocol, and local network in turn. Change one variable at a time. Use time to first screen, sustained transfer, and error logs to narrow down the issue; don’t mistake latency for download speed.

1. Check the connection path and identify what “slow” means

Shadowrocket is a paid client for Apple platforms, primarily iPhone and iPad. The App Store is the only place to get it; verify the developer, Shadow Launch Technology Limited, and app ID 932747118 on the store page. The app is a one-time purchase. Check the App Store page for system requirements and Universal Purchase availability. Buying the client does not include a network service plan. This guide covers troubleshooting an existing connection; it does not provide, sell, or recommend nodes or subscriptions.

“Connected” means the tunnel is established; it doesn’t guarantee that a request to a particular destination uses the currently selected node. Home → Global Routing options—Proxy, Direct, Config, and Scene—affect the actual route: Proxy uses proxy routing, Direct connects directly, Config follows the active configuration, and Scene follows the configured scene. Note the current selection before troubleshooting. If you use Config, also note the enabled configuration file and relevant policy selections.

App request Local network Rule match Outbound connection Destination response

Record the symptoms separately rather than switching protocols right away. A long wait on the first load followed by steady transfers may point to DNS, connection setup, or the destination’s time to first byte. Transfers that keep slowing down warrant checks for route congestion, server load, and local wireless quality. If only one site is slow, first check which rule matched the request and whether the destination service is operating normally.

2. Node: low latency doesn’t mean high throughput

Connectivity or latency tests in Home can help identify unreachable nodes, but they don’t prove that bandwidth is sufficient. A short request completing quickly doesn’t mean the server’s outbound capacity, long-lived transfers, and route to the destination are all working well. A single timeout isn’t enough to conclude that a node has failed; test again under the same conditions.

3 tests
Repeat under the same conditions; record the median and variation
30 seconds
A suggested observation window for sustained transfers, not a speed guarantee
1 variable
Change only one test condition per round
  1. In Home, note the current node name, type, and connection status. If you use a policy group, check the available request records to confirm the actual outbound selected; don’t rely only on the selection indicator in Home.
  2. Keep the network, target file, and Global Routing selection unchanged. Test the current node three times, then repeat with another available node from a subscription you already have.
  3. Record latency, time to first screen, and sustained speed separately. Keep units consistent: 1 MB/s = 8 Mbps. If the interface shows different units, you can’t compare the numbers directly.
  4. If only one node consistently performs poorly, first verify its server address, port, and authentication details. For subscription-managed entries, check whether the subscription has been updated so temporary manual changes don’t remain in place indefinitely.

Takeaway: When latency is similar, compare sustained transfers to the same destination

If two existing nodes have similar latency but only one repeatedly stalls during all three transfer tests, prioritize documenting that node’s results. Don’t change DNS, rules, and protocol settings all at once.

3. Route: compare times and destinations to spot path differences

A node’s performance can vary at different times of day because of congestion between your access network and the server, server egress load, or rate limits at the destination. A region in a node’s name doesn’t reveal its actual route, and the speed of one website doesn’t represent the capacity of an entire route. The client can help document symptoms, but it can’t fix remote bandwidth or an ISP’s network path.

ComparisonWhat to recordNext step
Same node, same destination, different timesDoes performance consistently drop at a particular time?Test again at another time and share the time and results with your service provider
Same node, same network, different destinationsIs only one site or file source slow?Check which rule matched, then check whether the destination service is operating normally
Same destination, same network, different existing nodesDoes only one egress path stall for an extended period?Keep both normal and abnormal results for comparison, and check node status
Same node, same destination, different access networksIs performance noticeably different on Wi-Fi and cellular?Continue with checks of the local network and access path

For example, you might record: “The same destination stalled in three consecutive tests on Wi-Fi, but transferred steadily after switching to cellular.” This is a troubleshooting clue, not a conclusion about remote service quality. The Wi-Fi connection, router, broadband egress, and path to the server all changed, so further testing is needed to narrow down the cause. This is an example of how to record observations, not test data collected by this site.

4. Protocol: check transport conditions instead of changing settings blindly

A protocol isn’t a standalone speed boost. Shadowsocks, VMess, VLESS, Trojan, Hysteria2, and WireGuard have different connection requirements. Actual performance also depends on the server implementation, encryption overhead, underlying transport, congestion control, and network restrictions. If your service provider offers multiple protocols but the egress and route also change, you can’t attribute the entire speed difference to the protocol.

Protocol or transportConditions to checkTroubleshooting limits
ShadowsocksKeep the server, port, password, and encryption method consistent; UDP support depends on the server and configurationFix authentication or method errors first; repeated speed tests aren’t a substitute for checking the settings
VMess / VLESSMatch the user ID, transport type, TLS, and related transport parameters to the serverChanging only the protocol name while keeping incompatible fields won’t work
TrojanCheck the password, port, TLS server name, and certificate validation settingsA TLS failure is a handshake issue; don’t mask it by disabling validation
Hysteria2Based on QUIC and requires a working UDP path; check authentication and server requirementsNetwork restrictions on UDP may prevent connections; this protocol isn’t guaranteed to be faster than others
WireGuardCheck the UDP endpoint, key, address, and routing scopeEven if the handshake succeeds, check the destination route; don’t reuse an MTU from an unrelated configuration without a reason

If TLS is used, 443 is a common port, but it isn’t fixed for every node. Use the port provided by your own service provider. Hysteria2 bandwidth parameters don’t guarantee your device’s internet speed; setting them too high without care may worsen congestion. Keep the subscription-provided values unless the server documentation or test evidence calls for a change.

Log entry: connection refused

Cause and next steps: The destination endpoint or an intermediary actively refused the connection. First check the server address, port, and service status, then test again. Don’t treat this as ordinary insufficient bandwidth.

Log entry: i/o timeout

Cause and next steps: An operation didn’t complete within the allotted time. Use the surrounding log context to distinguish DNS, connection, or read stages, then compare the same node over a different access network.

These are examples of text that may appear in network error logs; an error won’t always display exactly the same wording. Keep the full context of the actual log, especially the stage where the failure occurred. The word “timeout” alone doesn’t tell you whether you need to change protocols.

5. Local network: check Wi-Fi, cellular, and DNS separately

Local network issues can affect subscription updates, node tests, and web access at the same time. Turning off cellular data while the device is still connected to Wi-Fi doesn’t switch the test to cellular. To compare networks, disconnect from Wi-Fi in system Settings → Wi-Fi and confirm the device is using cellular. Keep an eye on data usage from test files.

  1. Establish a local baseline: Keep the device in the same location and pause other high-bandwidth activity. Check whether the same destination, when directly accessible, is also slow. If it is, start by checking the router and broadband connection.
  2. Check for wireless interference: Retest closer to the router and, when possible, compare 2.4 GHz and 5 GHz. The frequency band doesn’t guarantee speed; distance, obstructions, and channel congestion all affect results.
  3. Switch access networks: Keep the node, mode, and destination the same, then repeat the test three times over cellular. If the difference is consistent, investigate the path from the access network to the server rather than immediately rebuilding the configuration.
  4. Distinguish DNS from transfer issues: If only the first visit to a domain takes a long time, check the active configuration’s [dns] settings in Config and review the resolution logs. If the connection is established but remains slow, changing DNS alone usually won’t fix throughput.
  5. Check automatic connections: In Settings → On Demand, note which conditions are enabled. If the connection is automatically triggered again during a test, check whether those conditions caused it. If you need to turn them off temporarily, record the original settings and restore them after testing.

Takeaway: Confirm the active access network before comparing configurations

Two tests aren’t comparable if the device switches automatically between Wi-Fi and cellular. First confirm which network the system is using, then decide whether to adjust Shadowrocket settings.

6. Rules and verification: confirm the request uses the expected egress

In Config mode, rules are generally matched in order. DOMAIN-SUFFIX matches domain suffixes, IP-CIDR matches address ranges, GEOIP matches against an IP geolocation database, and FINAL handles requests that didn’t match an earlier rule. DNS resolution, rule order, and policy group selection can all change the final route. Changing the selected node in Home won’t necessarily affect a request assigned to a different policy.

[Rule]
DOMAIN-SUFFIX,example.com,PROXY
IP-CIDR,192.168.0.0/16,DIRECT,no-resolve
GEOIP,CN,DIRECT
FINAL,PROXY

This snippet demonstrates rule syntax only; example.com is a sample domain and shouldn’t replace rules in your existing configuration. no-resolve prevents a DNS lookup from being triggered solely for that IP rule; it isn’t a general-purpose speed setting. Keep a copy of your current configuration, then check the matched rule and actual outbound for the problem destination. If switching briefly to Proxy changes the behavior, investigate the route in the original configuration further; that alone doesn’t prove the rule is incorrect.

Why does video keep buffering when latency is low?

Latency on a short request and sustained throughput are different metrics. Test the same video or file source three times on the same access network, then compare it with another node you already have. Also confirm that a rule hasn’t assigned the destination request to a different policy.

Switching to Proxy made it faster. Should I leave it that way?

First record the difference, then return to Config and check the rule and policy group matched by the destination. Proxy can be useful for a controlled comparison, but it changes routing for other requests too. Restore the original mode after testing, then adjust the configuration for the specific destination.

Can updating a subscription fix slow speeds?

An update may fix outdated entries only if the server address, port, or configuration has changed. In Home, update a subscription you already have and check whether the destination entry changed. A successful update doesn’t mean route congestion has been resolved.

All protocols are slow. Should I reset the app?

First compare Wi-Fi and cellular using the same node, and check a destination that’s accessible directly. Consider restoring the configuration only if you’ve identified a local configuration issue. Save the configuration and relevant records first so you don’t lose evidence needed to diagnose the problem.

Keep a minimal reproduction record before reporting an issue

The goal of layered troubleshooting isn’t to find a universal setting. It’s to determine whether the issue is with local access, the route to the server, server-side transport conditions, or the rules and destination response. Once the evidence points to a layer, make the smallest relevant change. For remote service issues, share redacted records with your own service provider for review.

Download Shadowrocket