Subscribe Is Not Add Server
The “+” at the top right of Home asks for Type first. Get that step wrong and, no matter how carefully you fill the rest, SERVER only gets a dead row—or nothing.
“+” is not a universal inbox
Shadowrocket treats “add a record” as pick a type, then fill the fields. Many people skip Type and paste the provider’s whole block into the first box. The app will not guess whether you hold a subscription, a single node, or a remote config. It only runs the parser you selected. After a wrong pick, failure looks like “the link is bad.” The entry was wrong.
That matches the three-layer model. The second layer can be a list that updates, or a host you typed. Either can put a connectable exit on Home, but the import paths are completely different. Treating them as the same “account and password” is the most common source of an empty list. How the three layers split: The app, the subscription, and the config are not one layer.
This note does not tell you where to buy a subscription, and it does not unpack how each provider encrypts a link. It only helps you decide which Type you should use now, and what the screen is saying when it fails.
The two entries are not asking the same thing
Subscribe takes a subscription URL. The app fetches a node list from that address, and can update it later. You usually never see host and port, and you should not take them apart. Remarks, expiry, and remaining traffic, if the provider sends them, appear under that subscription. They do not become fields you type.
Add Server takes a single node: protocol, address, port, password or key, sometimes extra parameters. It fits self-hosted setups, or a provider that only gave manual fields and no subscription URL. What belongs here is a hostname or IP, not a web link.
A third thing often pasted in the wrong place: a remote config URL. It does not belong on Home’s “+”. It goes into Config. Paste it into Subscribe and the update fails, or you get a row that will not expand. Paste it into Add Server and Host becomes a long string; latency will not measure. How config and subscription divide: A config file is not a subscription.
| What you have | Which entry to use |
|---|---|
| A subscription that starts with https | Set Type to Subscribe. Paste the URL as-is. Do not split it, and do not add spaces. |
| Host + port + password | Set Type to the matching protocol and use Add Server. |
| A single ss / vmess share | Still Add Server or scan. Not Subscribe. |
| A remote config URL | Do not add it here. Add it in Config. |
| A QR code | See whether the code is a subscription or a single node, then pick the matching method. |
Ways to read an empty list
SERVER showing only Add Server means the second layer has not been imported yet. Suspect nothing was added first, then Type not set to Subscribe, then a truncated link, extra note text in front, or an expired URL. Do not change Global Routing first, and do not turn on Proxy. With no exit, switching modes has no comparison value.
A subscription row that opens empty means the app recognized “this is a subscription,” but the fetch returned nothing. The problem is on the provider side: expired, rate-limited, token revoked, or a list that was never meant for Shadowrocket. Changing Type or reinstalling will not fix it. Go back to where you copied it, get a fresh URL, and update—do not add ten identical rows.
A single “node” whose latency will not measure, with http still visible in the remark or address, is usually a subscription URL treated as one server. Delete that row and start again in Subscribe. Leaving it only occupies a line. Connecting it will not turn it into a group of nodes.
Many nodes that all time out usually means Type was right and the far end is down. That is second-layer content failing, not a wrong entry. Update once. If everything still times out, stop spinning on Type.
Why people paste into the wrong place
Provider notes often put “subscription URL,” “node,” “config,” and “QR code” in the same paragraph. Recipients remember only “copy, then paste.” Shadowrocket’s first field also looks like a “paste anything” box. So a Subscribe URL lands in Host, a config URL lands in Subscribe, and a block of single-node fields lands in Remark.
Desktop habit is another reason. On a computer, one import often brings nodes and rules together. On iPhone they must be split. A successful “import subscription” on the desktop does not mean the same text will succeed in Add Server on iPhone. First see whether the text is an address, a set of fields, or a file.
Scanning a QR code does not skip that judgment. The code may be a subscription, a single node, or a config. After the scan, see what appeared on Home and in Config. If you only got a dead row, delete it using the reading above and start over. Do not stack another copy.
Add the same subscription only once
A subscription exists so it can be updated later. The same URL should be added once, then updated on that row. Hitting “+” again and again leaves several expired lists. Home looks full; maybe none of them still work. When troubleshooting, first merge what you are looking at: which rows are subscriptions, which rows are nodes they expanded, and which rows you typed by hand.
Separate “update failed” from “it never worked.” If it never worked, check Type and whether the URL is complete. If it once worked and failed one day, suspect a provider-side change—not that the app suddenly forgot Subscribe. Do not switch to Add Server to tear the link apart, and do not wipe the old list and start blind unless you are sure the local state is unreadable.
A node you typed by hand has no “update.” If the provider changes the port or password, you edit that row or delete and re-enter it. Do not expect Update to repair Add Server. That action belongs to Subscribe.
After adding, look at Home before you flip the switch
The minimum success is not that the switch stays on. It is that SERVER shows an exit you can select. Flip the switch with no node selected and it springs back, or it connects to an empty state that does nothing. That gets misread as “the app is broken.” Select a row, then connect, then see whether the status bar shows VPN.
Nodes present, VPN present, pages still wrong: then it is time for the config and the three modes. Do not start editing default.conf during import. How to tap Type and paste a URL is in Tutorial chapter 2. This note is only for judging the entry. If you do not have the app yet, install the store copy first.