This guide is for users who already have a subscription URL from their own provider. First, find the subscription group in Home, then refresh it manually. To check for updates when you open the app, go to Settings → Subscribe and review Update on Open. If an update fails, check the URL, network request, and response format in that order. Updating a subscription refreshes its connection entries; it does not update rules in Config or renew a service.
What a Subscription Update Changes—and What It Doesn’t
In Shadowrocket, a subscription is a way for the app to retrieve server entries from a URL. When your provider changes an address, port, or other connection setting, the app needs to request the subscription again to get the updated details. Manually added entries and subscription groups come from different sources. Seeing them on the same screen does not mean a refresh will update every entry.
First, understand the roles of Home, Config, and Settings. Home is where you view and select connection entries; Config is for managing configuration files; Settings controls app behavior. This guide covers refreshing subscription entries in Home, not updating remote configuration files in Config.
For example, DOMAIN-SUFFIX,example.com,DIRECT in a configuration is a domain suffix rule. Refreshing a server subscription will not automatically change that rule to a different policy. The service period and remaining usage are also determined by your existing provider; refreshing does not add data or extend an account’s validity.
Manual Update: Refresh from Home and Check the Result
Refresh manually after importing a subscription for the first time, when your provider notifies you of connection changes, or when entries appear out of date. Note the name of the currently selected entry before you begin. Don’t delete the existing subscription yet, in case the request fails and you need the original details.
-
Check the Group
Open Home and find your subscription group. If the list contains only manually added entries, check whether you have imported a subscription. An individual entry with no subscription source cannot get updated settings through a subscription refresh.
-
Check the URL
Open the subscription entry’s edit screen and make sure the URL is complete. To add a subscription for the first time, tap “+” in the upper-right corner of Home, set Type to Subscribe, enter your own subscription URL, and save. Don’t use your provider’s login page URL as the subscription URL.
-
Pull to Refresh
Return to Home, pull down from the top of the list, and release to refresh the subscription. Wait for the request to finish before taking another action. If the list is long, scroll to the top first so you don’t mistake ordinary scrolling for a refresh.
-
Check the Result
Look for an error message, then check the names and number of entries in the group. If your provider has specifically said that an entry was renamed or removed, use that change as a reference. An unchanged list alone does not prove the update failed.
-
Test the Connection
Check which entry is selected, connect, and test the destination you need to reach. A successful refresh means the data was retrieved and parsed; it does not prove that every server is available.
Subscription URLs Are SensitiveA token in the URL may act as an access credential. Contact your provider through a private support channel. Before sharing screenshots or error logs, hide the full URL, token, password, and personal identifiers.
Update on Open: When It Runs
Go to Settings → Subscribe and check Update on Open. When enabled, the app triggers a subscription update on opening, as specified by this setting. It does not mean the system will keep polling while the app remains closed, or that a subscription refreshes at fixed intervals just because the VPN connection stays active.
Update on Open and Update via Proxy address different settings. The former determines when an update is triggered; the latter determines whether the update request uses a proxy path. Before enabling automatic updates, confirm that the same subscription updates successfully when refreshed manually. This helps avoid mistaking an incorrect URL for an automatic trigger problem.
- Setting: Settings → Subscribe → Update on Open controls updates when you open the app.
- Network path: Settings → Subscribe → Update via Proxy changes how the subscription request is routed; it cannot fix an expired URL.
- How to check: After enabling it, check the request result the next time you open the app. A tunnel that remains connected in the background does not confirm that the subscription refreshed.
- If it fails: Return to Home and refresh manually. Note the exact message, then troubleshoot in the order below.
Rapidly switching between apps is not a reliable way to diagnose the issue. Network requests take time and may be subject to your provider’s rate limits. Change one setting at a time, wait for the request to finish, and compare the results to see which change made a difference.
Check the Request Path Before Trying Update via Proxy
A subscription update has four stages. The app can update the list only after it receives content it can recognize. So “the page opens,” “the VPN is connected,” and “the subscription refreshed successfully” are three different things.
First, make sure your current Wi-Fi or cellular connection is working and there isn’t a network sign-in page waiting for you. If the subscription domain can’t be reached directly on your current network, and an existing connection is working, try Settings → Subscribe → Update via Proxy. Then return to Home and refresh manually to compare the results.
- Before enabling Update via Proxy, make sure the currently selected existing entry can connect. If that connection is already unavailable, using it to update the subscription will usually fail too.
- If the update fails with this setting on but succeeds with it off, keep the setting that completes the request and check whether the selected connection can reach the subscription domain.
- Proxy, Direct, Config, and Scene in Global Routing control the overall routing mode; they are not subscription update frequency settings. Don’t change all your routing settings just to refresh a subscription once.
- On Demand triggers connections based on conditions; it does not poll subscriptions. Changing Settings → On Demand is not a substitute for checking the update settings in Subscribe.
Switching between Wi-Fi and cellular is a useful comparison test. If the same URL fails on only one network, first check that network’s access conditions. If both networks return the same authorization error, investigate the URL and service status instead.
Subscription Update Failed: Troubleshoot Timeouts, Authorization, URLs, and Formats
An error may appear in an alert or in the related request log. Its wording can vary depending on the system language and the source of the response. The examples below are possible English error messages or HTTP status lines; they may not appear in an alert exactly as shown. When reporting an issue, include the exact text you see.
The request timed out.
Cause: The request did not finish before the timeout. The issue may be related to your network, the request path, or the server’s response.
Fix: Switch networks once and try again. If an existing proxy connection is available, compare the results with Update via Proxy on and off. Don’t keep refreshing rapidly.
401 Unauthorized
Cause: The server did not accept the credentials for this request. The subscription token may have expired or been reset.
Fix: Get the subscription URL from your provider again, replace the entire URL, and retry. Switching networks alone will not fix invalid credentials.
403 Forbidden
Cause: The server refused access, possibly because of your account status, access policies, or restrictions on the request’s source.
Fix: Ask your provider about the subscription’s access requirements and share an error log with sensitive information hidden. Don’t assume this means the app failed to parse the response.
404 Not Found
Cause: The server could not find a resource at the requested URL. A common cause is an incomplete path or a changed endpoint.
Fix: Check the URL path and query parameters. Copy your complete subscription URL again, and don’t assemble it manually or remove parameters.
If there are no network errors but the update returns no usable entries, check whether the response uses a subscription format supported by the app. A login page, expiration notice, or network sign-in page may load successfully, but it is not a server list. A page opening in a browser only shows that some content was retrieved; it doesn’t mean that content can be used in Subscribe.
- URL integrity: Check for extra spaces, line breaks, or quotation marks, and make sure no query parameters are missing.
- Correct endpoint: Make sure you have your own client subscription URL, not an account management page, web preview, or remote configuration URL.
- Format compatibility: Ask your provider whether the endpoint works with Shadowrocket and whether the response contains valid connection entries.
- Keep it secure: Don’t submit your full URL to an unfamiliar online conversion site. First, ask the provider of the original details about the format.
Common Questions and How to Verify an Update
After an update, check separately whether data was retrieved, whether the list looks as expected, and whether the selected entry can connect. A failed attempt to open one webpage does not prove the entire subscription request failed. Use the questions below to narrow down the issue.
The update says it finished, but none of the entries changed. Did it fail?
Not necessarily. The local list may remain unchanged if the remote content hasn’t changed. First, check that there was no error message, then compare against an entry your provider has confirmed was changed. Don’t repeatedly delete and reimport the subscription just to change the entry count.
Why refresh manually if Update on Open is enabled?
Manual refresh lets you fetch the current content on demand and see any errors right away. Update on Open only controls when the request is triggered; it doesn’t guarantee the request will finish. If there’s a problem, pull down to refresh in Home and note the result before troubleshooting.
An entry I had selected disappeared after the update. What should I do?
First, check whether it was removed or renamed remotely. Select an entry that is still available in the current group, then test the connection. Entries created by a subscription are not guaranteed to remain indefinitely. If you need to manage entries manually, keep their source clear.
The update succeeded, but I still can’t connect. What should I check next?
Check the selected entry in Home, then review the connection status and Global Routing. If you’re using the Config mode, check the matching rules and policies as well; updating a subscription won’t fix an incorrect rule selection. For connection issues, continue with the troubleshooting steps on the FAQ page.
Once you’ve finished troubleshooting, keep the update path that worked and note the network type, exact error message, and steps you tried. These details make it easier to identify the issue than a report that says only “refresh won’t work.” For connection issues, see the troubleshooting guide in the FAQ.
Check the App Purchase and Subscription Service SeparatelyThe app purchase is separate from any service plan. Shadowrocket is a closed-source commercial app available only through the App Store on Apple platforms, primarily for iPhone and iPad. The developer is Shadow Launch Technology Limited, and the app ID is 932747118. Check the App Store listing for pricing, system requirements, and purchase terms. This guide covers managing subscription details you already have.