For users who have already imported their own subscription into Shadowrocket. First, test a manual update in Home, then check Update on Open under Settings → Subscribe. If an update fails, troubleshoot the network, URL, response content, and request interval one by one. Updating a subscription retrieves the server list again; it does not test connections or update the rules in Config.
What subscription updates affect: lists, connections, and rules are managed separately
Shadowrocket is a closed-source commercial app for Apple platforms, primarily used on iPhone and iPad. It is available exclusively through the App Store as a one-time purchase. Buying the client does not include a service plan. This article assumes you already have your own provider and subscription. This site does not provide, sell, or recommend servers, subscriptions, or providers. See the App Store listing for pricing, system requirements, and general purchase availability.
A subscription update sends a new request to the saved subscription URL and parses the server information in the response. The provider may change server addresses, ports, names, or authentication details, so the list may change after an update. If nothing has changed on the provider's end, the list may remain the same even after a successful update. An unchanged server count alone does not mean the update failed.
The subscription list in Home, configuration files in Config, and the system VPN connection are separate things. A successful subscription request does not mean every server entry can connect; a working connection does not mean the subscription URL is still valid. Identify which part failed before choosing what to do next.
Manual update: refresh one subscription group and check the result
When troubleshooting for the first time, update just one subscription group to avoid confusion if multiple URLs fail. These steps apply to a group you've already imported; you don't need to add the same URL again. Importing it again can create duplicate groups with similar names and make it harder to check the results.
- Open Home. Find the subscription group you want to update. Make sure you're viewing servers in that group, not entries you added individually.
- Open the group actions. Touch and hold the subscription group name, then choose
Updatefrom the menu. Select the group title, not an individual server entry. - Wait for the request to finish. Avoid tapping repeatedly while it's in progress. Check the result message; if the interface shows an update time, note that too.
- Check the list. Make sure the group is still there and its entries are present. Check whether any names or addresses the provider said it changed have appeared. The same number of entries does not prove that nothing was updated.
- Check the connection separately. If the selected entry was removed or renamed, select an entry that is still listed, reconnect if needed, and check that it works for your intended access.
Pulling down to refresh the list in Home can also trigger subscription updates. If you manage multiple groups, check whether requests were triggered for other groups too. To isolate an issue with one URL, use Update on that group so you can match the result message to the right subscription. Menu placement and appearance may vary; follow the current app interface.
Update on Open: configure automatic updates
Enable automatic updates after confirming that a manual update works. This helps distinguish a failed request from a trigger condition that wasn't met. Update on Open triggers subscription updates when you open the app; it is not a recurring background download, and it does not necessarily send a new request every time you switch back to the app.
- Go to Settings → Subscribe, find Update on Open, and turn it on.
- Check the update-interval options on the same page. If the current interface offers an interval setting, keep its existing value for now and note it. Reopening the app repeatedly in a short period does not guarantee a new request.
- Return to Home and leave the subscription group in place. Wait for the configured interval, then reopen the app and check for an update message or any time information shown in the interface.
- If nothing visibly changes, run Update on the group once. If a manual update succeeds but automatic updates don't trigger, check the toggle, interval, and network connection when opening the app. Don't replace the subscription URL right away.
Opening the app and connecting to a VPN are separate actions. Settings → On Demand controls connections triggered by conditions; it does not update subscriptions. Enabling On Demand cannot replace Update on Open. Conversely, a subscription can still be updated manually without On Demand, provided the network needed for the request is available.
Bottom line: verify the request first, then the trigger
After a manual update succeeds for the same subscription, check whether automatic updates trigger at the expected interval. If manual updates fail too, troubleshoot the network and URL directly; repeatedly toggling automatic updates won't fix a response problem on the provider's end.
Update failed: choose your next step based on the error
An error may come from the system network layer, an HTTP response, or content parsing. The English messages below may appear in network error details, but the app may not display them in the same format every time. Save the actual message and note when it occurred; don't assume every failure means the subscription has expired.
Network detail: The request timed out.
Cause: The request didn't complete in time. The network may be unavailable, the server may be slow to respond, or the current proxy route may not be working.
What to do: Switch between Wi-Fi and cellular once to compare, then update the same group again. If only the subscription URL is unreachable, check whether the update needs to use an existing working connection.
Network detail: A server with the specified hostname could not be found.
Cause: The hostname in the subscription URL couldn't be resolved. The URL may have been copied incorrectly, the domain may no longer be active, or DNS resolution may be failing on the current network.
What to do: Check the domain and full URL of the existing subscription, then try again on another network. Don't replace the domain with an IP address; doing so may break HTTPS certificate validation and server-side identification.
HTTP status: 403 Forbidden
Cause: The server rejected the request. This may be due to authorization, access restrictions, or a security policy; the status code alone does not establish that the client is at fault.
What to do: Check the subscription permissions and current URL in your provider account. Send the status code and time of the error to your provider for review, and avoid repeated requests in quick succession.
HTTP status: 429 Too Many Requests
Cause: The provider is limiting request frequency. Repeated refreshes may extend the time before content is available again.
What to do: Stop tapping Update repeatedly and wait as directed by the provider. If the response includes Retry-After, retry after the specified interval or time, and check the automatic update interval.
If the URL returns a login page, verification page, or notice, an HTTP 200 status still doesn't mean it returned a subscription that can be parsed. You may see a parsing error or an empty list. Check the subscription link in your provider account instead of using a webpage URL as the subscription URL.
- URL integrity: Check for leading or trailing spaces and line breaks, and make sure query parameters haven't been omitted. In particular, check whether a token was cut off when copying.
- Authorization status: Check whether the subscription was reset, revoked, or replaced. A URL that worked before may no longer be valid.
- Response content: Make sure the provider returned subscription content compatible with the app, not an account management page or plain-text instructions.
- Certificate issue: First check that the device's date and time are correct, then ask your provider to verify the certificate. Don't hide the problem by disabling security checks.
Update via Proxy: use an existing working connection for the request
If the subscription URL is unreachable over your current direct connection, but an existing server still works, check Settings → Subscribe → Update via Proxy. This option changes the network route used for subscription updates; it cannot provide a working server or fix a revoked URL or an invalid response.
- In Home, select an existing entry you've confirmed works, turn on the connection, and verify that network access works as expected.
- Go to Settings → Subscribe, turn on Update via Proxy, then return to Home and run Update once on the same group.
- Compare the results with the setting on and off. If updates work only through an existing connection, you can keep the relevant setting enabled. If both routes fail, continue checking the URL and provider status.
- If none of your existing entries work, resolve the connection issue first or ask your provider to confirm the current valid details. Avoid relying on a failed connection to retry updates.
Config, Proxy, Direct, and Scene under Global Routing are traffic-handling modes, not subscription update settings. Direct does not mean “force a subscription refresh,” and switching to Proxy does not guarantee an update will succeed. Change one factor at a time and record the result. Otherwise, changing routing, DNS, and subscription options together can make the cause hard to identify.
Bottom line: keep one repeatable comparison
For the same subscription, record the network type, whether Update via Proxy is enabled, and the result. A difference you can reproduce consistently is more useful for finding the cause than repeatedly importing the subscription.
FAQ: update intervals, list changes, and rule refreshes
The list doesn't look refreshed when I open the app. Is automatic updating broken?
Go to Settings → Subscribe and confirm that Update on Open is enabled. Check the update interval shown in the current interface and wait for it before checking again. Then run Update manually to distinguish a trigger issue from a failed request. Don't judge by server count alone.
The update succeeded, but why is a server I used before missing?
The latest response may have removed or renamed that entry. First make sure you're viewing the correct group, then select an entry that is still listed. If the provider's expected content doesn't match what you received, ask your provider to check the response. Don't try to restore the entry by editing an unfamiliar URL.
Can I set the automatic update interval as short as possible?
A shorter interval doesn't mean more reliable updates. Follow your provider's guidance. Repeated requests won't produce new content if nothing has changed on the provider's end. If you get a 429 response, stop retrying and wait to avoid overlapping manual and automatic requests.
Does refreshing a subscription also update DOMAIN-SUFFIX rules?
Not necessarily. Server subscriptions and rule maintenance in Config are separate operations. To update a configuration, check the active file and its source in Config. Review the content and order of DOMAIN-SUFFIX, GEOIP, IP-CIDR, and FINAL separately.
The update failed, but my existing list still connects. Should I delete it right away?
Keep the old list for now, note the error, and check the existing subscription URL. A working connection only shows that the entry can connect at the moment; it doesn't prove the subscription is authorized. Once you confirm the new URL is valid and an update succeeds, you can deal with duplicate or inactive groups.