A rule-based proxy client for iPhone and iPad, with rule-based routing. The app is a one-time purchase on the App Store; get existing subscriptions from your service provider.
Available exclusively on the App StoreOne-time purchaseRule-based routingSee the App Store listing for system requirements
Home, Config, and Settings feature index
First, identify the screen you’re on, then adjust the relevant setting. Server details, routing modes, and rule files serve different purposes. When troubleshooting, change one setting at a time.
Global Routing and rule-based routing
In Home, choose a mode under Global Routing: Config, Proxy, or Direct. Config routes requests according to the active configuration file’s rules. Proxy sends requests through the current proxy policy; Direct connects directly. To route by domain or address, first confirm the active file in Config, then check the order of the rules. Rules are matched from top to bottom; the first match applies. Put specific conditions before broader ones, and usually place FINAL at the end. The snippet below is for syntax instruction only and does not represent a usable service.
Find On Demand in Settings to configure automatic connections based on network conditions. It determines when a connection is established; it does not replace domain-based routing rules in Config. First, verify the server with the manual switch, then add conditions one at a time. If behavior changes unexpectedly after switching Wi-Fi networks, return here and check the SSID and network conditions instead of rewriting all your rules. After making changes, test on the target network and another network. An automatic connection does not guarantee that requests are routed through the proxy.
On DemandWi-Fi → Check the SSID conditionCellular → Check connection behavior
Multiple protocols
In Home, tap Add Server, choose a Type, and fill in the corresponding fields. Parameters for Shadowsocks, VMess, VLESS, Trojan, Hysteria2, and WireGuard are not interchangeable based on the address alone. The port, authentication method, and transport settings must also match your existing server details. After scanning a QR code or importing a profile, check the entry’s Type and Host. The name is only a list label and does not identify the protocol. Get the required parameters from your service provider; don’t substitute values from another entry when fields are missing.
ShadowsocksVMessVLESSTrojanHysteria2WireGuard
Import a subscription with Subscribe
To add an existing subscription in Home, choose Subscribe and enter the link. Get subscriptions from your service provider. After importing, check the groups and server entries, then select the one you want to use. Updating a subscription refreshes its source list; it does not replace all the rules in the active Config. If you use multiple subscriptions, give each group a clear name and confirm its source before deleting it. Links may contain access credentials, so hide the full link in screenshots and troubleshooting records.
Subscribe: confirm the source
Home: check the group
Select a server before connecting
Config files
In Config, first confirm which file is active, then edit sections such as General and Rule. The server list determines where to connect; the configuration file determines how requests are handled. They are separate. Save a copy of the existing file before changing DNS or rules. Change one thing at a time and retest the same request. If Global Routing is set to Proxy or Direct, some rules may not apply as expected. Check both the mode and the file rather than only confirming that a rule appears in the editor.
[General]
loglevel = notify
[Rule]
FINAL,PROXY
Data and diagnostic tools
After connecting, run Connectivity Test in Home, then cross-check the result with an actual request from a website or app. Data traffic records show requests handled by the client; they should not be treated as a service-provider bill or remaining allowance. Diagnostics and related Log information in Settings can help distinguish DNS resolution failures, connection failures, and rule-matching issues. Results depend on the destination and network conditions. A single successful test or a low test value is no substitute for checking real-world use over time.
Connectivity Test
Real requests and Data
Diagnostics and Log
iCloud sync
To transfer settings between your own devices, first check the system iCloud status, then review the app’s sync options and confirm the results. App purchases and configuration data are managed separately. Reinstalling the client from the App Store does not automatically restore server details to Home. Keep the local configuration before syncing for the first time, and confirm the expected content appears on the destination device before making further changes. If the content doesn’t match, stop editing, check the account and sync status, and avoid overwriting the configuration currently in use.
App Store → Purchase historyiCloud → Sync statusHome / Config → Actual content
Rules and settings examples
These examples illustrate what each settings layer does; they are not default values. Rule policies must match your actual configuration. Set On Demand conditions in the app’s interface; the condition tree is not an importable configuration.
[Rule]
# Put specific subdomains before parent-domain rules
DOMAIN-SUFFIX,ad.example.com,REJECT
# Use PROXY for example.com and its other subdomains
DOMAIN-SUFFIX,example.com,PROXY
# Use DIRECT for the specified local network address range
IP-CIDR,192.168.0.0/16,DIRECT
# Use PROXY when no earlier rule matches
FINAL,PROXY
# Interface checklist; not an importable configuration
Settings → On Demand
# Verify the connection manually before configuring automatic connections
Wi-Fi → SSID
# Check the connection condition for the target Wi-Fi network
Cellular → Connection condition
# After switching networks, check whether a connection is established as expected
Home → Global Routing → Config
# After connecting, routing is still determined by the mode and rules
[General]
# Log level example; not a default value
loglevel = notify
[Rule]
# Match this exact domain only
DOMAIN,example.com,PROXY
# Use DIRECT for other requests; adjust as needed
FINAL,DIRECT
Getting Shadowrocket on iPhone and iPad
The App Store is the only place to get Shadowrocket. On the product page, check compatibility first, then confirm the purchasing account and price. Refer to the App Store listing for system requirements and whether Universal Purchase is available.
iPhone
Check the Shadowrocket product page on the App Store before purchasing. The first time you connect, iOS may ask permission to add a VPN configuration. This authorizes the client to handle the relevant network requests; it does not confirm that the server is connected. Return to Home, select a server, and test the connection.
If you’re using the same Apple ID, first check your purchased items to see whether you can redownload the app. Refer to the App Store listing for Universal Purchase availability on iPhone and iPad. A larger display doesn’t change the roles of subscriptions and rules. After restoring your purchase, separately check Home entries, the Config file, and sync results.
These steps assume you already have a subscription or server details. First establish a manual connection, then configure automatic connections, DNS, or more complex rules. This makes it easier to identify the effect of each change.
01 · Home
Add a server or existing subscription
In Home, open Add Server, choose a Type based on your server details, and fill in the fields. For an existing subscription, choose Subscribe and get the link from your service provider. After using Scan QR Code, check that the imported entry is complete. Return to the list and tap the circle next to the server you want to use. Adding an entry to the list does not select or connect to it.
02 · Global Routing
Choose a routing mode
To route traffic according to your configuration, choose Config and confirm which file is active on the Config screen. Proxy and Direct apply to the overall routing mode; don’t confuse them with the PROXY and DIRECT policies inside Rule, which operate at a different level. Note the current mode when testing. If a request is routed unexpectedly, check the mode first, then the rule order and matching conditions.
03 · Connectivity Test
Connect and test a request
Turn on the connection switch at the top of Home and allow the VPN configuration when prompted. Then run Connectivity Test and try the content you actually need to access. The system’s connection indicator only means the configuration is active; it does not guarantee that every destination is reachable. If a test fails, check the local network, selected server, authentication fields, and configuration rules in order. Change one thing at a time and repeat the same test.
View the full tutorial →Covers QR code imports, routing modes, first-time authorization, and connection troubleshooting.
How to verify the genuine app and understand what you’re buying
Shadowrocket is a closed-source commercial app. Before purchasing, verify the product details in the store and keep your purchase records. This is the official website and handbook, with instructions for using the interface and configuring the app.
DEVELOPERShadow Launch Technology LimitedVerify the developer shown on the product page
OFFICIAL ICONWhite background with a blue-purple outline; compare with the product page
APPLICATION ID932747118id932747118 in the product page URL
How to verify the search result and product page
Shadowrocket may appear in search results under different names, so don’t rely on name similarity alone. Open the product page and verify the developer, Shadow Launch Technology Limited, the official icon, and the app ID 932747118. You can also confirm the app ID in the product page URL. All three details should point to the same product. Then check the price, compatibility, and purchase prompts.
What you see and the currency displayed may vary by storefront. If Shadowrocket doesn’t appear in search, first check your App Store account’s region and the actual message on the product page. A missing search result doesn’t necessarily mean your device has a problem. Refer to the App Store listing for system requirements, compatibility, and purchase availability.
One-time purchase and existing service details
The US storefront lists the app at about $2.99 as a one-time purchase. Prices are shown in local currency in other storefronts; the amount shown at checkout is the final price. The app purchase does not include a proxy service. Buying the app gives you the right to use the client; it does not add a connectable server automatically, and a purchase receipt cannot replace a subscription link.
This site does not provide, sell, or recommend servers or subscriptions. Get existing subscriptions from your service provider, and check connection parameters, expiration status, and server availability with them. App and service fees are separate. When troubleshooting, first determine whether the issue is with restoring a purchase, importing details, or connecting to the service.
Restore purchases and use on two devices
When switching devices or reinstalling the app, use the original purchasing Apple ID to check your App Store purchase history and see whether a redownload option is available. For use on both iPhone and iPad and Universal Purchase eligibility, refer to the product page and your account records. If you see a price again, check the purchasing account before paying a second time.
Purchase history only covers getting the app. Check sync or backups separately to see whether your Home servers, subscription groups, and Config files have been restored. After restoring, select a server, verify the routing mode, and test the connection before resuming normal use. Having the app installed does not mean all your previous settings have been restored.
Check app updates and configuration maintenance separately
Manage app updates through the App Store. Depending on your system settings, you can use automatic updates or check for updates in the store. Subscription updates happen in the app and refresh entries from their original source. Editing rules in Config is a separate task. These three processes are not interchangeable, and updating a subscription won’t fix settings entered incorrectly.
If a connection that used to work fails after a change, review whether you last modified an app setting, server details, or a configuration file. Keep a copy of your configuration so you can revert changes. After each edit, test the same destination and note the Global Routing mode. For field explanations, see the Settings handbook and check each item individually instead of enabling everything at once.
Articles on app verification and rule troubleshooting
Continue with the article that matches your question: verify the app’s store listing, select an existing server, or check a specific rule. The instructions build on the Home and Config basics covered above.
Treat searching by name and verifying the product’s identity as separate steps. Check the developer information, official icon, and product page URL to confirm you’re viewing Shadowrocket before checking compatibility and payment details.
Learn how REJECT works with top-to-bottom rule matching, and distinguish domain conditions from the final policy. If a request is blocked by mistake, check where the rule matched and its domain scope before changing the rule or allowing the request. A single rule does not guarantee a universal outcome.
This guide only discusses choosing a server you already have. Test results and real-world request performance are not the same; consider the destination, protocol details, and actual loading results, and repeat tests under the same network conditions.