At a glance

Seeing Shadowrocket near the top of Battery Usage doesn’t necessarily mean there’s a connection problem. Check the reporting period, actual data usage, and network stability before changing Settings → On Demand. This guide is for iPhone and iPad users troubleshooting standby battery drain with their existing provider and subscription. Follow the steps to compare usage and distinguish data transfer from retries and connection settings.

1. Read iOS Battery Usage Before Judging Drain

On your iPhone or iPad, open Settings → Battery, choose a reporting period, then review Shadowrocket’s battery usage and activity. Charts and filters vary by iOS version, so use what appears on your device. First check whether you’re viewing the full period or a selected hour or day.

The percentage beside an app is its share of battery usage during the selected period, not the percentage points directly deducted from the battery. For example, if your device goes from 80% to 70% during a period and Shadowrocket accounts for 30% of usage, that doesn’t mean it used 30% of the entire battery. Charging, activity from other apps, and iOS attribution all affect the figures; simply multiplying the two percentages won’t give an accurate measurement.

2. Why Background Connections Use Battery

When a connection is active, iOS routes the relevant network traffic through the VPN tunnel. Shadowrocket uses the current Global Routing mode and configuration to determine where traffic goes. This may involve rule evaluation, DNS queries, encryption and decryption, and maintaining connections. Leaving the app in the background doesn’t mean iOS has closed the tunnel.

App request System tunnel Routing decision Outbound connection Response

Ongoing downloads increase data transfer. An unstable connection can lead to more handshakes, timeouts, and retries. After the screen locks, cloud sync and other background tasks allowed by iOS may still make requests. When troubleshooting, check both how much data is passing through and whether connections are repeatedly failing—not just whether the VPN indicator is visible.

Battery usage can’t be inferred from a protocol name alone. The actual cost of Shadowsocks, VMess, VLESS, Trojan, Hysteria2, and WireGuard also depends on server settings, data volume, and network quality. To troubleshoot battery drain, don’t change the protocol and connection settings at the same time. Start by keeping your existing working configuration unchanged.

3. When to Use On Demand or Keep a Connection Active

Settings → On Demand lets you configure conditions that trigger a VPN connection through iOS. It isn’t a battery-saving switch that detects whether someone is looking at the screen, and it doesn’t mean the VPN connects only when Shadowrocket is open. Available conditions may vary; check the options in the app and review each existing setting before enabling them.

Connection modeBehavior and use caseWhat to check
Keep connected Keeps the tunnel active when you need consistent routing, avoiding interruptions caused by disconnecting. Whether traffic is ongoing, the network is stable, and the connection is repeatedly reconnecting.
On Demand Lets iOS start a connection when configured conditions are met; useful when your network requirements can be clearly defined. Whether the conditions are too broad, behavior after switching networks, and whether requests still trigger a connection.
Disconnect manually Useful when you know you don’t need the tunnel. After disconnecting, later requests won’t use the existing tunnel route. Whether On Demand might reconnect, and whether changing the network path is acceptable for your apps.

Bottom line: Verify connection conditions before comparing battery use

If the tunnel stays active after you enable On Demand, check its trigger conditions and background requests before concluding the setting has no effect. Battery comparisons are meaningful only when the network, activity, and observation periods are similar.

On Demand and Global Routing control different things: On Demand determines what triggers a connection; Global Routing determines how traffic is handled after it connects. Proxy, Direct, Config, and Scene in Global Routing are not battery-saving levels. In particular, Direct does not turn off the VPN. Don’t use Direct as a substitute for a proper disconnect test.

4. Compare Battery Use in Five Reversible Steps

Save your current configuration and note the selection under Home → Global Routing and the original state of Settings → On Demand. You don’t need to delete an existing subscription or reimport a configuration. The suggested observation periods are for planning only; they don’t guarantee a measurable difference on every device.

  1. Record a baseline

    In Settings → Battery, note the starting charge and time. Record the network, screen state, and whether the device is charging. Choose a locked-screen observation period—for example, 60 minutes—and pause active downloads during it.

  2. Check the connection

    Open Home and check the current connection and Global Routing mode. Keep your working configuration as is; don’t switch servers, protocols, or Config. First observe battery use with the original settings.

  3. Adjust On Demand

    Go to Settings → On Demand, check and record the current conditions, then change only this setting. Don’t judge by the toggle alone: return to Home to check the actual connection and make one necessary app request.

  4. Repeat the observation

    Repeat under the same Wi-Fi conditions, with a similar starting charge and the same observation period. Record the ending charge, whether the connection started automatically, any network switches, and whether access behaved as expected.

  5. Assess and revert if needed

    If the difference is only one percentage point, don’t draw a conclusion yet; repeat the test another day. If access is interrupted or the connection unexpectedly reconnects, restore the original Settings → On Demand settings before investigating the specific conditions.

