Shadowrocket Battery Drain in the Background: Should You Enable On Demand?

Learn what can cause background battery drain in Shadowrocket, compare On Demand with manual connections, and check battery usage and connection triggers.

At a glance

On Demand controls when a connection is established automatically. It is not a battery-saving switch, and it does not mean all traffic goes through a proxy. If you need the connection to resume automatically after a network change, keep On Demand enabled and review its trigger conditions. If you only use it at set times, turn it off and connect manually. This guide is for anyone seeing higher background battery use, repeated reconnections, or ongoing activity while the screen is locked. Use battery records, connection status, and request logs to narrow down the cause.

Understand On Demand, the tunnel, and your traffic

When Shadowrocket is in the background, the system VPN tunnel may continue handling requests. Returning to the Home Screen, locking your device, or dismissing the app from the app switcher does not prove that the tunnel has stopped. To check whether it is still connected, open Shadowrocket and check Home, then confirm the VPN status in system settings.

On Demand controls connection triggers; Global Routing determines how traffic is handled. When On Demand is enabled, the system may try to connect when the current On Demand rules match. It is not a timer that runs only for a moment when traffic is detected, nor does it guarantee disconnection when idle. Whether the connection stays active or reconnects depends on your rules and network conditions.

Network conditions match System establishes tunnel App sends request Routing handles request Connection transfers data

Battery use may come from processing data in the tunnel, encryption, DNS lookups, failed retries, background apps making requests, or the wireless network itself. Even without a web page open, background activity such as photo syncing or email checks can generate network requests. So if the system attributes some activity to Shadowrocket, that alone does not prove On Demand is the cause.

Choose between automatic and manual connections based on how you use the app

Here, “always on” means you want the tunnel available and able to reconnect when its conditions are met; it is not a separate battery-saving mode in On Demand. Turning off On Demand cancels the corresponding automatic connection behavior, but do not assume that an existing tunnel will disconnect at the same time. To stop the connection, disconnect from Home and confirm its status.

Setup Best for What to check
Enable On Demand You need the connection to start or resume automatically when conditions match. Check for repeated reconnections when switching between Wi-Fi and cellular.
Turn off On Demand and connect manually You only use the connection during specific work hours or tasks. Check that you disconnect when finished and remember to reconnect next time.
Enable On Demand with narrower conditions You only need automatic connections on certain networks. Check whether the available network types or matching conditions also include networks where you do not want to connect.

An automatic connection does not necessarily use more battery than a manual one. If both keep the same tunnel active and handle the same requests, the switch alone cannot explain a difference in battery use. Compare the total connection time, the number of automatic reconnections, and whether the tunnel is active during idle periods when you do not need it.

Bottom line: decide when you need a connection first

If you only need a connection for one set task each day, start with a manual connection as your baseline. If the connection must resume automatically, keep On Demand enabled and check its trigger conditions and the reasons for reconnections before changing protocols.

Use the system battery screen to collect comparable data

On your iPhone or iPad, open Settings → Battery and review the available time range, battery graph, and app activity. The time ranges and labels may vary by system version, so use what your device shows. Select the same time period when comparing Shadowrocket with other apps; do not compare a full day of data with a short test.

  1. Record the conditions at the start and end. Note the start time, battery level, whether the device is charging, whether you are on Wi-Fi or cellular, and whether the signal is stable. Also record any activity that could significantly change the workload, such as using a hotspot, navigation, or a video call.
  2. Compare battery level with activity. Check whether battery loss is concentrated while the screen is in use or continues while it is locked. If the system shows background activity duration, record it too, but do not assume that this means the processor was under sustained heavy load.
  3. Check the connection status. Check Home at the start and end of the test and record whether the tunnel is connected. If you switch networks or disconnect manually during the test, note when so you can compare it with the battery graph.
  4. Repeat comparable tests. For example, use two 60-minute observation windows with the same network, similar screen time, and the same config, changing only On Demand or the connection method. The 60 minutes is a suggested test duration, not a battery-life claim.
