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

Learn how to refresh subscriptions manually, what Update on Open does, and how to troubleshoot expired links, timeouts, and invalid formats.

At a Glance

If you already have a provider and subscription, start by refreshing it manually from Home and checking the result. Then enable Settings → Subscribe → Update on Open if needed. When an update fails, check link authorization, the network request, and content parsing in that order. Don’t delete existing groups before troubleshooting. This guide covers the refresh controls, the limits of automatic updates, and ways to diagnose problems while keeping your existing setup.

What Subscription Updates and Connection Tests Check

Updating a Shadowrocket subscription means requesting the saved subscription URL again and importing the returned server entries into the app. It does not update Shadowrocket itself, and it is not a connection test. Whether a server can connect also depends on its settings, your network, and the status of your service.

The subscription URL is the request endpoint; the server entries shown under Home are the result; and the selected configuration in Config covers settings such as rules. Updating a server subscription does not sync all Config content. Likewise, changing Global Routing does not fetch the subscription again. Identify what each action affects to pinpoint where a problem occurs.

Read the subscription URL Send the network request Receive the response Parse the server entries Check the list

You can check for changes in the list only after the request and parsing are complete. If an update succeeds but the names and count stay the same, the remote content may simply be unchanged. Seeing old entries still there does not, by itself, prove that the request succeeded. Check the app’s update result against the current entries listed by your provider.

Manually Refresh an Existing Subscription from Home

For an initial check, refresh manually from Home. Observe the result of one complete operation, and avoid changing networks, editing rules, and refreshing the subscription all at once. This guide uses the English interface labels; button locations and exact messages may vary with what the app currently displays.

  1. Check the Group

    Open Home and find your subscription group. Check its name and existing entries first so you don’t mistake an individually added server for a subscription.

  2. Check the URL

    Open the subscription’s edit screen and check the URL. Don’t change the domain, path, or query parameters. You can return to Home when you’re done; there’s no need to delete the group just to test it.

  3. Refresh the Subscription

    On Home, pull down from the top of the list and release to refresh. If you have multiple subscriptions, check the result for each group separately. Success for one does not mean they all updated successfully.

  4. Check the Result

    Wait for the refresh to finish and note the message. Then expand the target group and check its entries and count. If an error appears, keep the existing entries and original message, then troubleshoot using the categories below.

  5. Test the Connection Separately

    After confirming the update is complete, select one of your working servers and test the connection. If the list updated but the connection fails, check the server settings, service status, or network path.

If you haven’t added a subscription yet, tap “+” in the top-right corner of Home, choose Subscribe under Type, paste in a subscription URL you already have, and save it. Adding a subscription and refreshing an existing one are separate actions. When troubleshooting, don’t keep adding the same URL; doing so can create multiple groups with the same name.

What Update on Open Does—and What It Doesn’t

Go to Settings → Subscribe and find Update on Open. When enabled, the app attempts to refresh subscriptions when opened, reducing the need to refresh manually each time. It does not run background checks on a fixed schedule, nor does it make the local list update immediately whenever remote content changes.

Don’t assume a request started just because the list looks a certain way after returning from the background. The app’s state at the time matters, so check the actual update result. To see whether a URL can be fetched right now, refresh manually from Home; this is easier to observe than repeatedly switching between the foreground and background.

Home
Pull down to refresh manually and see the result of a single request
Update on Open
The update-on-open option in Settings → Subscribe
On Demand
On-demand connection settings—not a subscription update switch

Settings → On Demand controls on-demand connection behavior. It is separate from fetching a subscription list. Enabling On Demand does not replace Update on Open, and enabling Update on Open does not automatically establish a connection. When troubleshooting automatic updates, first confirm that a manual refresh works, then check the setting.

Expired or Invalid Link: Check the URL and Authorization

Subscription URLs often include parameters used to identify the user. An incomplete copy, an outdated URL, or credentials reset by the server can all cause a fetch to fail. The example below shows URL structure only; it is not a real service address and cannot be used to connect.

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

Check the complete URL, not just the domain. In the example, ?token=xxxx shows where a query parameter goes. Real URLs may use different paths and parameter names; don’t modify yours to match this example. In particular, check that copying didn’t add spaces, line breaks, quotation marks, or punctuation from a chat message.

