Shadowrocket Battery Drain: Background Connections vs. On Demand

Learn why Shadowrocket may account for a larger share of battery use, how always-on connections differ from On Demand, and which settings to check on your iPhone or iPad.

At a glance

A high percentage for Shadowrocket in battery usage does not mean it used the same percentage of your device’s total charge. Before deciding whether to keep a connection active or configure On Demand, distinguish traffic processing, background connections, and repeated retries. This guide is for iPhone and iPad users troubleshooting standby battery drain while using their own provider and subscription. Follow the steps to compare usage and decide whether On Demand suits your network.

1. Check battery changes before app percentages

In Settings → Battery, select the same reporting period and review the battery level graph, screen activity, and Shadowrocket activity. The percentage in the app list is the app’s share of battery usage during that period—not the percentage of your entire battery it used. When overall battery use is low, an app that continually handles network traffic may still show a high share.

For example, if your battery drops from 80% to 70% and Shadowrocket shows 30% in the app list, that does not mean it used 30 percentage points of battery by itself. The Battery screen shows the system’s estimated allocation, so those two figures should not be used to calculate the app’s exact energy use. More useful questions are whether your device keeps losing charge faster under similar conditions, and whether that coincides with heat or failed connections.

1 route
Settings → Battery: select the same reporting period
2 records
Overall battery change + Shadowrocket activity
3 conditions
Keep screen use, network conditions, and actual traffic similar

The numbers below illustrate a logging method; they are not measured results or a battery-life estimate. If you’re syncing photos, streaming video, or downloading a large file during one period, note that activity separately. Don’t compare it directly with an idle period that involved almost no traffic.

2. What uses power when a connection stays active

When Shadowrocket is not in the foreground, iOS can continue running its connected VPN network extension. The extension processes traffic routed through the tunnel according to your configuration, including background requests from other apps. Leaving Shadowrocket’s main screen does not stop the network extension, so swiping the app away is not a reliable way to tell whether the connection has stopped.

Shadowsocks, VMess, VLESS, Trojan, Hysteria2, and WireGuard use different transport and connection mechanisms, but their names alone do not establish a fixed battery-use ranking. Within the options your provider supports, compare actual network quality, connection success, and retries. Don’t remove parameters your provider requires just to save battery.

3. Always-on connections vs. On Demand

Keeping a connection active makes the network extension continuously available. With On Demand, the system decides whether to connect based on rules and network events. It does not mean the connection starts only when you open Shadowrocket, nor does it guarantee that it disconnects when your screen locks. Requests from other apps may also trigger a connection when the rules allow it.

Setting or mode What it does What to check when troubleshooting battery drain
Keep connected Keeps the current VPN connection available Check for continuous traffic, keepalives, or repeated reconnections
On Demand Starts a connection based on system rules and network conditions Check whether broad rules are triggering connections frequently or continuously
Global Routing → Config Applies routing policies according to the current Config rules Check which rules actually match, not just the mode name
Global Routing → Proxy Routes traffic using a global proxy mode May increase the amount of traffic handled through the proxy
Global Routing → Direct Uses a global direct-connection mode Does not mean the VPN network extension is off
Global Routing → Scene Selects routing behavior based on configured scenes Check the scene conditions and what actually takes effect

Bottom line: distinguish connection triggers from traffic routing

To control when a connection starts, check On Demand. To control which policy handles requests, check Global Routing and Config. Changing Proxy to Direct does not disconnect the VPN or confirm that its background network extension has stopped.

4. Run a step-by-step On Demand comparison

