Shadowrocket Subscription Update: Manual Refresh, Update on Open & Failure Causes

Your subscription link comes from your provider; Shadowrocket only fetches it and turns it into the servers in your Home list. This article covers the two places to refresh manually, where the update-on-open setting lives, and the order to work through when an update fails — from network to content.

At a Glance

This article covers three things: the two ways to update manually (pull to refresh on Home, Update on the subscription detail page), what the Update on Open and Update via Proxy switches under Settings → Subscribe actually do, and how to verify a failed update step by step in the order network → link → content. It is aimed at users who already have a subscription link from their provider but find updates unreliable.

Where subscriptions live: Subscribe entries vs. Config

Your subscription link comes from your provider — usually a URL with a token, like https://example.com/sub?token=xxxx (both the domain and the token are placeholders; replace them with the address your provider gave you). In Shadowrocket it is added as an entry of type Subscribe: switch to Home in the bottom tab bar, tap + in the top-right corner, set Type to Subscribe, paste the link, and save.

Once saved, the subscription appears in the Home list, and you can expand it to see the servers your provider pushes. Updating a subscription means sending a fresh request to that address and replacing the local server list with whatever comes back — the link itself does not change, and the content is whatever the provider currently serves.

ItemSubscribeConfig
What it holdsServer list pushed by your providerRules and routing configuration (DOMAIN-SUFFIX / GEOIP / IP-CIDR / FINAL)
How to addHome → + in the top-right corner → Type: SubscribeConfig tab → + in the top-right corner, then paste a link or text
How to updatePull to refresh on Home, or tap Update on the subscription detail pagePull to refresh in the Config list
What changes after an updateServer names, count, and parameters are overwritten with what the provider currently servesThe entire rule set is replaced

Config and Subscribe are two separate pipelines: Config is a rules file, where keywords such as DOMAIN-SUFFIX, GEOIP, IP-CIDR, and FINAL live; Subscribe only carries servers. Updating a subscription does not update the rules file, and the reverse is true as well. If servers changed but routing did not, first check whether you only updated one of the two.

Prerequisites

Your subscription link, servers, and traffic all come from your provider. Shadowrocket is a one-time purchase on the App Store — what you buy is the client itself, with no servers or subscriptions included.

Manual updates: pull to refresh on Home and Update on the detail page

There are two ways to update manually. Both do the same thing — send a new request to the subscription address: pull down on Home to refresh everything, or use Update on a subscription detail page to refresh just that one. They are listed below in the order you would actually use them.

  1. Switch to the Home list

    Switch to Home in the bottom tab bar and check that a Subscribe entry already exists. If not, tap + in the top-right corner, set Type to Subscribe, and paste your subscription link.

  2. Pull down to refresh the subscription

    Scroll the list to the top, then pull down and release to start the update. A refresh indicator appears next to the entry and disappears when it finishes.

  3. Tap Update on the detail page

    Open the Subscribe entry and tap Update on its detail page. Only that subscription is refreshed; other entries in the list are untouched.

  4. Check the server count

    Expand the entry and compare the number of servers with what your provider told you. If the numbers do not match, the fetch did not return the full list.

  5. Select a server and connect

    Tap a server and turn on the connection switch at the top. The first connection triggers a VPN configuration prompt; allow it, then go back to Home and confirm the status reads Connected.

An update replaces everything rather than merging changes. Servers your provider removed disappear from the list, and any notes, ports (443, for example), or encryption methods you edited under that subscription are overwritten with the provider's values on the next update. If you need custom parameters to persist, copy them into a manually added server instead of editing the subscription entry. Also, if you are connected through a server in that subscription while updating, the process may interrupt the current connection — turning the connection switch off first is the safer route.

Conclusion: separate a failed fetch from a fetch with the wrong content

If the list does not change at all and an error pops up, the fetch failed — check the network and the link. If the server count drops, or names turn into meaningless strings or a notice, the fetch succeeded but the content is wrong — ask your provider about the subscription status. The two paths call for completely different actions; mixing them just wastes time.

Automatic updates on open: the two switches under Settings → Subscribe

If you would rather not pull down manually every time, let automatic updates handle it. The entry point is Settings, the last tab in the bottom bar; expand the Subscribe group, where two switches relate directly to updating. (Item names below are in English; wording may differ slightly between versions — go by what your device actually shows.)