What to CheckWhat You May FindWhat to Do
Full URLThe domain is correct, but the path or parameters are missingCopy the complete URL again from your subscription management page.
Access CredentialsThe old URL fails, and the server has issued a new oneVerify the new URL, replace it in the existing subscription, and refresh manually.
HTTP 401The response requires authentication or rejects the current credentialsConfirm that the URL is still authorized. Changing rules won’t fix invalid credentials.
HTTP 403The server denies accessAsk your provider to confirm your access permissions and any restrictions.
HTTP 404The resource at the requested path can’t be foundCheck whether the path or URL has changed; don’t assume the network is down.

Use an HTTP status code only if it appears in an actual message or diagnostic. Not every “update failed” error means the URL has expired. Being able to open a website’s homepage in a browser doesn’t prove the subscription URL is valid: the homepage and subscription endpoint are different resources and may have different access requirements.

Timeouts and Connection Failures: Check Each Request Stage

Keep the original network error message whenever possible. The English descriptions below may appear in system network errors; the language and wording depend on the message shown by the app, and the same text won’t appear for every failure. Troubleshooting the stage where the error occurred is more effective than changing several settings at once.

Error: The request timed out.

Why it happens and what to do: The request did not finish within the allotted time. The issue may be with your network or the remote server’s response. First, confirm your current network is working, then try one manual refresh on another available network and compare the results.

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

Why it happens and what to do: The subscription domain could not be resolved. Check the domain spelling in the URL, then check whether DNS resolution is working on your current network. Don’t replace the hostname with a guessed IP address.

Error: Could not connect to the server.

Why it happens and what to do: A connection to the target server could not be established. Check the port in the URL and the status of the target service. Keep the original URL and ask your provider whether the endpoint is reachable.

For example, an HTTPS URL without an explicit port usually uses 443. If the URL specifies a port, the request uses that port instead. This port belongs to the subscription endpoint and may differ from the connection port used by a server entry. Don’t change every server port to 443 to fix subscription updates.

Proxy, Direct, Config, and Scene under Global Routing affect routing behavior; they are not subscription repair controls. If you need to change routing for a test, note the original setting, change one thing at a time, and restore it afterward. Rewriting the entire Config just because a subscription update failed adds more variables to troubleshoot.

Invalid Format or Empty List: Check the Content After the Request

Receiving a response doesn’t mean it contains a subscription that can be parsed. The endpoint may return a sign-in page, an error message, no content, or data that isn’t compatible with the import method. If the network is working but the list has no usable entries, check the response content type next instead of making more network changes.

What You SeeWhat to DistinguishNext Step
A Web Page Is ReturnedThe management page URL was copied, or the request was redirected to a sign-in pageGet the subscription URL from your management page; don’t use the page URL instead.
The Response Is EmptyThe endpoint returned no entries, or no content is available under the current authorizationAsk your provider what entries this URL should return at this time.
A Parsing Error AppearsThe response format, entry settings, or protocol content isn’t compatibleConfirm the subscription is intended for Shadowrocket, and keep the error message after removing sensitive information.
Fewer Entries After an UpdateThe remote list may have changed; entries aren’t necessarily missing locallyCheck your provider’s current list and confirm how many entries you should expect.
Entries Updated but Won’t ConnectFetching a subscription successfully and having a working server are separate thingsCheck the selected entry’s settings, service status, and connection logs.

Don’t manually extract, combine, or re-encode a response just because it “looks like encoded text.” Doing so may corrupt the original data and make further troubleshooting harder. If you contact your provider, share when it happened, the network type, the error message, and whether you can reproduce it manually. Share full subscription credentials only through the provider’s designated private channel.

After Recovery: Update First, Then Connect

After fixing the issue, verify the same steps in order: refresh manually from Home, check the group entries, select one of your servers and test the connection, then enable or restore Update on Open if needed. Keeping this order separates subscription endpoint problems from connection problems and prevents an old list from being mistaken for a new result.

  1. Check the update result: The refresh finished without a new error message, and the target group contains the expected entries.
  2. Check the selected entry: The remote list may rename or remove entries. Check your current selection again instead of relying on what you selected before.
  3. Check the rules: Updating a subscription doesn’t replace checking Config. Current settings still affect how connections behave.
  4. Check automatic updates: Once manual updates work reliably, enable or keep Settings → Subscribe → Update on Open.
  5. Protect your privacy: Before sharing troubleshooting screenshots, hide access parameters in the URL and any other credentials.

Shadowrocket is a closed-source commercial app for Apple platforms, primarily used on iPhone and iPad. The App Store is the only way to get it. The app purchase and your subscription service are managed separately; buying the app again won’t fix an expired subscription URL. See the App Store page for system requirements and purchase availability.

Get ShadowrocketVerify the official App Store listing