Shadowrocket Subscription Update Guide: Manual Refresh, Update on Open, and Troubleshooting

Learn how to refresh subscriptions manually, enable updates when the app opens, and troubleshoot failed updates caused by invalid links, network issues, or unsupported formats.

At a glance

This guide is for users who already have a subscription URL from their own provider. First, manually update the subscription in Home, then check Settings → Subscribe for the option to update when the app opens. If an update fails, narrow down the cause by checking the link, network, and response content. After updating, test server connectivity separately: a successful subscription refresh does not mean the connection is working.

What a subscription update changes

A Shadowrocket subscription update requests the saved subscription URL again and parses the returned server configuration. It does not update the app or refresh rule files in Config. This guide covers managing a subscription you already have; it does not provide, sell, or recommend subscriptions or related services.

An update may add servers, remove old entries, or change addresses, ports, and connection parameters. Later refreshes may reload remote settings and overwrite manual changes to a subscription entry, so record important adjustments first. If the previously selected entry is removed, check your selection in Home again instead of relying on the total entry count.

Home
Check subscription groups, update results, and the current server
Settings → Subscribe
Check automatic subscription updates and request routing settings
Config
Manage configuration files and rules separately from server subscriptions

Bottom line: identify what you need to update

To update the server list, update the subscription in Home. To change how DOMAIN-SUFFIX, GEOIP, IP-CIDR, or FINAL rules match, check the active configuration in Config. Repeatedly refreshing a server subscription will not fix rule order.

Manually update a subscription in Home

Manually update the intended subscription after importing it for the first time, when your provider says its configuration has changed, or when an automatic update’s result is unclear. If you have multiple subscriptions, update each one separately and note the result so a success message for one group is not mistaken for a successful update to another.

  1. Identify the group

    Open Home and find the subscription group you want to refresh. Check its label and entries to confirm it is an imported subscription, not a server you added manually.

  2. Check the URL

    Open the subscription’s edit details and make sure the URL is complete. To add it again, go to Home → + → Type → Subscribe, enter your own subscription URL, and save. When troubleshooting, keep the original entry at first rather than deleting it.

  3. Run the update

    In Home, swipe left on the subscription group’s title row and select Update. Make sure you act on the subscription row, not an individual server within the group; they have different actions. Wait for the request to finish rather than triggering repeated refreshes.

  4. Check the result

    Look for an error message and check whether the expected addresses, ports, or entries have changed. An unchanged list does not necessarily mean the update failed: the remote content may be identical to what was already saved.

  5. Test the connection

    In Home, confirm the selected server again, then run Connectivity Test. To test an actual connection, make sure the connection switch is on and system VPN permission is granted. A completed subscription request does not establish a data connection.

Set up automatic updates when the app opens

Go to Settings → Subscribe and find Update on Open, which controls subscription updates when the app opens. Turn it on if needed. Labels and layout may vary by installed version. After enabling it, return to Home and check what happens the next time you open the app; the switch position alone does not confirm that an update ran.

Update on Open is a trigger, not a scheduled background task. It does not keep refreshing while the app is closed, nor does it guarantee an immediate request every time the app moves between the foreground and background. A reachable network, valid URL, and parseable response are still required for an update to succeed.

If you are still unsure whether an update ran, ask your provider to confirm that the remote configuration contains a recognizable change, then check Home. An unchanged count does not prove that automatic updating did not run; a larger count does not prove that every entry can connect.

Update timed out: check how the request is routed

Whether a subscription URL is reachable and whether a server in the list can connect are two separate things. The subscription domain may be unreachable over a direct connection but accessible through an existing connection. Conversely, if the currently selected server is down, a subscription request routed through it may fail.

CheckWhere to checkHow to assess it
Current networkThe device’s Wi-Fi or cellular settingsSwitch networks and update the same subscription. If the result changes, investigate the network path further.
Existing connectionHome → Connectivity TestTest the current server first; you cannot rely on a failed connection to retrieve replacement settings.
Update through a proxySettings → Subscribe → Update via ProxyIf an existing connection works but a direct request fails, enable this option and retry, then compare the results.
Routing modeHome → Global RoutingNote whether the current mode is Config, Proxy, Direct, or Scene. Avoid changing routing and refresh settings at the same time.

