When a connection misbehaves, do not edit the subscription, the node, and the routing together. Write which layer the symptom belongs to: a failed update or an empty list, fields or garbled names, or latency, UDP, and routing. Finish the earlier layer before you open the next one. This article assumes you already have your own subscription. This site does not provide, sell, or recommend nodes, subscriptions, or providers.
Write the symptom down before you touch anything
Three lines freeze the scene. Line one is the subscription: update time, error text, and how many servers Home shows. Line two is the node: the row you mean to inspect, whether port and SNI have text or are blank, and whether the name is garbled. Line three is the connection: Connectivity Test in milliseconds or timeout, whether the real request failed, and whether UDP was tested on its own. If you cannot write the three lines, you are not troubleshooting yet. You are only tapping.
Shadowrocket runs on iPhone, iPad, Mac, Windows, Android, and Linux: a one-time App Store purchase on iPhone and iPad (about 2.99 USD), and free downloads for Mac, Windows, Android, and Linux on this site's download page. The app purchase does not include a subscription. Your subscription comes from your own provider. Those lines assume the app is already installed. If you have not checked where the app came from, confirm the developer Shadow Launch Technology Limited and app ID 932747118 before you enter the layers below. Do not mix an installation problem with an empty list and call the result a reinstall.
Do not do these now
- Extra copies
- Do not duplicate the subscription to “try”
- Combined edits
- Do not change the URL and SNI together
- Public token
- Do not post the address to a page or a group
- Checks off
- Do not disable TLS checks to force a number
These moves make the three lines useless.
You can do these now
- Copy the symptom
- Keep the error with the token masked
- Name the shape
- Locally, URL versus document body
- Pick one layer
- Work on the earliest layer that fails
- One edit
- Retest that layer immediately
If an earlier layer fails, do not test a later one.
Subscription layer: failed updates and empty lists
The earliest failure is a failed update or a count of 0. Subscribe should contain an https subscription address, not a Base64 run, a full YAML file, or one vmess:// line. The shape can be compared with https://example.com/sub?token=example . Do not write the real token into the three lines. Delete spaces and line breaks at the ends, then update once. If it still fails, send your provider the masked error. If the update succeeds and the count is 0, ask them whether the body is a Base64 node list, YAML, SIP008, or a text file the client cannot turn into servers.
Do not leave a single protocol link inside Subscribe and keep updating it. Move it to Add Server, fill it from the original text, and only then enter the node layer. The subscription layer is done only when the update time changes, the count is greater than 0, and the name is readable enough for you to select the row. A garbled name with a count above 0 can move to the node layer so you can read fields. Do not try to cure the garbled name by editing the URL.
Each layer needs a condition you can point at
The subscription layer is the row count. The node layer is whether fields match the original. The connection layer is a test record under the same conditions. When you say it still fails, name which condition is unmet.
Node layer: fields, garbled names, and protocol
Open details only after the count is above 0. Shadowsocks: method and password. VMess and VLESS: UUID, transport, Path, Host, TLS, and SNI. Trojan: password and SNI. Hysteria2 and TUIC: credentials, port, and SNI. WireGuard: both keys and the Endpoint. Correct only the cell that disagrees with the original. Save, and do not touch routing yet. Return to Home, run Connectivity Test on that row, and write the result on line three.
Garbled names come in two kinds. If the fields match the original and only the remark is unreadable, ask the provider for a UTF-8 name, or set a display name yourself. If fields are empty or Type does not match the protocol in the original text, the import is incomplete. Return to the subscription layer and look at the format. Do not keep editing Path on a garbage name. Renaming the row does not mean the node layer passed. Passing means the fields you will use match the original.
-
Write three lines
Subscription, node, and connection. If you have not tested something, write “not tested yet.”
-
Subscription layer only
Address, network, and shape. Continue only when the count is above 0.
-
Node layer only
One field, one test. A garbled name does not replace the field check.
-
Connection layer only
Read milliseconds or timeout on one network. UDP is separate. Routing is a separate edit.
-
Stop condition
This layer's condition is met, or only your provider can continue. Do not open the next layer early.
Connection layer: latency, UDP, and routing
After the node layer passes, take a baseline without editing fields. Two Connectivity Test runs on the same network, close together, define a range. One success and one timeout means you run a third probe before you edit. Only then may you change one connection-layer item: a UDP check, or Global Routing, or which row is selected. Not all three. If UDP fails while the probe has a number, stop on UDP and ask your provider. If the request fails while the probe has a number, stop on routing and leave the fields in the state you just checked.
Whenever a layer needs to be sent to someone else, mask the subscription URL first. If the token is already public, pause the later layers, ask your provider to reset it, replace the address in the original entry, and rewrite the three lines from the subscription layer. Milliseconds from the old address are not the baseline for the new address. After the new address updates, confirm the count is above zero before you reuse any field notes. A field you repaired on the old document may not even exist on the new one until you open the row and look.
Questions
All three layers look broken. Where do I start?
At the subscription layer. Without rows, the node layer and the connection layer have no object.
I changed SNI and the network, and now it times out.
Restore SNI, return to the original network, and take the baseline again. Keep one change.
The provider told me to reinstall the app.
Ask whether they mean the client list or the subscription. An empty list is usually a replaced or reset URL, not a reinstall.
Can the note be a full-screen capture?
No. A full screen often includes the address inside Subscribe. Copy the masked error, the count, and the test result.