This guide walks through adding a subscription URL you already have to Shadowrocket on iPhone, saving it, and refreshing the server list. It also explains how to tell an import problem from a connection problem, and what to check when the URL is rejected or the list stays empty. You’ll use Home → + → Type → Subscribe, then verify the result before changing any other settings.
1. Before You Add the Subscription
A subscription is a URL that lets Shadowrocket request configuration details from your existing service. It is different from an individual server entry, which is usually added with details such as a server address, port, and authentication parameters. If you have a single server’s connection details rather than a subscription URL, adding it as a subscription will not turn those details into a subscription.
This walkthrough assumes you already have your own service and a subscription URL intended for use with Shadowrocket. Shadowrocket is a closed-source commercial app, and purchasing the app does not include a server, subscription, or service plan. This guide explains how to add information you already have; it does not provide, sell, or recommend servers or subscriptions.
Before opening the app, copy the subscription URL from the subscription or configuration section of your existing service. Use the service’s copy function when available. Do not substitute a sign-in address, account homepage, payment page, or the address currently shown in a browser’s address bar. Those pages may open normally in a browser but still not return configuration data that Shadowrocket can import.
- Keep the complete URL: Copy from the first character through the final character. A missing character, extra space, quotation mark, or line break can prevent a request from working.
- Use the intended format: If your service provides more than one configuration format, select the format intended for Shadowrocket or a compatible client. Do not guess based on a file name or URL ending alone.
- Know what success means: A saved subscription group is not proof that its URL was fetched successfully. Check whether server entries appear after the request completes.
- Keep a working configuration: If Home already contains useful entries, avoid deleting them while adding or testing a new subscription.
2. Add and Save the Subscription in Shadowrocket
On iPhone, open Shadowrocket and go to Home. The exact appearance of the screen can vary with the app’s current interface, but the subscription is added from the add-server flow. Select the subscription type rather than entering a URL into fields intended for a single server. A URL copied from a service’s subscription page is not a server address or a server port.
-
Open Add Server
In Shadowrocket, go to Home and tap the + button in the upper-right corner. This opens the add-server options. If the screen you see is asking for individual server details, check the Type selection before entering anything.
-
Select Subscribe
In the add-server screen, open Type and select Subscribe. Confirm that the form now expects subscription information. Do not put the subscription URL into a single-server Address field, or enter a subscription URL as a server address.
-
Paste the URL
Paste the complete URL provided by your existing service into the subscription URL field. Compare the beginning and end with the original copy, and remove any accidental surrounding quotation marks or spaces. Keep the URL’s query string, including any characters after
?. -
Save the entry
Save the subscription using the control shown in the add-server screen, commonly the upper-right save control. Return to Home and look for the subscription group or its associated entries. Saving stores the subscription information; the list may still need to be refreshed to retrieve its contents.
-
Refresh the list
On Home, pull down to refresh the server list and wait for the request to finish. Keep Shadowrocket open while it updates. Check the result or any message shown by the app before repeating the refresh; repeated requests do not fix an incomplete URL or a subscription that is unavailable.
If the app shows a permission prompt for adding a VPN configuration, that prompt is separate from importing a subscription. Follow the iOS system prompt if you intended to enable the connection, then return to Shadowrocket. VPN permission does not verify the URL, fetch subscription contents, or prove that a server will connect.
3. Verify the Import Before Testing a Connection
After refreshing, first check whether the subscription group or server entries are visible on Home. If the group is collapsed, expand it and inspect its contents before concluding that it is empty. If the group is visible but contains no entries, treat that as an import or response issue. If entries are visible but a connection fails, the subscription has at least produced entries; investigate the selected server and connection separately.
Subscription import
- Entry point
- Home → + → Type → Subscribe
- Input
- The complete URL from your existing service
- Success check
- Refresh completes and entries appear on Home
A saved group name alone does not confirm that the latest request returned usable entries.
Single server entry
- Input
- Server address, port, and protocol-specific details
- Example port
443, only when specified by your service- Success check
- Fields match the server details supplied to you
The example port is illustrative; do not assume it is correct for your own server.
Once entries appear, you can select one on Home and test the connection. Keep the import check and the connection check separate: a server can be imported but fail to connect, and a successful connection test does not establish that every destination will work. If no entries appear, focus first on the URL, the response, and the update message rather than changing Global Routing or DNS.
- Entries appear and a connection works: The import and that connection test succeeded under the current conditions. This does not guarantee that every entry or destination will behave the same way.
- Entries appear but a connection fails: Check the selected entry and the status or message shown during the connection attempt. Confirm the service is active and that the entry’s details have not changed.
- The group is present but empty: Expand it, refresh once, and note the exact outcome. If it remains empty, investigate the subscription URL and the response from your existing service.
- No group or entries are visible: Confirm that you saved the subscription under Type → Subscribe, then check Home again. Avoid adding the same URL repeatedly, since duplicate groups make later checks harder.
4. Troubleshoot a Rejected URL or an Empty List
Start with the message shown after saving or refreshing. “The subscription could not be loaded” and “the server does not connect” describe different stages. The first points toward retrieving or parsing subscription data; the second happens after an entry has been selected for a connection attempt. Record the wording and when it appeared so you do not troubleshoot the wrong stage.
Error: Failed to load subscription
Cause and next step: The URL may be incomplete, unavailable, or not a subscription response. Copy it again from the subscription section of your existing service, confirm it is still valid with that service, then refresh from Home.
Error: Invalid URL
Cause and next step: The pasted text may contain a typo, extra characters, or a missing part. Compare the saved value with the original, including characters after ?, and paste the complete address again.
Error: No nodes appear
Cause and next step: The group may be collapsed, the response may contain no supported entries, or the request may not have completed. Expand the group, refresh once, and ask your existing service to confirm that the subscription is active and returns configurations.
Error: Request timed out
Cause and next step: The current network may not reach the subscription endpoint in time. Check that ordinary internet access works, then try once on a different network if available. If the service provides an approved update route or instructions, follow those instructions rather than guessing at a setting.
When checking a URL, do not remove query parameters just because they look unfamiliar. They may identify the subscription or be required by the service. Do not replace them with details from a different account or copy another person’s URL. If you are uncertain whether a URL is still valid, ask the service that issued your own subscription to verify it.
If a subscription update requires an existing connection to reach its endpoint, check whether your service’s instructions specify an update route. Shadowrocket’s available options and labels can depend on the installed app version and configuration. Do not turn on an unrelated routing option just to see whether the list changes; make one documented change at a time, refresh once, and restore the previous value if it does not help.
5. Frequently Asked Questions
Do I need to enter a port for a subscription?
No. A subscription URL is entered using Type → Subscribe; it is not a single-server address-and-port form. A port such as 443 belongs to an individual server entry only when your existing service specifies it.
I saved the subscription, so why is Home still empty?
Saving keeps the subscription entry, but does not by itself confirm that the URL returned configurations. On Home, pull down to refresh, expand the group if it is collapsed, and check the resulting message. If it remains empty, verify the URL and subscription status with the service that issued it.
Should I add the same URL again if the first refresh fails?
Usually not. Check the existing group, copy the URL again only if needed, and refresh that entry. A duplicate group will not correct a rejected URL and can make it harder to identify which entry you are updating.
The servers are listed, but none connect. Is the subscription invalid?
Not necessarily. A visible entry shows that configuration data was imported, while connecting is a separate step. Select an entry, check its status or error message, and confirm the service and server details with your existing provider before changing routing or DNS settings.