This guide is for users who already have a subscription or connection details from their own provider. First, distinguish server subscriptions added with Subscribe from rule configurations managed in Config. Then choose the right method: paste a subscription, enter details with Add Server, scan a QR code, or import from the clipboard. Finally, check the update result and Global Routing. QR codes and the clipboard are just input methods; successful import depends on the content format.
Before You Import: Server Subscriptions vs. Config Files
After opening Shadowrocket, check existing servers in Home, then open Config to view the current rule configuration. Home manages connectable servers and subscription groups; Config manages rule configuration files. Both can retrieve content from a URL, but a URL starting with https:// does not tell you what it is for.
When looking for Subscribe in Config, first check what the link actually returns. Import a server list with Subscribe; manage a configuration file containing routing rules in Config. To add a server subscription, tap “+” in the upper-right corner of Home, open Add Server, and set Type to Subscribe. The remote configuration option in Config is not for server subscriptions.
| What you have | Where to add it | What to check |
|---|---|---|
| Server subscription URL | Home → + → Type → Subscribe | A subscription group and server entries appear in Home |
| Details for a single server | Home → + → Add Server | A manually added entry appears in Home |
| Protocol-sharing QR code | Home → QR scanner | The detected type and details appear |
| Protocol-sharing text | Copy it, then import from the clipboard | An add prompt or parsed entry appears |
| Rule configuration file URL | Remote configuration in Config | The file appears in Config; it is not a server subscription |
Before proceeding, make sure the details come from your own provider. Shadowrocket is a closed-source, paid app for iPhone and iPad, available exclusively through the App Store. Buying the app does not include a connection subscription or connection details. Check the App Store page for system requirements.
Method 1: Add and Update a Subscription with Subscribe
Open the add form from Home, set Type to Subscribe, paste the complete subscription URL into URL, and enter a name you can recognize. The saved subscription retains its source URL and retrieves the server list from that address when updated, making this method suitable when your provider changes server details over time.
-
Copy the complete URL
Copy the subscription URL from your provider’s own website, including any query parameters after
?. Make sure there are no spaces, line breaks, or punctuation added at either end. -
Choose the subscription type
Go to Home → +, open the Add Server form, tap Type, and select Subscribe. Don’t leave a different protocol type selected from a previous entry.
-
Paste and save
Paste the complete URL into URL, add a recognizable note, and save. Once the initial fetch finishes, return to Home and check that servers appear under the subscription group.
-
Check the update
Pull down on the subscription list in Home to refresh it and check whether the subscription updates. If an error appears, keep the existing entry and check the URL, network, and provider status first. Don’t repeatedly delete and recreate it.
A subscription URL might look like https://example.com/sub?token=xxxx; this is a dummy value that cannot connect. A real URL’s token may grant access to the subscription. If you share a screenshot, hide the entire URL, not just the note.
Method 2: Enter Details Manually with Add Server
Go to Home → + to open Add Server, select Type, then fill in the fields using the details provided by your provider. The selected type determines which fields are needed: the password and encryption method for Shadowsocks, identity details for VMess or VLESS, and the password and TLS settings for Trojan are not interchangeable. Don’t infer other fields from the protocol name when the required details aren’t provided.
Basic connection details
- Type
- Select the protocol shown in the provided details
- Address
- Enter the server hostname or IP address, without a webpage path
- Port
- Enter the provided port, such as 443; not all services use 443
- Password
- Enter a password only if the selected protocol requires one
Don’t paste the full subscription URL into Address or guess the port from how the URL looks.
Check additional parameters
- TLS
- Enable as required by the server; the port number alone doesn’t determine this
- SNI
- Use the TLS server name specified by your provider
- Host
- Fill this in only when required by the transport configuration
- Path
- Keep the full path provided by your provider, including its capitalization
Address, SNI, and Host serve different purposes. Don’t swap them just because their values look similar.
After saving, select the entry in Home and try connecting. If the basic details are correct but the TLS handshake fails, check the server name, certificate, and device time. Disabling certificate verification is not a general fix. WireGuard also requires keys and Peer configuration, so a standard password form does not apply; Hysteria2 and other types likewise need their own complete parameters.
- Manually added entries are usually separate from subscription groups, so refreshing a subscription won’t update them automatically.
- If your provider changes the password, port, or transport settings, edit the entry or import the updated sharing details they provide.
- If you already have a complete protocol-sharing link, parse it first and check each field. This can help prevent errors when entering long passwords or paths.
Methods 3 and 4: Scan a QR Code or Import from the Clipboard
Open the QR scanner from Home, point the camera at a protocol-sharing QR code you already have, and allow camera access if prompted. After it’s scanned, check Type, Address, and Port before saving. A QR code may contain a server-sharing link or just a webpage URL; scanning a webpage does not mean you have a connectable server configuration.
Copy the complete sharing text from its source, return to Shadowrocket, and follow the clipboard detection or add prompt. If iOS asks for permission to paste, allow it after confirming the source. If no prompt appears, make sure you copied a plain-text link—not an image or title, or content truncated by a messaging app.
| Prefix or format | What it indicates | What to check when importing |
|---|---|---|
ss:// | Shadowsocks sharing link | Keep the complete encoded content, port, and additional parameters |
vmess:// | VMess sharing link | Don’t truncate the encoded section or insert spaces |
vless:// | VLESS sharing link | Keep the identity details and query parameters |
trojan:// | Trojan sharing link | Check the password, TLS server name, and transport parameters |
https:// URL | Could be a subscription, configuration file, or regular webpage | Check what it’s for before choosing Subscribe or Config |
These prefixes help identify a format; they are not working connection examples. QR codes and the clipboard cannot turn arbitrary text into a valid configuration. Whether a link’s transport extensions are fully supported depends on the fields actually detected in the form. If fields are missing after import, check the source rather than guessing values.
- If scanning does nothing, check camera permissions, make sure the QR code is complete, and try reducing screen glare or improving image clarity.
- If clipboard detection does nothing, copy the original sharing text again and remove any explanatory text around the link, but don’t edit the link itself.
- If multiple entries appear for import, check each name and server address to make sure the same item hasn’t been imported more than once.
After Importing: Choose Global Routing and Test the Connection
Select the imported server in Home, then open Global Routing to check the current mode. Importing determines where to connect; Global Routing determines how requests handled by Shadowrocket are routed. If you have a valid rule configuration, you can select Config. If a rule refers to a policy name that doesn’t exist, check the configuration in Config instead of trying to fix it by repeatedly importing the subscription.
Config
RecommendedRequests are handled according to the active configuration’s rules. The destination depends on the matching rule and its policy; it isn’t necessarily a fixed setup where some domains use a proxy and everything else connects directly.
Best for: everyday use after checking the rules and policy names
Proxy
Routes traffic handled by the app into the tunnel and through the proxy path. Use this to check whether routing rules are causing differences in access.
Best for: briefly checking the difference between rule-based routing and the proxy path
Direct
Routes requests handled by the app directly. After switching to this mode, being able to open a webpage does not prove that the selected proxy server is working.
Best for: comparing direct access on your current network
When prompted on the first connection, allow Shadowrocket to add a VPN configuration. Then run Connectivity Test in Home and visit the services you need. Test results reflect the target and network conditions at that moment; they don’t verify every real-world request. If the test gets a response but a particular domain has access issues, see the connection troubleshooting guide to check DNS, rule matches, and TLS errors.
- Scene in Global Routing lets you choose behavior based on configured scenes; it is not a subscription import method.
- Settings → On Demand manages when connections start or stop based on conditions; it does not replace updating the server list with Subscribe.
- In Config,
DOMAIN-SUFFIX,GEOIP,IP-CIDR, andFINALare rule keywords, not values to enter in Add Server’s Address field.
Troubleshooting Subscription Updates and Import Errors
Return to Home and identify which step failed before changing settings. A failed subscription fetch, a parsing error, and a failed server connection are different problems. If an earlier step hasn’t completed, changing SNI or Global Routing at a later stage usually won’t fix it.
Subscription updates keep timing out. What should I check first?
First, check whether an existing connection works in Home, then make sure the subscription URL is complete. If the subscription URL needs an existing proxy to be reached, check Update via Proxy under Settings → Subscribe. This option requires a working proxy path; it cannot establish the first connection by itself.
I got a 401 or 403 error. Should I import it again?
Check whether the token in the URL was truncated, then check your provider account for subscription access and whether the link has been reset. A 401 or 403 is an access status returned by the server. Repeatedly importing the same invalid URL usually won’t change the result.
The content was fetched, but no servers appeared. Why?
Check whether you copied an account webpage, login page, or rule configuration URL. If the response is a webpage rather than a recognizable server list, get the correct subscription URL from your own provider. Don’t paste webpage source into Add Server.
Why didn’t my manually added entry update with the subscription?
Check in Home whether the entry belongs to a subscription group. A manually added entry or a server imported from a single sharing link usually isn’t linked to subscription updates. Edit it manually or import the updated details from your provider.
The entries changed after an update. Should I reinstall the app?
First, check the subscription group and currently selected entry, then select a valid server again. The source may have changed the subscription content; reinstalling won’t fix incorrect details returned by the source. When troubleshooting, note the error text, the step where it occurred, and the network conditions. Hide passwords, keys, and subscription tokens.
Once you’ve finished troubleshooting, keep track of each configuration’s source and choose an update routine that works for you. A full subscription keeps server details in sync; manual entry gives you control over a single server; scanning and clipboard import reduce typing. You can use all four methods, but make sure you know whether each entry is still linked to a subscription source.