At a glance

On Demand in Shadowrocket controls when a VPN connection is triggered based on conditions; it is not a battery-saving switch. This guide is for iPhone and iPad users who already have their own provider and subscription and want to identify the source of background battery use. First, distinguish automatic connection triggers from traffic handling while connected. Then review the system’s battery records and compare the setting on and off under the same network and configuration to decide whether to keep automatic connections or connect manually.

On Demand and an active background connection are different things

Bottom line: On Demand being enabled does not prove that it is causing battery drain, and disabling it does not prove that the VPN is disconnected. On Demand determines when the system initiates a connection based on existing conditions. Once the VPN is connected, it still handles network requests covered by the routing settings. Actual battery use also depends on request volume, network signal, connection retries, server response, and screen use.

In Shadowrocket, go to Settings → On Demand and check whether it is enabled and what conditions are configured. The system evaluates applicable On Demand conditions to decide whether to establish a connection; these may depend on the current network and network access. This does not mean the app runs only when you open a particular website, nor does it guarantee that activity stops as soon as the screen locks. Available options may vary; refer to what the app actually displays and don't assume switch names that don't match your current interface.

Network conditions change On Demand conditions are evaluated System tunnel is established Routing policy handles requests Request completes or retries

This sequence shows two distinct stages: connection triggering comes first, followed by activity while connected. Even after you close Shadowrocket's foreground screen, the system VPN tunnel may remain connected. Conversely, not having the app open for long does not mean that it handled no background traffic. Leaving the app is not a reliable way to disconnect or verify battery savings.

Check these three things on your iPhone’s Battery page

Open the system Settings → Battery, select a time range offered on the page, and review the app list. Charts and time-range labels vary by system version, so follow the interface on your device. Don't rely on an app's percentage alone: it usually shows the app's share of battery use during the selected period, not how many percentage points that app drained from the battery by itself.

  1. Check the reporting period. Choose a range that covers when the issue occurred. If the chart lets you select a specific hour or day, narrow it to the period when the battery dropped unexpectedly. Note whether the device was charging, whether the screen was on for a long time, and whether you were using Wi-Fi or cellular data.
  2. Review activity details. Tap Shadowrocket in the list, or use the page's activity view, to check for background activity. The system uses its own accounting for network extensions, so a single entry in the list is not an independent measurement of the entire network connection's power use.
  3. Check other apps during the same period. If video playback, photo syncing, system updates, or large file transfers coincided with the battery drop, include them in your assessment. Requests from other apps may also pass through the VPN. “Long background activity” does not mean “abnormal battery drain.”

For example, if Shadowrocket's battery-use percentage is higher during one period than yesterday, other apps may simply have used less battery that day; Shadowrocket's absolute energy use may not have increased. Check the device's overall battery curve, activity, and what you were doing during that period. The figures below are suggested observation parameters, not product performance data or measured battery-life results.

2 rounds
Compare On Demand on and off while keeping all other conditions the same
30 minutes
Suggested initial observation time per round; observe longer if the difference is unclear
3 items
Record battery change, background activity, and connection retries in both rounds

Bottom line: Compare the same time window; don't change settings based on app rankings alone

First select the period when battery level dropped noticeably, then check network activity and reconnection records. If only the app's percentage increased but the device as a whole did not drain faster, there's no need to change how you connect based on that figure alone.

Compare the setting on and off using consistent steps

Before testing, define what you're trying to find out: whether automatic connections are triggering frequently, or whether staying connected uses more battery than disconnecting. These are different questions and shouldn't be combined in one test. If you manually maintain the same VPN connection in both rounds, changing On Demand mainly affects automatic triggering; it should not change the cost of handling the same traffic.

  1. Record the current setup. In Home, note the connection status and Global Routing selection. Check the active configuration in Config, then record the current setting in Settings → On Demand. Just take notes; don't change rules, protocols, or subscriptions while investigating battery use.
  2. Keep conditions consistent. Use the same Wi-Fi network, similar screen brightness, and the same tasks in both rounds. Keep Low Power Mode in the same state. Don't test one round on a weak cellular signal and the other on stable Wi-Fi, then attribute the difference to On Demand.
  3. Test with On Demand enabled. Keep the existing conditions and record the starting and ending battery levels, whether the VPN connects on its own, whether it disconnects and reconnects repeatedly, and whether any actual syncing takes place while the screen is locked.
  4. Test with On Demand disabled. Turn off On Demand. If you're testing automatic reconnections, disconnect from Home first, then check whether the connection is still triggered. If you're testing battery use while connected, connect manually and repeat the same tasks as in the previous round.
  5. Review and restore. Compare your results with the system Battery page. Repeat the test if the difference is small, the reporting periods don't match, or conditions changed significantly. When you're done, restore the settings you need; don't leave an essential connection disabled just for testing.