Don’t compare an all-screen-on sample with an all-screen-locked one, or a cellular sample with a Wi-Fi sample. Device temperature, signal strength, cloud sync, and charging can all mask the effect of a setting. Record observations manually; don’t rely on an unmeasured “battery savings” percentage.

5. Repeated Connections and Timeouts: Troubleshoot the Actual Error

If the connection repeatedly fails during standby, check network reachability before comparing On Demand settings. The English error messages below may appear during connection diagnostics, but wording varies by screen. Follow a branch only if the corresponding message appears in your logs. If there’s no error, don’t create a problem just to complete the checklist.

Error: connection timed out

Cause: The connection didn’t complete within the waiting period. The cause may be the current network, reachability of the destination, or server status.

Fix: First confirm that regular network access works, then check the address and port for your existing connection. Try again on a stable network. If it keeps failing, ask your provider to check the service; avoid running repeated tests.

Error: connection refused

Cause: The destination port refused the connection. The port may be incorrect, the service may not be listening, or access may have been explicitly denied. This isn’t inherently an On Demand battery issue.

Fix: Check the address and port against your existing service settings. Don’t guess and change the port to 443. If the port is correct but the error persists, give your provider the time of the error to investigate.

Error: network is unreachable

Cause: The current environment has no usable network route to the destination. This can happen during a network switch or when basic network access is unavailable.

Fix: Connect to Wi-Fi or confirm cellular data is available, then wait for the network to stabilize before reconnecting. If it happens only while switching networks, note the before-and-after status; don’t change rules at the same time.

Troubleshoot subscription updates separately from maintaining the tunnel. Check the Subscribe update operation only if an update fails; don’t refresh subscriptions repeatedly to investigate battery drain. An update request generates network activity, but one failed update doesn’t explain battery usage across an entire period.

6. Common Questions and When to Keep Your Settings

Will swiping Shadowrocket away stop battery drain?

Closing the app’s screen doesn’t necessarily close the tunnel. Return to Home to check the connection, and check whether Settings → On Demand might trigger it again. For a disconnect comparison, confirm that the system’s VPN status has actually changed.

Why does the VPN stay connected after I enable On Demand and lock the screen?

Locking the screen doesn’t necessarily trigger an On Demand disconnect. Check the actual conditions in Settings → On Demand, then see whether background tasks such as sync are still making network requests. Don’t delete connection conditions just to make the VPN indicator disappear.

Will routing all traffic through DIRECT save battery?

DIRECT is an outbound policy, not a way to turn off the tunnel. If Home → Global Routing is set to Config, the rules in Config also determine how requests are routed. Don’t rewrite DOMAIN-SUFFIX, GEOIP, or FINAL rules in bulk for a battery test. Keep the rules unchanged and test the connection state as the only variable.

Shadowrocket ranks high in Battery Usage, but the battery drops only slightly in an hour. Should I do anything?

Start by recording the actual battery drop and activity over the full period. If standby behavior is as expected and the connection is stable, a high ranking alone doesn’t indicate a problem. Repeat the observation at least twice under similar conditions to see whether the extra drain is consistent and reproducible.

Will switching protocols fix the problem?

First rule out weak signal, continuous data transfer, and failed retries. If a comparison is necessary, use only settings supported by your existing service. Keep the network and activity consistent, change one variable at a time, and don’t assume battery use based on the protocol name.

Keep the settings that meet both requirements: the apps and services you need work as expected, and repeated observations show no clear abnormal battery drain. If you need consistent routing, keep the connection active. If you only need a connection under specific conditions, use On Demand after checking those conditions. If a change disrupts access, restore the original settings before trying anything else.