· Getting Started · About 8 min

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

Learn how to refresh a Shadowrocket subscription manually, enable Update on Open, and troubleshoot common subscription update errors.

At a glance

This guide is for users who already have a subscription URL from their own provider. First, refresh manually in Home and check the result, then enable Update on Open. If it fails, check the network, URL, response, and parsing in turn. A successful subscription update means the list was retrieved and processed; it does not mean every node in the list can connect, nor does it update routing rules in Config automatically.

What a Subscription Refresh Actually Updates

When Shadowrocket updates a subscription, the client requests content from the subscription URL and adds any recognized node details to the corresponding subscription group. This does not update the app or renew a service plan. This guide assumes you already have your own provider and subscription; get subscription links and nodes from your provider. This site does not provide, sell, or recommend nodes or subscriptions.

Read the subscription URL Request remote content Parse node settings Update the subscription group Check the connection

An update may change node names, server addresses, ports, or authentication settings. It may also remove items that your provider has deleted from the subscription. For this reason, manual edits to subscription entries may not last: a later update can overwrite them with remote content. If you need to preserve special settings, note their original values and check whether the item is still managed by the subscription.

2 ways to trigger an update
Manual Refresh and Update on Open
3 places to check
Manage nodes in Home, configurations in Config, and preferences in Settings
443
The default port for HTTPS when no port is specified; not the node's port

The subscription URL's port is different from the port used to connect to a node. For example, an HTTPS subscription request may use the default port 443, while a returned node uses a different port. Successfully downloading a subscription does not prove that a node's port is reachable, and a working node does not prove that the subscription server is currently accessible.

Refresh a Subscription Manually in Home

The steps below use the English interface on iPhone and iPad. First, make sure Home contains a subscription group, not just a few individually imported nodes. Without a subscription URL, refreshing individual nodes cannot retrieve an updated list from your provider.

  1. Check the subscription

    Open Home, find the subscription group to update, and check its name and saved URL. If you have multiple groups, identify the right one so you don't mistake another subscription's results for this update.

  2. Add a subscription

    If you haven't added one yet, go to the + in the top-right corner of Home → Type → Subscribe. Paste the full subscription URL from your provider, enter a name to identify it, and save.

  3. Pull to refresh

    Return to Home and pull down from the top of the list to refresh the subscription. Wait for the current request to finish before continuing. Avoid repeated pulls, which can overlap requests or trigger rate limits on the server.

  4. Check the list

    Check whether the group shows the expected new names or settings. If an error appears, keep its exact wording. If the list is unchanged, first ask your provider whether the remote content has actually changed.

  5. Test the connection

    Select the updated node, reconnect, and visit a site that normally requires it. If needed, disconnect first and then reconnect so an existing connection doesn't skew the results.

The example subscription https://example.com/sub?token=xxxx is for illustrating URL structure only; it is not a working subscription. When copying a real link, keep everything after ? and don't add quotes, spaces, or line breaks. The token in a link is usually an access credential; don't include it in public screenshots, chat logs, or online testing tools.

Enable Update on Open

Update on Open is useful if you want the latest list when you open the app. In the English interface, the setting is usually at Settings → Subscribe → Update on Open. Layouts may vary by platform, so use the subscription settings available in your current client. Don't look for this switch in Config's rule editor.

Update on Open is not a scheduled background task and doesn't guarantee that subscriptions will keep updating while the app is closed. It serves a different purpose from Settings → On Demand: On Demand starts a VPN connection based on connection conditions; it doesn't download subscriptions on a schedule. Adjusting On Demand to fix an outdated list usually means you're looking in the wrong place.

Bottom line: Verify a manual refresh first

If manual refresh hasn't succeeded, fix the request failure first. Automatic updates only change when a request is triggered; they can't fix an invalid link, authentication error, or unreachable subscription server.

Subscription Update Failed: Diagnose by Error Type

An update failure doesn't necessarily mean an account has expired. DNS resolution, TLS verification, network changes, or an incompatible response can also cause failures. The messages below are examples of English errors from network requests; exact wording can vary by system and platform. Record the actual message on screen instead of just noting that the update failed.

Error: The request timed out.

Cause: The request didn't complete within the allotted time. The current network, connection route, or slow response from the subscription server may be responsible.

Fix: On the same device, try once on Wi-Fi and once on cellular, waiting for each request to finish before refreshing again. If it fails on only one network, check that network's access conditions first.

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

Cause: The hostname in the subscription URL could not be resolved. Common causes include a typo, an expired domain, or a DNS lookup failure.

Fix: Check the full URL and try again on another network. If the domain still can't be resolved, ask your provider whether the subscription domain has changed.

Error: The Internet connection appears to be offline.

Cause: The system detected no available internet connection, or the network was switching when the request was made.

Fix: Complete any Wi-Fi sign-in and confirm that a regular webpage loads, then return to Home and refresh. Check that Shadowrocket is allowed to use cellular data in system settings.

If you receive an HTTP status code, respond according to what it means. 401 is commonly related to authentication; 403 means the server refused the request, possibly because of credentials or access restrictions; 404 means the requested path wasn't found; 429 means too many requests; and 5xx usually requires server-side investigation. Don't treat all these status codes as evidence that a node is unavailable.

No Error, but the Node List Hasn't Changed

No error message doesn't necessarily mean valid node content was received. Some URLs return a login page, expiration notice, or network sign-in page, even with an HTTP status of 200. The client needs subscription content it can recognize, not an ordinary webpage with “subscription” in its title. Opening the link in a browser can help confirm that the URL is reachable, but it doesn't prove the app can parse it.

Shadowsocks, VMess, VLESS, Trojan, Hysteria2, and WireGuard use different settings. A subscription may include some of these protocols, but matching protocol names don't guarantee that all required settings are present. If parsing succeeds but the connection still fails, check the server address, port, authentication details, and—when using TLS—the server name. Don't rely only on whether a node appears in the subscription list.

Bottom line: Check the list and connection separately

First confirm that the target group contains the expected content, then test the selected node's connection. If the list is correct but the connection fails, troubleshoot the connection instead of repeatedly importing the same subscription.

Check Rules and Traffic Routing After an Update

Subscription updates and rule configuration are separate things to check. A change to nodes in Home doesn't update DOMAIN-SUFFIX, GEOIP, IP-CIDR, or FINAL rules in Config. Check the configuration separately only if your provider explicitly supplies a configuration file and you imported it using the appropriate method.

Proxy, Direct, Config, and Scene under Global Routing are not subscription refresh modes either. Proxy and Direct handle traffic differently, Config routes traffic according to the selected configuration, and Scene relates to scene settings. When troubleshooting, note the current selection. A successful node update doesn't mean every request will use that node.

  1. Record the network, connection status, and Global Routing selection before and after refreshing. Change only one condition at a time.
  2. If the subscription server can't be reached on the current network, but an existing connection can reach it, try again over that connection. Don't assume every subscription requires a connection to be established first.
  3. If the update fails only after connecting, record the selected node and configuration, then check for a routing issue. Don't make long-term changes to how all traffic is handled just to refresh a subscription.
  4. If a node's name changes after an update, check that policy references in your configuration and the current selection still match your expectations, then test the actual destination site.

For further troubleshooting, see the Troubleshooting Guide. To understand how Global Routing relates to rules, see Proxy Mode Guide. When reporting an issue, include the exact error, time, network type, whether a connection was enabled, and the results of manual refresh and Update on Open. Hide the full subscription URL, token, and node credentials. Keeping your working configuration is usually more helpful than deleting everything first.

Download Shadowrocket