At a Glance

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.

Home
Find the Subscription Group and Review Updated Entries
Config
Manage Configuration Files and Routing Rules
Settings
Set Subscription Update Behavior in Subscribe

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.

  1. 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.

  2. 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.

  3. 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.

  4. 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.

  5. 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 Sensitive

A 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.

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.

Read the subscription URL Establish a network connection Retrieve the response Parse the entries Update the local list

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.

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.

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 Separately

The 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.