Before testing, confirm that your current configuration works and save your existing settings. Change one variable at a time: compare connection behavior first, then consider routing or protocol settings. If you also change networks, remote servers, and rules, you won’t know which change affected battery use—even if it improves.

  1. Record a baseline

    In Settings → Battery, record the starting and ending charge, time, and screen activity. In Shadowrocket’s Home screen, note the connection status and Global Routing setting. Use a 60-minute observation window if helpful, and keep your usage similar throughout.

  2. Check the On Demand rules

    In Shadowrocket, go to Settings → On Demand and check whether the feature is enabled and what conditions are configured. Available options may vary in the current interface. Record the existing settings first; don’t replace them with rules from an unknown source.

  3. Check the system status

    Go to Settings → General → VPN & Device Management → VPN and check the Shadowrocket configuration and connection status. If iOS shows an “On Demand” switch, record its state too. Its location may vary slightly across system versions.

  4. Verify what triggers a connection

    Return to Home and check the connection, then make one ordinary request. Record what happens when you lock and unlock the screen and switch Wi-Fi networks. If the connection returns immediately after disconnecting, check the On Demand conditions and background requests before concluding that the connection switch is not working.

  5. Compare one variable at a time

    Record the current state, turn off On Demand, then disconnect from Home and confirm that the system VPN status changes. Compare observation windows of the same length and with similar activity. When you’re done, restore the connection you need to avoid disrupting later network access.

A short test can help identify obvious issues, but it cannot predict all-day battery life. Repeat the test if signal strength, screen time, or background syncing differed significantly between sessions. If some requests fail and traffic naturally drops after disconnecting, don’t describe that result as improved client efficiency.

5. If connections keep dropping and reconnecting, find out why

If battery drain is accompanied by slow or unreliable access, check connection stability first. A single failed log entry is not necessarily a problem. Repeated failures to the same destination in a short period, especially alongside retries or changing connection states, are more useful clues. The messages below are examples of possible low-level errors; not every connection displays the same text.

Error: Operation timed out

Cause: The connection did not complete before the timeout. Possible causes include packet loss, an unreachable destination, or a delayed response from the remote server.

What to do: Retry once on a stable network, then ask your provider to confirm the current address and port. Repeated speed tests won’t identify the cause.

Error: Connection refused

Cause: The destination is reachable, but it refused the connection. The port may not be listening, the service may have changed state, or an access policy may be blocking the connection.

What to do: Check the server and port in your existing configuration, then correct them using valid details from your provider. Don’t guess or cycle through ports.

If your provider confirms that the configuration has changed, update the existing Subscribe item from Home, then check which configuration is selected. Updating a subscription retrieves the latest configuration; it is not a universal fix for connection errors. Don’t update it repeatedly to troubleshoot battery drain.

6. Choose settings for how you use Shadowrocket

If you need the same connection throughout your workday, keeping it active may be easier to troubleshoot than switching it repeatedly. If you need a connection only under specific network conditions, consider On Demand and verify that its conditions actually limit when it connects. A rule that connects on every network may not reduce connection time.

Usage pattern Check first How to evaluate it
Long periods of continuous use Connection stability, Global Routing, and actual traffic Fixing repeated failures is more targeted than repeatedly toggling the connection
Connection needed only under specific conditions Conditions under Settings → On Demand Does it stay connected outside those conditions, and does it connect when they apply?
Noticeable overnight standby drain Background syncing, signal conditions, and On Demand triggers Can you reproduce the overall battery change in similar standby periods?
Reconnects immediately after disconnecting On Demand status in the app and system settings Turn off On Demand first, then verify what happens when you disconnect manually

In Config, DOMAIN-SUFFIX matches domain suffixes, IP-CIDR matches address ranges, and GEOIP matches the geographic location associated with an IP address. FINAL handles requests that did not match earlier rules. Rule order and target policies determine the actual route; having rules configured does not mean every request connects directly. Don’t change FINAL or requests that need a proxy to DIRECT just to lower Shadowrocket’s share in the battery list.

Bottom line: look for repeatable battery changes

Keep settings that meet your access needs, provide a stable connection, and produce consistent comparison results. If only Shadowrocket’s share rises while standby drain, device temperature, and access remain much the same, there’s no need to keep changing your configuration just to lower that percentage.

Verify Shadowrocket on the App Store