Which to choose: if the subscription domain is directly reachable on your current network, Update on Open alone is enough — update requests bypass the server and use no proxy traffic. If the domain is blocked on your current network, add Update via Proxy on top. Note that Update on Open triggers when you open the app; iOS will not let an app go online on an hourly schedule in the background, so how fresh your subscription is depends on how often you open Shadowrocket. When an update fails, the list keeps whatever was last fetched successfully — it never goes empty.

Conclusion: Update via Proxy is an emergency switch

With it on, subscription updates depend on the current proxy connection: they go smoothly when the server works, and fail along with it when the server has problems — with error messages that look exactly like ordinary network failures. Leave it off normally, turn it on only when you have confirmed the subscription domain is unreachable, and turn it off again once the update finishes; that leaves you one less variable to rule out.

Troubleshooting order for failed updates: from network to content

Do not start by tapping retry over and over. Work through a fixed order: is the network reachable → is the link valid → is the returned content actually a subscription. The error text itself is the classification clue — most English messages come from the system network layer, so treating them as labels is faster than guessing at causes.

  1. Change networks: switch between Wi-Fi and cellular once to rule out blocking of the subscription domain on the current network.
  2. Verify the link: paste the subscription link as-is into a browser address bar and see whether it returns server list text, a web page, a login page, or an error.
  3. Update through a proxy: if you have a working server, connect to it first, then turn on Update via Proxy under Settings → Subscribe and update once.
  4. Ask your provider: if everything above checks out and it still fails, send the provider the exact error text along with the domain in your subscription link, and confirm whether the subscription has expired or the domain has changed.

Error: The Internet connection appears to be offline.

Cause and fix: the device has no working system network — Airplane Mode is still on, Wi-Fi is not connected, or cellular data is turned off. Restore the system network and update again. If only the subscription domain is unreachable while your servers work, turn on Update via Proxy under Settings → Subscribe and retry.

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

Cause and fix: DNS resolution for the subscription address failed — usually a typo in the domain, a domain that is no longer active, or a local DNS problem. Check the domain character by character, then switch between Wi-Fi and cellular once. If it still fails, ask your provider whether the domain has changed.

Error: The request timed out.

Cause and fix: the request went out but no response arrived within the timeout — usually the subscription domain is rate-limited or blocked on the current network. Connect to a working server, turn on Update via Proxy, and update again; retrying on a different network works too.

Error: The certificate for this server is invalid.

Cause and fix: the HTTPS certificate for the subscription address is not trusted by the system — it may have expired, be self-signed, or the request may be intercepted. Do not ignore the certificate warning and keep using it; ask your provider about the certificate, or request a subscription address with a valid one.

Error: Failed to load subscription

Cause and fix: the request succeeded but the response is not a valid subscription format — commonly a web page, a login page, or an expiry notice. Paste the link into a browser and look at what comes back; make sure the link includes the full token, and confirm with your provider that the subscription is still active.

If there is no error but the list never changes, first check whether the pull actually triggered (the list has to be scrolled to the top before you pull down), then check whether you are updating a different subscription — Home can hold several Subscribe entries at once, pull-to-refresh updates all of them, while Update on a detail page affects only that one.

Common Questions

These are the operational questions asked most often about subscription updates, and each answer points to a specific entry point.

The same subscription link updates on another device, but keeps failing on this one?

First rule out this device's own network: switch between Wi-Fi and cellular once. Then connect to a working server, turn on Update via Proxy under Settings → Subscribe, and retry. If it still fails, check whether the link carries the full token — some providers limit concurrent requests for the same token, so several devices refreshing at once can be rejected. Wait a few minutes and try again.

Server names changed after an update — do the rules in Config still work?

Rules match destination addresses by conditions such as DOMAIN-SUFFIX, GEOIP, and IP-CIDR, not by server names, so the vast majority are unaffected. But if your configuration references an old server name, it will no longer match after the rename, and you need to open the configuration and point it at the new name.

With Update on Open enabled, does it go online on every launch?

Yes. The trigger is launching the app or returning to it from the background, and each trigger sends one request to the subscription address. If your subscription content rarely changes, turn it off and update manually by pulling down on Home — that gives you better control over the request rhythm.

Will a subscription update overwrite server parameters I edited by hand?

Yes. An update replaces everything, and entries under that subscription follow what the provider serves — your edited notes, ports, and encryption methods revert to the provider's values on the next update. To keep them long-term, copy the parameters into a manually added server.

Can I just copy the subscription link to another iPhone?

Technically yes, but the token in the link works like account credentials — anyone who has it can pull the server list your provider serves. Forwarding it, screenshotting it, or posting it in public can all leak it. To use it on a new device, ask your provider about a multi-device plan first.

App Store verification