For users who have already imported their own subscription into Shadowrocket. Start by refreshing manually from Home to confirm the URL returns a valid list. Then, if needed, enable Update on Open under Settings → Subscribe. If only one subscription has a problem, update that group on its own. When an update fails, distinguish between an incomplete request, a server refusing access, and a response that cannot be parsed. Don’t delete entries that still work.
What a subscription update changes
A subscription stores the source of a list. When you update it, Shadowrocket requests that URL, reads the response, and updates the server entries in the corresponding group. If the server changes a server name, address, port, or connection parameters, the new list may differ from the old one. Updating a subscription does not upgrade the app or extend the validity of a service you already have.
Server subscriptions in Home and rule configurations in Config are different types of content. Refreshing a server subscription does not update Config or automatically change Global Routing. Before troubleshooting, confirm which type of URL you’re working with so you don’t enter a rule file URL in a server subscription field.
- Existing entries: Entries from a subscription group are maintained by that subscription. Manually added entries don’t get the same update source.
- Current selection: After updating, check that the server you had selected is still there. Don’t rely on the total count alone.
- Connection status: A successful list refresh and a working server are separate things to check. Test the connection independently.
- Default settings: Check the current app for the status of automatic updates and request routing options; don’t assume they’re all on or all off.
Manual refresh: Run a full update first
Manual refresh is useful for checking the list after importing it, syncing changes announced by your service provider, or checking an unclear automatic update result. Keep Shadowrocket in the foreground and wait for the update to finish. Repeatedly pulling down won’t fix an invalid URL and may trigger the server’s rate limit.
-
Find the group
Go to Home and find the subscription group you imported. If you haven’t added one yet, tap “+” in the upper-right corner, select Subscribe under Type, enter your full subscription URL, and save it.
-
Pull to refresh
Pull down on the Home list to refresh the subscription. Check the update status and wait for the request and parsing to finish before leaving the app.
-
Check the list
Check that the group still contains valid entries, and verify the expected name or count changes. An unchanged list may simply mean the server content hasn’t changed; that alone doesn’t indicate a failure.
-
Test the connection
Select the server you want to use and confirm it’s selected on Home, then run Connectivity Test. If the refresh succeeded but the connection failed, check that server’s parameters and connection path.
Update on Open: Enable automatic updates when opening the app
Check Update on Open under Settings → Subscribe. When enabled, the app attempts to update subscriptions at the relevant time when it opens. This isn’t continuous background polling, and it doesn’t mean the app will make requests at fixed intervals while closed. The exact trigger and interface may vary by app version.
First, complete one successful manual refresh, then enable this option. If an issue comes up the next time you open the app, you can tell whether the automatic trigger didn’t work as expected or the subscription itself can no longer be updated. The app still needs a working network connection when it opens; automatic updates can’t bypass server authentication, expiration, or request limits.
- Where to find it: Open Settings → Subscribe and check the current status of Update on Open. Enable it if you want the list to sync when you open the app.
- How to verify: Note the current contents of the group, then check the update notice and result the next time you open the app. If the server content hasn’t changed, it’s normal for the list to stay the same.
- For troubleshooting: If an error appears every time you open the app, turn this option off temporarily and update one subscription at a time to isolate the issue. Decide whether to turn it back on after the issue is resolved.
- What it does: Settings → On Demand manages connections based on conditions; it doesn’t schedule subscription refreshes. Don’t change On Demand just to enable automatic updates.
If the network isn’t ready when you open the app—for example, just after switching Wi-Fi or while signing in to a network—the update request may fail before connectivity is restored. Finish connecting, then return to Home and refresh manually to check. There’s no need to import all your subscriptions again.
Update subscriptions one at a time to isolate the issue
If you have multiple subscriptions, a successful update for one group doesn’t mean the others updated too. Updating them individually helps pinpoint a problem URL and prevents one server’s issue from being mistaken for an app-wide connectivity problem. This assumes you already have subscriptions; this site does not provide, sell, or recommend servers or subscriptions.
- On Home, find the subscription group you want to check. Note its name and current number of entries, and make sure it isn’t another group with the same name.
- Open the action menu for that subscription group and choose Update to refresh this subscription. The menu location may vary in the current app interface. Be careful not to select the delete option.
- Wait for the result and note the full error message. If the update succeeds, check the group’s contents. If it fails, keep the group and continue troubleshooting.
- On the same network, update another subscription you already have for comparison. If only one fails, first check that URL and its server status. If several fail, check the network path they have in common.
Subscription update errors: Check the error and response
An error can occur during DNS resolution, connection setup, the server response, or content parsing. First note when it happened, which network you were using, the target group, and the exact message. Then decide what to check next. The English text below may appear as a network request error or HTTP status. The exact wording depends on the app and server, and the same message won’t necessarily appear every time.
Error: The request timed out.
Cause: The request didn’t complete within the allowed time. The network path or server response may be the issue. Fix: Confirm your network is working, switch networks and retry the subscription on its own, then check Update via Proxy based on your existing connection setup.
Error: 401 Unauthorized
Cause: The server didn’t accept the credentials in the request. Fix: Check the subscription URL in your own service account, keep all query parameters intact, and confirm whether the old token has been reset.
Error: 403 Forbidden
Cause: The server refused the request, possibly because of account status or access restrictions. Fix: Ask your service provider to check your subscription permissions and access conditions. Don’t assume this status means the app is configured incorrectly.
Error: 429 Too Many Requests
Cause: The request triggered the server’s rate limit. Fix: Stop refreshing repeatedly and wait as instructed by the server before trying again. You can temporarily turn off Update on Open while troubleshooting to reduce repeat requests.
Request succeeded, but the list is empty
A successful HTTP request only means a response was received; it doesn’t guarantee that the response contains valid server entries. The URL may return an account login page, an error page, or empty content. Missing query parameters can also make the server return a different page than expected. Being able to open a web page doesn’t prove that a subscription is valid.
- Check that the URL is a server subscription URL, not an account management page or a Config file URL.
- Check for spaces, line breaks, or quotation marks at the beginning or end. Make sure the parameters after
?are complete. - Ask your service provider to confirm that the response format works with Shadowrocket and actually includes usable entries.
- If you need to share response content for troubleshooting, remove sensitive information such as the subscription URL, token, and password first. Don’t post the full subscription publicly.
Update via Proxy: Change the request path only when needed
Update via Proxy under Settings → Subscribe controls whether subscription updates use a proxy connection. It addresses a different issue from Update on Open: the former controls how update requests are sent, while the latter controls when the app attempts an update. Using a proxy for updates won’t fix an invalid token or turn a login page into a server list.
- Direct updates work: Keep the current settings; there’s no need to change Global Routing, DNS, and Config just to update a subscription.
- The current network can’t reach the subscription URL: First connect using a server that already works. Then try enabling Update via Proxy and update the target subscription on its own.
- No working connection: Turning on Update via Proxy by itself won’t create a working proxy connection. Restore an existing connection first, or update on a network that can reach the subscription URL.
- Still failing after the change: Note whether the error changed. If it’s still 401 or 403, check permissions first rather than continuing to switch request paths.
Change one variable at a time. For example, keep the subscription URL unchanged and retry on another network first. Then check the proxy update setting. This makes it easier to see what affected the result and restore the last working configuration.
FAQ: Update frequency and connection checks
Do I still need to refresh manually if automatic updates are enabled?
You don’t need to refresh repeatedly during normal use. If your service provider announces a change, the network isn’t ready when you open the app, or you want to check a group’s status, refresh once from Home and wait for the result.
The update succeeded. Why didn’t the server count increase?
An update syncs the current server content; it doesn’t guarantee more entries. Check the names, addresses, and ports of entries that were expected to change. If the server content hasn’t changed, the count staying the same is expected.
I can’t connect after refreshing. Should I add the subscription again?
First, check the selected server on Home and run Connectivity Test. If the test fails, check that entry’s connection parameters and the status of your existing service. If the test succeeds but access to a specific destination still fails, check Global Routing and Config. Don’t delete the subscription right away.
Can I refresh automatically every few seconds?
Update on Open isn’t a timer that runs every few seconds. Update when needed; frequent requests may trigger a 429 response. If the content hasn’t changed, repeatedly refreshing won’t keep an established connection active.
Does buying Shadowrocket include a subscription?
Buying the app doesn’t include a service plan. Shadowrocket is a paid app for Apple platforms, available exclusively from the App Store. Import a subscription for a service you already have; buying the app doesn’t automatically add a server list.