2 checks
Cross-check Settings → Battery with Shadowrocket Home
1 setting
Change one setting per round and keep the other connection conditions the same
60 minutes
Example observation window: use the same duration for both tests; these are not measured results

The app percentage on the battery screen is an app’s share of battery use over the selected time range. It does not mean the app used that same percentage of the entire battery’s capacity. Shadowrocket’s share may rise when other apps are less active, even if the device is not actually losing power faster. Check the battery graph, the total battery drop, and the periods of activity together. Repeat the test to assess small differences; do not draw conclusions from a single reading.

Adjust Settings → On Demand in order

In Shadowrocket, open Settings → On Demand. First check whether it is enabled, then review the rules or network-matching conditions actually shown on the page. Options may vary by app interface and system environment. Do not look for a switch that is not there just to follow a guide, and do not enter a Wi-Fi network name from an example as if it applied to everyone.

  1. Start with a manual baseline. Turn off On Demand, return to Home, and disconnect manually. Once the status shows that you are disconnected, check whether battery drain remains similar during periods when you do not need a connection.
  2. Next, test a manual connection. Keep On Demand off, connect to your existing config manually from Home, and do your usual tasks. If battery use also rises noticeably, investigate request activity and network conditions instead of blaming automatic connections alone.
  3. Restore automatic triggers. If you need the connection to resume automatically, turn On Demand back on. If the page offers conditions for Wi-Fi, cellular, or network matching, keep only the ones you actually need. Test each relevant network after making changes.
  4. Verify disconnection and reconnection. Under controlled conditions, switch networks once and check whether Home reconnects as expected. When testing is complete, avoid repeatedly switching networks; each switch can trigger another connection attempt.

“It reconnects immediately after disconnecting” is a clue about trigger behavior, not proof of battery drain. If On Demand is still enabled and the current network continues to match its conditions, the system may reconnect. To observe a truly disconnected state, turn off On Demand first, then disconnect manually. Repeatedly tapping the connection switch on Home may just keep triggering new connection attempts.

If background activity continues, check requests and failed retries

If both manual and automatic connections show substantial background activity during the same tasks, check what the tunnel is handling. In the app’s available request history or log view, compare timestamps, destinations, and failure details with your observation window. Start by recording a few relevant entries; you do not need to leave detailed logging on for a long time, as logging itself adds processing and storage activity.

Error: Connection timed out

Cause: The connection did not complete within the allowed time. The issue may involve the current network, destination address, or connection parameters. A single timeout does not prove that On Demand is at fault.

What to do: Check whether timeouts occurred repeatedly during the same period. Retry once on a stable network with the existing config. If it still fails, ask your service provider to check the connection details you already have, and avoid repeated testing.

The error card above is only meant to help identify the exact message if it appears in your logs; not all failures use the same wording. If Home shows Not Connected, that is a connection status, not an explanation of what went wrong. Check the connection attempt time against the logs; do not treat the status text as a specific error.

Distinguish routing mode from protocol before choosing your final settings

Global Routing in Home and On Demand are separate settings. For Global Routing, check Proxy, Direct, Config, or Scene against the in-app guidance and your current config. Direct does not mean the system VPN tunnel is off. To compare connected and disconnected states while troubleshooting battery use, actually disconnect instead of switching to Direct.

When using Config, check the active file’s rules in Config. Rules such as DOMAIN-SUFFIX, GEOIP, and IP-CIDR are matched in config order, and the final FINAL rule sets the policy for requests that did not match earlier rules. The policy handling your traffic may affect its route, but the number of rules alone cannot predict battery life.

Bottom line: choose based on repeatable behavior, not a single percentage

If you only need a connection at set times, connect manually and disconnect when finished. If you need automatic reconnection, keep On Demand enabled and verify its matching conditions. Make a change your long-term setup only after the difference repeats under the same network and workload.

Download on the App Store