At a glance

If no nodes appear after updating a Shadowrocket subscription, keep the existing entries and distinguish between three issues: a failed request, an unexpected response, or a list that isn’t being displayed. This guide assumes you already have your own provider and subscription. Check the URL, response, network, and update timing in order, then verify the result with one controlled update.

1. Check whether the list is empty or the update failed

A subscription update has several steps: the app reads the saved URL, requests the subscription address, receives the response, and displays recognized node entries in Home. A problem at any step can look like “no new nodes,” but each cause calls for a different fix. Don’t delete the entire subscription right away, and don’t treat the connection toggle as proof that an update succeeded.

Read URL Request subscription Receive response Parse entries Display list
  1. Go back to Home, clear any search, and expand the relevant subscription group to rule out a search filter or collapsed group hiding the list.
  2. Note whether the update showed an error, whether the old nodes are still there, and whether one group or all groups are empty.
  3. Check which item you’re updating. Config manages configurations and rules; the subscription node list in Home is what this guide covers. Updating a configuration file is not the same as updating a node subscription.
  4. Keep a private backup of the subscription name and original URL. If you have a working connection, keep it in place so you don’t lose your only available test path.

“The old list is still there, but nothing new appeared” points more toward an incomplete update or unchanged remote content. “A group went empty after the update” makes the response and account status the priority. If “none of the lists are visible,” first check what Home is displaying. These symptoms help determine what to check next; they don’t establish the cause on their own.

2. Check the full URL—not an account page

A subscription URL lets the app retrieve configuration content. It is not an account home page, order page, or browser login page. Copy the Shadowrocket subscription URL again from your own provider account, then compare it character by character with the URL saved in the app. A long-looking link can still be incomplete; even a missing query parameter can cause authentication to fail.

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

This is a format example only and cannot be used to connect. https:// indicates the access method, example.com is a sample domain, /sub is a sample path, and token=xxxx is a fake credential. Real services may use different paths, parameter names, and authentication methods. Don’t manually alter an existing URL based on this example.

3. Check the response: a page loading in a browser doesn’t mean it contains parseable nodes

A page opening successfully in a browser only confirms that the browser completed that particular request. The browser may already have a login cookie, or it may show a CAPTCHA page; Shadowrocket may not have the same browser session. Even with an HTTP status of 200 OK, the response could be a login page, an error message, or an empty body.

200
A successful HTTP request still needs a response body with parseable entries
401 / 403
Check credentials and server-side access restrictions separately
429
If requests are rate-limited, wait as directed by the server before trying again

Bottom line: check the response body before changing parsing-related settings

If the response is a login page or has an empty body, switching node protocols won’t restore missing entries. First ask your provider to confirm that the subscription endpoint returns valid content for Shadowrocket.

The following standard HTTP status messages may appear in request details, server logs, or error messages. They may not appear in the app in exactly this form every time. Use the status you actually see, and don’t infer a specific status code from an empty list alone.

HTTP 401 Unauthorized

Cause and fix: The request is missing valid credentials. Copy the current full subscription URL from your own account and check whether the token was reset.

HTTP 403 Forbidden

Cause and fix: The server rejected the request. Check your account permissions and endpoint requirements, and ask your provider to investigate any access restrictions. Repeatedly refreshing won’t resolve the issue.

HTTP 404 Not Found

Cause and fix: The requested path doesn’t exist or has changed. Check that you haven’t copied an old URL or missed part of the path, and use the subscription URL currently provided in your account.

HTTP 429 Too Many Requests

Cause and fix: The request hit a rate limit. Stop updating repeatedly. If the response includes Retry-After, wait as directed; otherwise, ask your provider how long to wait before retrying.

If your provider confirms that the response contains entries but the app still can’t parse them, check the selected output format. A subscription isn’t just any text file: a node list, a full configuration, and a webpage all have different structures. Shadowsocks, VMess, VLESS, Trojan, Hysteria2, and WireGuard also use different parameter structures; renaming incompatible content won’t make it a valid subscription.

4. Check the update route: test direct access and Update via Proxy separately

The route used for node connections and the route used to fetch a subscription URL need to be checked separately. A working node doesn’t mean the subscription domain is reachable, and a successful refresh doesn’t mean every node in the subscription can connect. First update once on your current network and note the result. Then change one condition and try again, so you can identify the cause instead of changing the network, resetting the URL, and adjusting settings all at once.

  1. Confirm the network is online: If your Wi-Fi requires a web sign-in, complete it first. Also check that the system date and time are correct; an incorrect clock can interfere with HTTPS certificate validation.
  2. Check the update method: Go to Settings → Subscribe and check Update via Proxy. The available options may vary; follow what you see in the app.
  3. Test updates via proxy: Enable Update via Proxy for a test only if you already have a working node and an established connection. An empty list can’t provide a working proxy by itself.
  4. Test another network: If possible, switch to cellular or another trusted Wi-Fi network and update the same subscription once. Check whether the same error occurs.
  5. Undo unnecessary changes: After testing, keep only settings that help explain the result. Don’t leave unrelated routing changes in place just to refresh a subscription.

Proxy, Direct, Config, and Scene under Global Routing control connections and routing choices; they can’t fix an invalid token or an empty response. On Demand triggers connections based on conditions; it doesn’t generate subscription content. Don’t treat changes to Global Routing or Settings → On Demand as a universal fix for subscription errors.

5. Check your account and update timing, then run one controlled update

After resetting a token, changing account permissions, or during server maintenance, subscription content may not be ready yet. The client can’t control when the server generates a new list, and an update completing doesn’t guarantee that your account contains usable entries. Check your account and confirm the status with your provider. There’s no universal wait time.

If you need to ask for help, note when the issue occurred, your network type, whether Update via Proxy was enabled, the exact error, whether the old list remained, and any recent account changes. Don’t share your PrivateKey, password, or full token. Troubleshooting needs the symptoms and conditions—not exposed credentials.

6. Common questions about an empty subscription

The list is empty after an update. Should I delete and re-add the subscription?

Not as a first step. Clear any search, expand the group, and check the saved URL and update error. Consider adding it again only after backing up the original URL and confirming that the remote endpoint returns valid content. Deleting the subscription won’t fix an empty server response.

The same URL opens in my browser. Why are there still no nodes in the app?

Check whether the browser shows node content or an account webpage, and whether it relies on a logged-in session. Ask your provider to check the actual response body and output format returned to the app. A page loading in a browser doesn’t prove the URL is a valid subscription endpoint.

I’m connected through an old node, but the subscription update still times out. What should I do?

Go to Settings → Subscribe and check Update via Proxy, then confirm that your current connection is working. Change only one condition at a time: the update method or the network. If both routes time out, note when it happened and check the subscription endpoint status.

The nodes are back, but Connectivity Test still fails. Is this a parsing error?

If entries are visible in the list, at least some content has been parsed. Next, check the node address, port, authentication parameters, and network reachability. Don’t keep blaming an empty subscription for a connectivity error, and don’t change every port to 443 without a reason.

Why didn’t nodes appear automatically after I bought Shadowrocket?

Buying the client doesn’t include a service plan. Shadowrocket is a closed-source commercial app; an App Store purchase gives you the right to use the client. The subscription import and troubleshooting steps in this guide assume you already have your own provider and subscription.