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.
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.
- 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.
- 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.
- 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.
- 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.
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.
- 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.
- 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.
- 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.
- 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.
- Repeated requests to the same destination at regular intervals: Check for app syncing, status checks, or failed retries. A high number of repeated requests over a short period is worth investigating, but request count alone cannot tell you how much battery they use.
- Repeated failures after a network change: Compare the timing of the failures with your Wi-Fi and cellular signal. An unstable network can cause new handshakes and retransmissions; first retest on a stable network.
- Connectivity Test is running repeatedly: Tests actively send probes and are useful for checking reachability, but should not be run continuously during a battery-life observation. Stop repeating the test after completing the necessary check.
- An existing subscription is being updated: Keep updates separate from your observation window. Updating a config, selecting a connection again, and retesting all at once makes it harder to distinguish routine maintenance from repeated failures.
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.
- Confirm the actual traffic path first: Check the current Global Routing mode, active Config, and matched policy. Make sure you are not changing the traffic route while intending to test On Demand.
- Keep the protocol unchanged: Shadowsocks, VMess, VLESS, Trojan, Hysteria2, and WireGuard have different connection characteristics, but there is no fixed battery-efficiency ranking independent of network quality, settings, and workload.
- Keep settings that work: If overly broad automatic triggers are the only cause of unnecessary connection time, narrow their scope. If both connection methods show similar issues, continue investigating request sources, network quality, and connection failures.
- Check again after restoring your settings: The next time you use Shadowrocket normally, review the battery graph and Home status again. Confirm that unnecessary connections have decreased without disrupting automatic reconnection when you need it.
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.