This guide helps iPhone users decide whether Shadowrocket fits the way they manage proxy connections. Rather than treating an app’s price or feature list as a complete answer, assess the work you actually do: importing your own subscription, routing traffic, maintaining rules, using scripts, and moving a configuration between setups. The examples focus on Shadowrocket’s own controls and limitations. They do not provide a subscription or guarantee that a configuration created for another app will work unchanged.
Start with your own workflow, not a feature checklist
When deciding whether Shadowrocket is a good fit, begin with the tasks you need to complete on your iPhone. A client can include many controls, but a feature is useful only if it solves a real task and you understand how to maintain it. Write down what you do in a typical week: select an existing connection, apply rules, update configuration, investigate a failed request, or automate a particular behavior. That list is more useful than comparing marketing descriptions item by item.
On iPhone and iPad, Shadowrocket is a one-time App Store purchase. The Mac, Windows, Android, and Linux versions are free on our download page. Its purchase is separate from any connectivity service: buying the app does not provide a server, subscription, or network access. The practical setup guidance below assumes that you already have your own subscription and that its connection details are valid. Check the App Store product page for current price, compatibility, and purchasing availability rather than relying on an old quote or a remembered device requirement.
Use these facts to identify your starting point. If you need simple manual selection, focus on whether you can find and select your existing connection quickly. If you maintain several rule groups, focus on the active configuration, rule order, and how you will test changes. If you rely on custom scripts or rewrite behavior, include the time needed to review, authorize, and troubleshoot those features. More controls do not automatically mean better results; they can also mean more settings that need to be understood.
For a first pass, list each task and mark it as essential, occasional, or unnecessary. Essential tasks should be tested directly in Shadowrocket before you move a working setup. Occasional tasks deserve a note about where the relevant control is. If a feature is unnecessary, do not let it dominate your decision simply because it appears in a comparison checklist.
Routing and daily controls: know what changes the result
Shadowrocket separates connection management from traffic routing. Home is where you review available connections, select one, and control the connection. Config is where you manage configuration files. Global Routing is a separate control that determines how traffic handled by the app is routed. A selected connection does not, by itself, tell you whether a request will use a proxy, go direct, or follow a rule.
Use this routing choice when you need to test a global proxy route without relying on the active configuration’s domain rules.
Suitable for: a short, controlled routing check
Use this choice to check direct access. It is useful for separating a routing issue from a problem with the destination or local network.
Suitable for: testing direct connectivity
Traffic follows the rules in the selected configuration. This is the relevant choice when you expect rule-based routing in everyday use.
Suitable for: routine use with an active ruleset
Routing uses the selected scene’s settings. Check which scene is active before attributing a result to the main configuration.
Suitable for: setups that deliberately use scenes
These are different operating choices within Shadowrocket, not four names for the same setting. For example, selecting Config as the Global Routing mode is not the same action as opening the Config screen. The first changes the routing approach; the second is where you manage configuration files. When a result is unexpected, note both the current Global Routing choice and the configuration or scene in use.
For a practical daily check, open Home and confirm the intended connection is selected. Then check the connection status and Global Routing. If you expect rules to decide the route, confirm that Config is selected and that the intended configuration is active. Make one test request after connecting. If you change the route or configuration, start a fresh request rather than assuming an existing long-lived connection will immediately reflect the change.
- Record the network used for the test: Wi-Fi or cellular.
- Record the selected connection and Global Routing choice separately.
- Use the same destination when comparing the before-and-after result.
- Change one setting at a time so you can identify which change mattered.
Rules and configuration work: estimate the maintenance cost
Rule management matters most when you need different destinations to use different routes. In a configuration file, rules are evaluated in order, so a broad rule placed too early can take effect before a more specific rule below it. DOMAIN-SUFFIX can match a domain suffix, GEOIP can match by IP geolocation, and FINAL provides a fallback for requests that did not match an earlier rule. The correct action still depends on the rule and policy you intend to apply.
Rule review
- Specific rule
- Place before a broader matching rule
- DOMAIN-SUFFIX
- Match a domain suffix
- GEOIP
- Match using an IP geolocation condition
- FINAL
- Handle requests not matched earlier
Read the active rules from top to bottom and confirm which rule should win.
Configuration check
- Connection entries
- Review in Home
- Configuration files
- Review in Config
- Routing behavior
- Check Global Routing
- Fallback behavior
- Inspect the final applicable rule
A connection update and a rules-file change are separate operations.
Before editing, identify which file is active in Config and keep an untouched copy of the original. Make one small change, save it, and test a destination that should match that change. If the result differs from expectation, inspect the order of matching rules and the selected Global Routing mode before adding more rules. A configuration can contain valid syntax and still produce an unexpected result because an earlier rule matched first.
Configuration work also has a maintenance cost. A short ruleset that you understand is often easier to diagnose than a long file assembled from fragments whose purpose is unclear. For each custom rule, write down the intended match and the expected policy. Remove obsolete entries only after checking that no other rule or workflow depends on them. Keep a backup before changing DNS, host mappings, or rewrite behavior; these settings affect different parts of request handling and are not interchangeable with routing rules.
If your usual task is to import your own subscription and choose an existing connection, you may rarely need to edit a configuration file. If you frequently adjust rule order, maintain local mappings, or investigate why a destination matched a particular policy, configuration clarity becomes a central part of the app’s day-to-day usability. Judge the feature by whether you can maintain your own setup reliably, not by the number of settings visible in a menu.
Scripts and advanced features: useful only when you can test them
Scripts and rewrite rules can support specialized workflows, but they add another layer to diagnose. A request can be affected by its connection, Global Routing choice, configuration rules, DNS behavior, and any applicable rewrite or script logic. When several layers change at once, a successful or failed result is difficult to attribute. Start by confirming that ordinary routing works, then introduce one advanced feature at a time.
Do not assume that a script written for one client can be copied into Shadowrocket and will behave identically. Script formats, available inputs, execution timing, and supported APIs can differ. Treat imported scripts as unverified code: understand what they are intended to do, use a source you trust, and test the smallest relevant case. Avoid adding scripts simply because a guide mentions them; if a plain rule solves the task, the simpler setup is generally easier to maintain.
Decision rule: count features you actually use
Before choosing a setup, make a short list of advanced features you can name, explain, and test. If you cannot describe the expected result of a script or rewrite rule, leave it out until you can verify its purpose and behavior.
URL Rewrite and traffic routing answer different questions. A routing rule decides which policy handles a request; a rewrite rule describes how a matching URL is handled. A script may perform a further task according to its own configuration and supported behavior. Do not use a rewrite entry as a substitute for a routing rule, or assume that enabling a script automatically fixes a connection that fails at the transport or DNS stage.
When testing an advanced feature, record the input, expected output, and actual output. Use a known destination, keep the network unchanged, and temporarily disable unrelated custom behavior only when you can safely restore it. If the feature depends on HTTPS inspection or certificate trust, read the relevant in-app and system prompts carefully. Do not install or trust a certificate unless you understand why the feature needs it and what access it grants. A feature’s presence is not a reason to enable it globally.
Migration and final choice: verify before replacing a working setup
Moving a setup is not necessarily the same as moving a list of server names. A usable configuration may include connection details, rule files, local changes, scripts, rewrite entries, and preferences. Some parts may be represented in a text-based configuration; others may be app-specific or depend on the source of the subscription. Before migration, inventory what you use and identify which items must be rebuilt or checked manually.
Do not assume that a configuration exported from another app is directly compatible. Even where two tools use familiar rule names or similar text formats, supported fields, policy names, script environments, and import behavior may differ. Keep the original file unchanged, import a copy, and inspect how Shadowrocket interprets it. Check the selected configuration in Config, then verify Global Routing in Home. Test a small number of known destinations before relying on the migrated setup for routine use.
- List the connection entries and configuration files you currently depend on.
- Separate portable text rules from app-specific scripts, preferences, and other behavior.
- Preserve an untouched backup and import a copy into Shadowrocket.
- Check the active configuration, Global Routing, and rule order.
- Test direct, proxy, and rule-based destinations individually where applicable.
For a new installation, obtain Shadowrocket through the App Store and verify the product page’s developer, icon, and app ID. The official app ID is 932747118, and the developer is Shadow Launch Technology Limited. The current App Store listing is the place to confirm purchase details and compatibility. A client purchase does not include a connectivity subscription, so use your own service details if you choose to configure a connection.
The most defensible choice is the one that matches your actual routine. Shadowrocket may suit you if its Home and Config workflow, routing choices, and configuration tools cover the tasks you perform and you are willing to maintain any advanced behavior you enable. If your needs are basic, test the core connection and routing flow before spending time on scripts. If your needs are advanced, verify each required feature with your own configuration rather than inferring compatibility from a feature name.