The Complete Shadowrocket User Guide
From getting Shadowrocket on the App Store to importing an existing subscription, routing rules, and everyday maintenance. Read the section for your current stage: check inputs and status first, then change the relevant setting.
- iPhone and iPad walkthrough
- Global Routing
- Data / Settings
This reference guide explains how each step depends on the others, what settings do and do not control, and how to diagnose problems. If you’re new to Shadowrocket and want to get connected first, follow the Getting Started Guide in order. Return to the relevant section here when you need to understand a setting. Both pages follow the same workflow: the Getting Started Guide focuses on the sequence of actions, while this page explains how things work, what to check, and how to recover.
This guide assumes you already have your own subscription or server details. Shadowrocket is a paid client; this site does not provide, sell, or recommend servers or subscriptions. A one-time client purchase is not a service plan: purchasing the app, obtaining access to a service, and maintaining its configuration are separate matters that must be checked independently.
Get Shadowrocket on the App Store and Check Your Purchase
Confirm the app listing first, then check your account and device compatibility. An app purchase record is not a connection configuration.
Identify the app using three details
Shadowrocket is available only on Apple platforms, and the App Store is the only place to get it. Start with this site’s App Store purchase guide, then open the product page. If you search for it yourself, check the listing details rather than relying on the name in search results. The developer must be Shadow Launch Technology Limited, the app ID in the product link must be 932747118, and the icon should match the official icon shown in this site’s header: a blue-and-purple outlined design on a white background. The App Store listing is the source of truth. A similar name is not a substitute for checking all three details.
The app ID is the number in id932747118 in the link. It is unrelated to a device name, service address, or subscription identifier. Check the complete product link; do not mistake a search term or webpage title for the app’s identity. Check the developer details on the App Store product page rather than guessing from similar spellings in descriptions. These three details are for you to verify manually. Text and decorative elements in this guide do not retrieve App Store data or automatically authenticate the listing.
Check your storefront and device requirements before buying
The product listing, currency, and purchase terms shown on the App Store depend on the storefront associated with your account. On the product page, first confirm which account is being used for purchases on your device, then review the price, compatibility, and purchase details. If the listing does not appear, check your network and the country or region set for your account. A missing search result does not by itself mean the app is no longer available. See the App Store visibility guide for account-region checks. For account details, follow the settings on your device and Apple’s current instructions.
This guide focuses on using Shadowrocket on iPhone and iPad. The same product page also lists compatibility with Mac, Apple TV, and Apple Vision. For system requirements and general purchase eligibility, follow the details on the App Store page. Do not assume that because an app can be installed on one device, the same terms apply to every device. Before assuming a purchase can be shared across family members, purchase accounts, or devices, check the App Store details rather than relying on devices being signed in to the same cloud account.
Separate the app price, service access, and local configuration
The US storefront lists the app at around $2.99 as a one-time purchase. Actual prices and charges are set by the App Store; other storefronts show local currency. This payment covers the client app. It does not provide your server address, subscription link, or service credentials. The validity period, traffic allowance, and available servers for an existing service depend on that service’s details—not on proof that you purchased the app. If the list is empty after first launch, import your existing details rather than buying the app again.
A one-time client purchase is not a service plan. Buy and install the app through the App Store, then use your existing subscription or server details. Check app and service charges, validity, and troubleshooting separately.
Keep your purchase record and confirm that Shadowrocket appears in your App Store account’s purchases. The name and location of this section may vary by system version; follow what appears on your account page. If you’re prompted to pay again, first check that you’re using the original purchase account, that you opened the correct product page, and that the purchase record has synced. Don’t confirm another payment until you’ve checked. App updates are also handled through the App Store. You can review the release notes on the product page before updating.
This stage is complete when you have verified the app’s identity, confirmed that your device meets the App Store requirements, opened the app successfully, and know which account holds the purchase. You do not need to enter network settings you don’t understand or change system network settings. Treat getting the app and establishing a connection as separate checkpoints. If a problem comes up later, you can then tell whether it involves the store, permissions, configuration, or the service itself.
First Launch, VPN Configuration, and Permission Boundaries
System authorization allows a local connection to be established. It does not configure a server or verify that an existing service works.
Understand how Home and Config work together
After first launch, distinguish three things: the servers available on Home, the rules configuration used in Config, and the main switch that starts the system connection. A server determines which remote endpoint handles requests; the rules configuration determines how requests are routed; the switch determines whether the network extension is running. These are connected, but they cannot replace one another. A server in the list does not mean the rules are suitable. A rules file does not mean the server credentials are correct. Even with the switch on, you need to check the result by accessing a real destination.
The app may request permissions only when you first use the related feature, rather than showing every prompt at launch. Read the current prompt to understand what it is for before deciding whether to continue. Camera access is generally used to scan QR codes; notification permission controls app notifications; system VPN configuration authorization allows a connection to be established. If you’re importing a text link, you don’t need to enable camera access for that task. You can grant access to features you aren’t using later, when you need them, by following the system prompts.
Understand system VPN configuration authorization
The first time you try to connect, the system will usually ask to allow a VPN configuration to be added and may ask you to authenticate on the device. This registers a network extension configuration with the system. Confirm that the request comes from the Shadowrocket app you’re using, then follow the system prompt. Successful authorization means the system allows the configuration to run. It does not mean every network request will be routed or that the server can reach every destination. How requests are handled still depends on Global Routing, the rules, and the remote service.
If you dismissed the system prompt earlier, try connecting again after checking your server details, then follow the authorization flow shown. If the configuration still cannot be established, check whether the device is managed by an organization, whether a policy restricts the relevant feature, and whether another network configuration is active. Follow your organization’s requirements on managed devices; do not treat management restrictions as an ordinary connection issue. Avoid deleting multiple system configurations as a trial-and-error step. First note which app each existing configuration belongs to and what it does, so you don’t disrupt a work network.
Assess system status and app status separately
A VPN status shown by the system means the relevant network extension is connected; it does not prove that a webpage loaded successfully. Conversely, some devices have limited space in the status bar, so the absence of an icon alone does not prove that the connection dropped. Check the switch in the app, the selected server, and the actual access result together. If you disconnect from system settings and the connection starts again automatically, check triggers such as On Demand instead of assuming the system ignored your action.
After changing the server, routing mode, or rules configuration, an existing connection may still use its previous route. For the first test, stop the current activity, reconnect if needed, and reopen the destination. Don’t leave an old session running while changing multiple settings and then judge the new configuration by whether a page is still playing. For apps that require sign-in, account for cached data and session restoration; if needed, quit the target app and open it again.
Permission checks answer, “Does the system allow this feature to run?” Connectivity checks answer, “Are the current server, authentication details, rules, and destination working?” Record these as separate checkpoints.
Set a baseline you can return to
Before importing, note whether you’re using Wi-Fi or cellular data, and confirm that the underlying network works normally. If the Wi-Fi requires a web login, complete that first. During initial setup, leave automatic triggers off so you know which manual action starts each connection. If another feature on the device can change the network route, note its status too. This helps avoid attributing the result of multiple active mechanisms to one setting.
Keep a private setup note with the current server name, configuration name, Global Routing mode, and what you changed. Do not include full passwords or subscription credentials. After your first successful connection, this note becomes your rollback baseline. If you haven’t imported any service details yet, it’s normal to stop here; add your existing information in the next section. For a shorter, step-by-step walkthrough, return to the Getting Started Guide, then come back here after authorization to review the boundaries of each setting.
Add Servers and Subscriptions, Then Check the Parameters
First distinguish individual server details from a subscription list, then choose an import method that matches what you already have.
When to use Add Server and Subscribe
Details for an individual server usually include a protocol, address, port, and authentication parameters. A subscription is a link used to retrieve a list of server details. If you have a single share link, use an import method supported by the app. If you have a QR code, use Scan QR Code. To enter details manually, open Add Server and select the matching type. Add an existing subscription through the relevant Subscribe option. Don’t enter a subscription URL as a server address or treat an ordinary information webpage as subscription content.
Before importing, check what the information is for in your own service details. A subscription link may contain a personal identifier; copy it in full and use it only on your own devices. Common copy-and-paste mistakes include extra spaces at either end, a URL split across lines, a missing query string, or punctuation copied from the surrounding text. Check that the complete link is intact before fetching it. Don’t remove URL parameters at random to troubleshoot: some may be required to identify your service access.
Check fields for the selected protocol; don’t reuse one set of parameters for every protocol
In Add Server, the protocol must match the details you already have. The address is usually a domain name or IP address, and the port must match the service. Authentication fields vary by protocol. A password, UUID, encryption method, and transport setting each have a distinct purpose; they are not interchangeable just because they are strings. If your service details include TLS, Server Name, Host, or Path, check each against the corresponding field. Field names and options depend on the current app interface. Don’t invent advanced values that aren’t in your service details.
| Protocol | Check first | Keep in mind |
|---|---|---|
| Shadowsocks | Address, port, password, and encryption method | The encryption method must match the server. |
| VMess / VLESS | Address, port, UUID, transport, and TLS | Check authentication and transport parameters separately. |
| Trojan | Address, port, password, and TLS | Use the domain name and certificate requirements in your existing details. |
| Hysteria2 | Address, port, authentication, and TLS | Also check whether UDP is reachable on your current network. |
| HTTP / SOCKS5 | Address, port, and authentication method | Whether a username and password are required depends on the service configuration. |
A successful import only means the app recognized and saved the information; it does not prove that authentication works. Some share links also depend on a specific transport or additional parameters. If you enter only the address and password manually, you may miss something essential. If the connection fails after import, compare it with the original details rather than repeatedly switching protocols. For more on Hysteria2 transport, see the Hysteria2 protocol guide. Protocol background cannot replace your own service parameters.
When a subscription update fails, identify which stage failed
A failed Subscribe fetch is not the same as a failed server connection. It happens while retrieving the server list and may involve an incomplete subscription link, an unresolvable address, network reachability, the validity of your service access, or an unsupported response format. If the response is a login page or error message, opening the webpage successfully does not mean you received a valid subscription. Use the error details to determine whether the request failed or succeeded but the response could not be parsed.
If an update fails, keep your existing working list; don’t rush to delete and re-add the entire subscription. Check the original link, current network, and service status, then try updating again. If the update succeeds but fewer entries are available, check the returned subscription content and any changes on the service side. Don’t assume the app lost data just because the list changed. Manually edited entries generated by a subscription may be overwritten on the next update. For ongoing changes, use a management method supported by the app, and keep the original details so you can restore them.
Keep track of where each imported item came from
Give subscriptions and manually added entries clear names to avoid picking the wrong server from a list of duplicates. Import one set of information with a known source before adding another; don’t import a large batch of duplicates and only then look for problems. Once the list appears, confirm that the selected item is the one you intend to test. A list change does not necessarily change the current selection. Before deleting an item, check which subscription it belongs to and whether it’s still in use, so you don’t remove your only verified connection details.
Server passwords, subscription links, QR codes, and exported configurations may contain access credentials. When describing a problem to someone else, share only the necessary error details and redact sensitive fields; never disclose the full contents.
At the end of this stage, you should be able to say whether the current entry was entered manually, came from a single share link, or came from a subscription—and find the original details to check it. Keep at least one entry to test and note its protocol and subscription. Next, choose a Global Routing mode before connecting. Don’t judge whether a server was imported correctly based only on whether a webpage opens before you’ve chosen a routing mode.
Global Routing Modes and Rule Order
Config, Proxy, and Direct are the three routing modes. Choose a mode first, then work out how requests are routed.
Separate routing modes from rule policies
Global Routing determines how requests are handled. Config matches requests against rules in the current configuration. Proxy routes requests handled by the client through the proxy path. Direct uses a direct path. These are modes, not three different servers. Changing modes won’t fix an incorrect password or extend an existing service. In particular, Proxy should not be taken to mean that every communication from the device must pass through a remote server. System network behavior, the client’s scope, and protocol capabilities each have their own limits.
| Mode in the interface | How it works | Typical use |
|---|---|---|
| Config | Match requests against the rules in the current configuration. | Everyday rule-based routing and checking how a specific destination is handled. |
| Proxy | Use the proxy path for requests handled by the client. | Temporarily reduce the number of rule-related variables when checking the remote connection. |
| Direct | Use a direct connection path. | Compare reachability on your current local network. |
PROXY, DIRECT, and REJECT in rules are policy keywords; don’t confuse them with the Global Routing modes shown in the interface. PROXY in a rule must also be understood in the context of the current selection and policy definitions in the configuration. If the configuration uses a custom policy group, a rule may reference the group name rather than the literal word PROXY. When learning the setup, check how the existing configuration references policies. Changing only the text at the end of a rule does not necessarily change the policy as intended.
Rules are checked from top to bottom; put FINAL last
In Config mode, rules are checked from top to bottom, and the matching rule’s policy is applied. More specific exceptions generally need to appear before broader rules that could match first. Otherwise, the earlier rule wins and the exception is never reached. FINAL handles requests that did not match any earlier rule, so place it last. To troubleshoot rule order, inspect the rules from the top instead of searching only for the line you just added: an earlier rule may be taking effect.
The following is an example rule snippet for a .conf file. It illustrates structure and match order only; it is not a complete configuration or suitable for every network. example.com is a documentation domain. Adjust the example to your destination and existing policy definitions. Back up the original configuration before editing, and confirm that the modified file is selected.
[Rule]
DOMAIN,example.com,PROXY
DOMAIN-SUFFIX,example.org,DIRECT
GEOIP,CN,DIRECT
FINAL,PROXY
DOMAIN matches an exact domain; DOMAIN-SUFFIX matches the specified domain and its subdomains; DOMAIN-KEYWORD matches a keyword in a domain and may have a broader scope than expected. IP-CIDR and IP-CIDR6 match address ranges, while GEOIP uses a database to determine the region associated with an address. Domain requests also involve a resolution step before connecting to an address. Domain-rule matches and address-rule matches rely on different information, so you cannot infer the entire matching process from one address shown at the end.
Test one destination at a time; don’t change the whole configuration at once
Before editing a rule, be clear about the intended result: which destination should use which policy, and why does the current behavior fall short? Add a rule for that destination, make the request again, and check the policy shown in the available records. If nothing changes, first confirm that the configuration was saved and selected, whether an earlier rule matched, and whether an old session is still active. Don’t change DNS, the server, and a large set of rules at the same time. Even if the problem goes away, you won’t know which change made the difference.
Routing a destination to DIRECT does not guarantee it will be reachable; it still depends on local DNS resolution and network connectivity. PROXY does not guarantee that the remote server can reach it either. REJECT actively blocks the request and may affect page resources, sign-in, or app notifications. Understand a destination’s purpose before using it. Write rules to meet a clear need; more rules do not mean better rules. For detailed examples of rule order, see Custom Rule Priority and FINAL Explained.
Suggested order: keep a verified server, use Proxy to check the proxy path, then return to Config to verify routing rules. Restore your everyday mode after the temporary comparison.
If Proxy works but Config fails, check the rules, policy references, and DNS behavior related to the configuration first. If both fail, return to the server’s authentication and transport details and network reachability. This way of grouping the checks is more useful than repeatedly switching modes. Note the configuration name and Global Routing mode you end up using; the next section’s connection check depends on being able to repeat the same setup.
Connection Checks, Latency Tests, and Troubleshooting by Layer
The switch, test results, and webpage access each provide different evidence. Don’t rely on just one.
Follow a consistent order for your first connection check
First check the selected server, Global Routing mode, and configuration name, then connect. See whether the app stays connected and whether the system reports an error. Next, visit a destination whose purpose you know. For the first check, use a simple, repeatable action, such as closing an old page and reopening the same URL, rather than running several apps at once. If sign-in or identity verification is required, note the service’s response separately; not every sign-in failure is a connection problem.
Record three checks separately: whether the client established a connection, whether the destination domain resolved, and whether the destination returned the expected content. The first can succeed while the other two fail. For a partially loaded page, work out whether the main page loaded but images did not, or whether the sign-in API failed. Modern pages often load resources from multiple domains. One domain working does not mean every related domain follows the same route. When diagnosing routing, the domain of the resource that actually failed is often more useful than the main domain in the address bar.
Connectivity Test is not a substitute for checking the service you actually need
Connectivity Test and the latency tests in the list show how a connection responds under specific test conditions. Different methods may use different destinations, protocols, and timeouts, so their numbers cannot be compared without considering how they were measured. Low latency generally means the tested path responded quickly; it does not prove there is enough bandwidth or that every destination is reachable. A responsive server port, successful authentication, an established TLS connection, and a page response can all occur at different stages. Interpret the result in light of the test type shown.
A test timeout alone does not prove that a server is permanently unavailable. The current Wi-Fi may require authentication, cellular service may be temporarily unstable, or a test destination may not be responding. Retry once under the same conditions, then compare using a different network. Change only one condition at a time. When comparing two devices, make sure they use the same entry, routing mode, and test method. Otherwise, the results are not directly comparable and won’t help you decide what to change next.
Group problems by network, server, rules, or destination
If every entry fails, check the device’s basic network, Wi-Fi authentication, and system network configuration first. If only one entry fails, check its address, port, authentication, and transport parameters, and confirm that your existing service is still valid. If multiple destinations work and only one app has a problem, check the domains it uses, the rules, and the response from the remote destination. Don’t rebuild the entire subscription just because one destination is affected; that expands the changes without giving you more evidence.
| What you see | Check first | Next comparison |
|---|---|---|
| The switch won’t stay on | System authorization, configuration errors, or device management restrictions | Note the specific system or app error. |
| Latency test responds, but the webpage won’t open | DNS, rules, TLS, or the destination’s response | Compare different destinations and routing modes. |
| Proxy works, but Config doesn’t | Rule order, policy references, and configuration differences | Check which rule matched the failed request. |
| Results change when you switch networks | Reachability and transport restrictions on the current network | Keep the parameters unchanged and test again. |
DNS translates a domain name into an address that can be reached. A resolution failure can prevent a webpage from opening even when a server test responds. TLS handles authentication and encryption negotiation for a connection; a certificate-name mismatch, invalid certificate, or incorrect device time can cause failures. These are separate stages, so use the error details to tell them apart. Don’t disable certificate verification as a routine fix. First check the domain, device time, and TLS parameters in your existing service details.
Record the minimum steps needed to reproduce the issue
A useful troubleshooting note includes the network type, destination, selected server, routing mode, time of the test, and what went wrong. It does not need full credentials or an export of every log. If the available records show a specific error, save the relevant lines before making a single change. For DNS issues, see How to Troubleshoot a Webpage That Won’t Open Despite Normal Latency. Apply the steps there in light of the evidence from your own request.
Change one variable at a time: confirm the symptom, make one adjustment, then repeat the same request. Once it works, record the change that helped and leave verified settings alone.
There’s no need to aim for a more complex configuration as soon as the first test succeeds. First repeat a few everyday requests, then compare Wi-Fi and cellular data under the same conditions. If an app relies on an existing session, start a new request after switching networks. Finally, return to your everyday Config setup and confirm that the rules and server work together. That’s a complete first check—not just a single test that happened to respond.
Data, Traffic Statistics, and Request Records
Check what is being counted, the time range, and the units before interpreting a change in the numbers.
On-device statistics are not the remaining allowance shown by your service
Data helps you review traffic and related records within the client’s visible scope. The exact items depend on the current app interface. First check whether the statistics cover the current connection, a time period, or cumulative usage; then interpret changes in the figures. Traffic recorded by the client is not necessarily the same as the amount deducted by your service. The two may use different time windows, units, protocol overhead, or billing methods. To check the remaining allowance on an existing service, consult your own service account rather than estimating it from the client’s cumulative total.
Understand upload and download from the device’s perspective. Page requests, file transfers, and cloud sync can generate uploads; page content, video, and file downloads generate downloads. Background sync and app notifications can also use the network when you haven’t actively opened a webpage. A small, steady change in traffic is not enough on its own to indicate a problem. Consider foreground tasks, background activity, and the statistics window. In particular, check the units before confusing a transfer rate with a cumulative total.
Distinguish transfer rate, total usage, and time window
A transfer rate measures how much data changes over time; a total measures the amount used within a particular statistics window. A brief peak does not demonstrate sustained throughput, and a growing total does not mean data is still being transferred. Before comparing figures, check the units, including whether they’re bytes or bits. Different screens may display units differently. When documenting an issue, write down the complete unit shown on screen, not just a number without context.
Reconnecting, clearing records, or resetting statistics may change what you can see. Read what the current option does before using it. Don’t delete a server or subscription just to reset a number; they are different things to manage. To compare traffic for two visits, use the same destination and similar actions, note the difference between the starting and ending totals, and consider whether the browser served content from its cache. A page using less data the second time may be due to caching, not a change in network route.
Use request records to check whether rules are working as intended
If the app provides connection records, use the destination domain or address, matched rule, selected policy, and result to understand how a request was handled. First identify the request you just made, then find its record; the list may also include background tasks and traffic from other apps. A domain and an address do not always correspond one-to-one. Some connections use an address directly, while other requests may rely on a cached resolution. If the expected domain does not appear, don’t immediately assume that no network request was made.
Policy details in the records are especially useful for checking Config. First see whether the request matched a specific domain rule, an address rule, or FINAL. Then check whether the referenced policy is what you expected. If the record shows DIRECT, don’t change the server without checking first: the request may not have used it at all. If it shows REJECT, check whether the request was actively blocked. If the record doesn’t match expectations, return to Chapter 4 and check the rules from top to bottom. Confirm that the selected configuration is the same file you edited.
Traffic statistics tell you how much was observed; request records help show how a request was handled. Use both as evidence, but neither replaces checking what the destination service actually returned.
When traffic looks unusual, compare changes before and after a task
If traffic rises noticeably, pause large activities such as video playback, system updates, or cloud sync, then see whether the increase slows. Resume tasks one at a time to find what correlates with the increase. Don’t guess the source based only on a server name, and don’t treat a rising total as proof that credentials were exposed. If the total keeps increasing after you stop foreground tasks, check background app activity and available records to narrow it down. Also check whether the statistics window still includes earlier traffic.
If your service’s allowance decreases while Data on your device changes very little, consider whether another of your own devices is using the same service, whether the two statistics periods line up, and whether the service uses a different way of measuring traffic. Check those details before asking the support channel for your existing service about its usage calculations. The client usually cannot explain every detail of service-side usage. Repeatedly resetting local statistics will not resolve an account allowance issue; it changes only what your device displays, not the service’s records.
Share only the diagnostic details needed
Request records may contain visited domains, URL paths, network details, and personal identifiers. Before describing a problem to someone else, include only the details relevant to it and redact full subscription URLs, passwords, and identifying parameters. Check screenshots for sensitive entries in the background too. When you’re done, manage records you no longer need using the app’s available features. Keep records for as long as they’re useful for troubleshooting; there’s no need to accumulate all history indefinitely. For everyday maintenance, keep only reproducible conditions, key errors, and the conclusions that helped.
The goal is not to watch the numbers constantly, but to know how to interpret them: what the statistics cover, how to find a failed request, and how to distinguish what your device observed from your service account details. With that in mind, you can adjust only the Settings relevant to a real issue and avoid guesswork.
Settings, DNS, and On Demand
Keep a working baseline, then make changes for one specific reason at a time. Setting names and options depend on the current app interface.
First identify the scope of a setting
Before making a change, distinguish app-level settings from settings in the current configuration and parameters for an individual server. They may appear in Settings, Config, or the server editor, and their scopes differ. Don’t infer how DNS in one configuration works from a change to a separate global option. A transport parameter for one server is not a general setting for every entry. Note where you made each change, its original value, and why you changed it so you can tell what it affected.
If the interface provides an explanation, read it before changing a value that currently works. Don’t turn on an option just because its name sounds related to speed, or copy a parameter that doesn’t apply to your protocol or network. Advanced settings often address a specific situation and may also change compatibility, resolution order, or connection behavior. If your current setup reliably meets your needs, keep the verified baseline and adjust only what addresses a clear problem.
DNS should return the right address, one that is reachable
The resolver, query transport, route used for queries, and cached results can all affect domain access. When choosing a DNS method, consider more than response time: confirm that your current network can reach the resolver and that the returned address suits the destination you want to access. Resolving a domain to an address does not mean that address is reachable over the current route. Conversely, a single timed-out DNS query may be caused by the path to the resolver, not by a problem with the destination website.
When a domain-related error occurs, first check whether multiple destinations are affected, then review DNS-related options in the current configuration and recent changes. If you use encrypted DNS, consider the initial resolution and connection requirements for the resolver’s own domain too. Don’t add many resolvers at once and assume the one that happened to work is the answer. Keep other parameters unchanged, compare results for the same domain, clear the relevant cache if the app provides a suitable feature, and make the request again.
DNS cache, browser cache, and existing network connections are separate things. Clearing one may not affect the others. After changing DNS settings, revisit the destination and check the records for the new request. For internal network or local device names, account for local resolution needs; changing all queries at once may disrupt devices that already worked. For a detailed troubleshooting sequence, return to Chapter 5 and the related DNS guide rather than assuming a fixed set of addresses works on every network.
On Demand triggers connections based on conditions; it does not choose the right parameters
On Demand can connect or disconnect automatically when specified conditions are met, such as Wi-Fi, cellular, or a particular domain. Before enabling it, first confirm that the server and configuration work with a manual connection, then add trigger conditions one at a time. Otherwise, automatic connection will keep triggering the same existing problem. When setting a Wi-Fi condition, check the network name carefully: similar names, duplicate names, and transitions between networks can all affect what you observe.
If several conditions are active, check their matching order and actions against the current app instructions. Avoid stacking conflicting rules. For an initial setup, use one easy-to-test condition, switch networks, and confirm that it triggers as expected before adding more. If the connection comes back immediately after you turn it off manually, check whether an automatic trigger still matches. Temporarily disable the relevant conditions and see whether manual control stops the behavior.
On Demand automates when a connection is triggered, not whether the service works. After a network change, a working server, valid authentication, and suitable rules are still required. Automatic triggers cannot replace these prerequisites.
Keep domain-based triggers separate from ordinary routing rules: the former determine when to connect; the latter determine how requests are handled after the connection is running. A domain appearing in a rule does not mean it will trigger a connection. For examples of complete conditions, see the On Demand Connection Guide. Before travelling or changing networks, make sure you know how to temporarily disable automatic triggers so you can first connect to networks that require authentication.
Enable advanced features only when needed, and keep a way to revert
Adjust options for transport, logging, connection persistence, or other advanced behavior only when you have a clear reason. Features involving certificates and HTTPS decryption require careful consideration of what you trust. Use them only in an environment where you have clear authorization and a specific need; they are not required for a routine subscription import. Don’t install certificates or weaken verification to fix an ordinary connection error. If an advanced change causes more problems, restore the original value, verify the basic connection, then decide whether to investigate that feature further.
A setting change is complete when you can explain its purpose, reproduce the result, and restore the previous value. If it brings no clear improvement, don’t keep piling on more options. Add the final working settings to your baseline notes. For everyday use, keep only the automation and diagnostic features you need. In the next section, set up a consistent process for updates, backups, and recovery.
Updates, Backups, Device Transfers, and Recovery
Keeping configuration sources traceable, changes reversible, and problems reproducible matters more than repeatedly rebuilding your setup.
Manage app updates and subscription updates separately
App updates come through the App Store and mainly change the client itself. Subscription updates retrieve the server list for a service you already have. They are separate operations: a successful subscription update does not mean the app is up to date, and an app update does not guarantee that your service details are still valid. Keep an eye on the app’s App Store status and your own subscription status separately. There’s no need to chase unverified version claims. If you’re troubleshooting, record how to reproduce the issue before updating so you still have a point of comparison.
Follow the instructions for your existing service and your own needs when refreshing a subscription. Don’t repeatedly refresh just because one request is slow. After a refresh, check that the selected entry still exists, whether its name changed, and whether policy references in your rules are affected. If the list update fails but an existing entry still works, preserve the working setup while you troubleshoot the fetch. Keeping normal use separate from maintenance attempts can prevent a cleanup from removing all your usable details when you need a connection.
Back up the information, not just the app
App purchase records, server details, subscription links, and rules configurations are separate things. Being able to get the app again from the App Store does not mean all local content will be restored automatically. Check what your device backup actually restores. Before moving to another device, review the app’s export or backup options and confirm which configurations they include. For manually entered entries, keep the original details. A display name alone is not enough to recreate a connection.
A backup may contain passwords, subscription credentials, or other access details. Store it somewhere protected that you control. Don’t put a full configuration in a public note, shared folder, or troubleshooting discussion. Label backups with their purpose and configuration name, and keep a version you’ve verified works. Export the original configuration before making extensive rule changes. A backup is useful only if you can access and restore the information you need, so check its contents when appropriate rather than assuming the file’s existence is enough.
Restore in dependency order when moving to a new device
On the new device, first check the original purchase record and app identity in the App Store, then get the app according to the store’s terms. System requirements, universal purchase, and Family Sharing eligibility are determined by the App Store listing. Next restore your own server or subscription details, then your rules configuration, and finally check system VPN authorization. The new device may need its own permission prompts; authorization on the old device does not carry over this step. For purchase recovery checks, see Restore Previous Purchases.
After restoring, don’t immediately enable every automatic trigger and advanced option. Manually select a known entry first and verify the connection and common destinations. Once routing works in Config, re-enable On Demand. The device name, Wi-Fi environment, system settings, and app permissions may differ from the old device, so identical configurations may not trigger in exactly the same way. If something goes wrong during migration, return to the most recent verified stage instead of starting over.
Follow a consistent recovery sequence
For everyday issues, follow four steps: check the underlying network, confirm what is selected, review recent changes, and restore the known baseline. First rule out Wi-Fi authentication issues and network outages. Next check the server, configuration, and Global Routing mode. Then review whether you recently updated a subscription, edited rules, or enabled an automatic trigger. Finally, revert only the relevant change. This preserves useful evidence and avoids unrelated adjustments. Delete and rebuild only when you know what is damaged and have the details needed to restore it.
If a problem occurs on only one network, keep the configuration unchanged and compare it on another network you can use. If only one server fails, keep the other entries and check that server’s parameters. If only one destination fails, review the request records and relevant rules. For service access or allowance issues, contact the support channel for your existing service. For a purchase record issue, check your App Store account purchases. Take each issue to the relevant part of the process instead of trying to solve account problems with app settings.
Your rollback baseline should include at least the source of a working server, configuration name, Global Routing mode, necessary settings, and the steps from the last successful test. Keep credentials protected separately; don’t include them in public troubleshooting notes.
Keep brief notes instead of repeating trial and error
For each maintenance change, record only the essentials: what you changed, why, what you compared, whether it worked, and how to revert it. Don’t treat an unverified guess as a standing rule, or delete an existing backup after one brief success. When periodically removing duplicate entries and records you no longer need, first check what depends on them—especially the difference between subscription-generated and manually added entries. The goal is to reduce confusion, not simply to make the list shorter.
The complete workflow should now be clear: use the App Store to confirm the product and purchase; system authorization allows connections; your existing details provide the server; Global Routing determines how requests are handled; real access confirms the result; Data and request records provide evidence; Settings address specific needs; and maintenance keeps the setup recoverable. For a short walkthrough of the steps, use the Getting Started Guide. To review how something works, return to the relevant section in this page’s contents. There’s no need to rebuild parts of the setup that already work.