Update via Proxy is not a universal fix. Before enabling it, select a working server and establish a connection. If the subscription URL is only reachable directly, test again with this option off. Under Global Routing, Proxy routes through a proxy, Direct connects directly, Config follows the configuration, and Scene follows the selected scene. None of these settings means that automatic updates are enabled.

Change one setting at a time: note its original value, refresh manually once, and record the result before moving on. Do not change the network, server, and multiple switches at once; otherwise, even if updating starts working, you will not know which change made the difference.

Identify the cause from the error message

The examples below are error messages that may appear at the network or HTTP response level. The wording and display language may vary, so record the complete message shown on your device rather than expecting the exact same text every time. “Update failed” alone is not enough to tell whether the URL is invalid or the connection was interrupted.

Error: The request timed out.

Cause and fix: The request did not finish before the timeout. Network issues, DNS, or the remote server may be responsible. Try switching between Wi-Fi and cellular. If you have a working connection, compare the results with Settings → Subscribe → Update via Proxy on and off. A timeout alone does not mean the subscription has expired.

Error: A server with the specified hostname could not be found.

Cause and fix: The subscription domain could not be resolved. Check that the hostname in the URL is complete and contains no spaces or extra punctuation, then try another network. If it still fails, ask your provider whether the domain is still in use.

Error: HTTP 401 Unauthorized

Cause and fix: The server requires valid authorization. Make sure you copied the complete current subscription URL, not the address of a sign-in page. If the authorization parameters were reset, retrieve the URL from your own account and update the saved value.

Error: HTTP 403 Forbidden

Cause and fix: The server rejected the request, possibly because of authorization, access restrictions, or account status. Check the complete URL first, then give your provider the status code and the conditions under which it occurred. Do not assume that a 403 means you need to change protocols.

Error: HTTP 404 Not Found

Cause and fix: The requested path does not point to a resource. Check whether the path was truncated or query parameters were omitted, and confirm that the subscription endpoint has not changed. Repeatedly refreshing the same invalid URL usually will not change the result.

For certificate-related errors, check the device’s date and time, the subscription domain, and whether the current network is intercepting requests with a sign-in page. Ask your provider to check the certificate as well. Do not hide the problem by bypassing security checks. If a public network requires sign-in, complete it in the system settings before retrying in the app.

Why can’t the response be parsed if the URL opens?

A successful HTTP request does not guarantee that the response is a usable subscription. The server may return an account sign-in page, an expiration notice, or a network verification page. Even if the page loads normally, it is not a server list that Shadowrocket can import.

The addresses below illustrate URL structure only; they are not usable subscriptions. Query parameters in a real URL are part of its credentials. Keep them intact when copying, and never share them in public groups or paste them into an untrusted conversion site.

https://example.com/sub?token=xxxx

Verify the update and troubleshoot common questions

After refreshing, check the group, selected server, Connectivity Test, and actual access in that order. If the result is caused by a rule, check Config. If server authentication or transport fails, review that entry’s parameters. Separating these layers helps prevent connection problems from being mistaken for subscription problems.

The subscription updated successfully. Why is the server count unchanged?

The remote configuration may have changed only an address, port, or authentication parameter, or it may not have changed at all. Check the entries you expected to change instead of comparing only the count. If you are still unsure, ask your provider what the URL currently returns.

Do I still need to refresh manually after enabling automatic updates?

Yes, when troubleshooting. Select the subscription in Home and run Update to confirm that the URL and network work, then check Update on Open in Settings → Subscribe. This helps distinguish a failed request from an unmet automatic trigger.

What should I do if the selected server disappears after a refresh?

First, make sure you are looking in the correct subscription group. Select another entry retained by the latest update and run Connectivity Test. Do not assume the previous selection will remain valid after the remote entry is removed or renamed.

Do I need to send someone my full subscription URL for troubleshooting?

Usually, the complete error message, network type, manual update result, and Update via Proxy status are enough to start. Hide the URL’s path credentials, query parameters, password, and account details. If the full URL has been exposed, reset it in your own account and save the new one.

For further help with connection settings, see the settings guide. Shadowrocket is a closed-source commercial app for Apple platforms, primarily used on iPhone and iPad. The App Store is the only place to get it. A one-time purchase of the app does not include a service plan; check the App Store listing for the price, system requirements, and purchase eligibility.

Verify the official App Store listing