Global Routing affects traffic paths, not the connection switch

Global Routing and On Demand work at different levels. Global Routing determines how requests are routed; On Demand triggers a connection based on conditions. Changing Global Routing to Direct does not mean the system VPN tunnel has disconnected. Changing it to Config does not mean that no requests will match a proxy policy.

Interface optionWhat to checkWhat this does not tell you
ProxyUses a proxy routing mode; confirm that the selected outbound is available.This selection alone doesn't indicate battery use; check traffic and connection quality as well.
DirectUses a direct connection.This is not a VPN disconnect button and does not confirm that the tunnel has stopped.
ConfigHandles requests according to the rules and policies in the current configuration.Keep the same configuration for comparison; changing rules at the same time may alter traffic paths.
SceneCheck existing Scene settings and how they are actually applied.Scene settings may change the test conditions, so note which routing behavior is actually in effect.

When using Config, rules such as DOMAIN-SUFFIX, IP-CIDR, GEOIP, and FINAL affect how requests are matched. But adding or changing rules is not a general battery-saving measure. First check whether the policy applied to a specific request is what you expect, then look for repeated requests or failed retries. If there's no evidence of a problem, keeping the current configuration makes comparisons easier.

If connections keep retrying, check network errors first

Weak signal, network changes, unreachable servers, and mismatched parameters can all cause repeated connection attempts. If retries decrease after you disable On Demand, that only shows that automatic triggering played a part; it does not rule out an underlying connection problem. First test your existing connection on a stable network and check the address, port, and protocol parameters. Don't switch protocols as a first step to mask an error.

The following are examples of errors that may appear in network logs; they are not fixed messages that appear with every failure. Follow a particular troubleshooting path only if the actual log contains the corresponding text. The same snippet can occur at different connection stages, so check the surrounding log entries too.

Error: i/o timeout

Cause and what to do: A network read or write did not complete within the allowed time. The cause may involve the current network, name resolution, or the remote server's response. Test again on a stable network, then check the address and port provided by your own service provider. Note whether the error occurred during connection setup or data transfer.

Error: connection refused

Cause and what to do: The connection attempt was rejected. Common checks include whether a service is listening on the destination port and whether access was explicitly denied. Verify the address and port carefully, check the service status, and confirm the details with your own service provider before testing again. Repeatedly toggling On Demand won't fix a remote listener issue.

Decide whether to enable it based on how you use your device

The key question is whether you need the connection to recover automatically and whether you'll remember to connect manually when needed. There is no one-size-fits-all battery-saving answer for On Demand. Turning it off changes automatic triggering; it does not guarantee better battery life. Keeping it on can reduce manual steps when conditions are met, but does not mean every network change will happen without troubleshooting.

Bottom line: Keep it enabled if you need automatic reconnection; otherwise, use a manual process you can verify

Choose a connection method that reliably completes the tasks you need. Consider disabling On Demand for your own use only if repeated comparisons show fewer unnecessary connections without disrupting normal use.

After changing settings, finish with a complete check

When troubleshooting is complete, return to Home to confirm the connection status, check the active mode in Global Routing, and verify the enabled configuration in Config. If you need automatic connections, restore the appropriate settings in Settings → On Demand. If you prefer manual connections, make sure the VPN won't reconnect after you disconnect because of another existing automatic VPN connection setting.

  1. Open a service you normally use and confirm that it works as expected; check how its requests are routed. Don't assume every request succeeded just because the VPN status indicator is on.
  2. After another period of similar use, revisit Settings → Battery and check whether the device's overall battery drain has improved consistently, rather than looking only at Shadowrocket's place in the app list.
  3. Keep a record of the final setting, test network, and any errors. If you can't reproduce a difference, restore the settings that suit your everyday use and avoid continually changing multiple parameters.

This guide does not rank Shadowsocks, VMess, VLESS, Trojan, Hysteria2, or WireGuard by battery use. Protocol settings, connection quality, and workload vary, so the protocol name alone cannot predict battery life. For more detailed steps, see the Getting Started guide. For definitions, see the glossary.

Verify the App Store listing and review connection settings

Shadowrocket is a closed-source commercial app for Apple platforms, sold as a one-time purchase through the App Store. Before buying, verify the developer, Shadow Launch Technology Limited, and app ID 932747118. Check the App Store listing for system requirements. The app purchase does not include a service plan. This guide assumes you already have your own provider and subscription; it does not provide, sell, or recommend nodes or subscriptions.

Go to the App Store listing to verify the app Read the guide