This guide is for anyone moving to a new iPhone, transferring to an iPad, or deleting and reinstalling Shadowrocket. Assuming you already have your own provider and subscription, it covers iCloud sync, config file export, and restoring on a new device. Save your subscription details and local changes first, then check rules, policies, and system permissions. A file appearing on the new device does not mean the transfer is complete.
1. Understand subscriptions, configs, and system permissions
Moving Shadowrocket to a new device is not as simple as copying one file. Subscriptions and manually added connection entries in Home, config files in Config, app preferences in Settings, and system VPN permissions are separate types of data. A config file may contain connection details, but that does not mean every exported file includes all subscription sources and app settings.
Before you start, make a checklist on your old device. Note the selected config name, Global Routing selection, subscription sources, and any fields you changed manually. Updating a subscription retrieves the provider's current remote content, which may not preserve names, parameters, or ordering you changed locally. So don't back up only the subscription URL.
- Subscription source: Save the complete URL, including its path, query parameters, and token. The example
https://example.com/sub?token=xxxxis for identifying the URL structure only; it cannot be used to import a subscription. - Manual entries: Record the protocol, server, port, and authentication fields separately. Also check the TLS, SNI, and transport path settings actually in use; there's no need to fill in options that aren't enabled.
- Local config: Save the file currently in use in Config, especially any rules or DNS settings you added yourself.
- Device state: Note the Global Routing and Settings → On Demand states. System permissions must be confirmed again on the new device.
In short: export a local copy before syncing
While the old device is still available, save the current config and complete subscription details before using iCloud. Syncing can propagate changes; a separate file copy makes it easier to recover earlier content after an accidental edit or deletion.
2. iCloud sync: verify what it covers before relying on it
Files in iCloud Drive, iCloud sync provided within an app, and an iCloud Backup of the whole device are three different things. Saving a config file to iCloud Drive only confirms that the file was saved; a full-device backup is no substitute for checking Shadowrocket's data item by item. The specific items and controls covered by in-app sync depend on what the current interface shows. Don't assume it includes every setting.
- On both devices, check the Apple Account used for iCloud in system Settings. This is separate from checking the account used for App Store purchases.
- Go to system Settings → Apple Account → iCloud. Check that iCloud Drive is enabled, that you have enough storage, and that the relevant apps are allowed to use iCloud.
- Open Shadowrocket and check the iCloud-related options currently available in Settings. Read each option's description to confirm which data it handles, then enable the relevant items. If you can't find an iCloud option, use the file export method in the next section.
- Connect the old device to the internet and let sync finish, then check the new device. Don't edit the same config on both devices at once or erase data on either device before checking what's there.
- On the new device, compare subscription groups in Home and file names and contents in Config. Matching file names alone don't confirm that local changes were transferred.
If the new device has a config file but the original subscription is missing from Home, treat the restore as incomplete and check the subscription source instead of repeatedly toggling the VPN. If the old and new devices have different content, keep a copy of each before choosing which one to use. This avoids overwriting a usable device with older content.
3. Export a config file to preserve local rules and dependencies
An exported file is useful for keeping a snapshot of a specific config. In Config, confirm which file is currently in use, then open its action menu. Use the Share or export option shown in the current interface to save the file to Files. If long-pressing the file opens an action menu, you can continue from there. Menu names and locations may vary; a config's remote URL is not a file backup.
- In Config, find the active config and check its name. Don't export an old file that isn't enabled.
- Use the file action menu's share or export option. In the system share sheet, select Save to Files and save it to a folder you control.
- Give the copy a distinctive name, such as
home-before-migration.conf. Don't overwrite your only existing copy. - Open the exported file in Files and check that it contains the expected config sections and local rules. A file that exists but is empty is not a successful backup.
- If the config references remote rule resources, record their URLs separately. If it references other local files, save those too and check the references on the new device.
The snippet below shows what to look for when checking whether rules were preserved; it is not a replacement config. Compare the rule content and ordering with the original file rather than searching for just one keyword.
[Rule]
DOMAIN-SUFFIX,example.com,DIRECT
IP-CIDR,192.168.0.0/16,DIRECT,no-resolve
FINAL,DIRECT
Rules are generally matched from top to bottom, so custom DOMAIN-SUFFIX, IP-CIDR, or GEOIP rules must be present and in the expected order. FINAL is the fallback when no earlier rule matches. Replacing your original fallback policy with DIRECT from an example would change routing behavior; don't copy it just to pass a check.
- If a rule references a named policy or policy group, confirm that the name still exists in the restored config and that its spelling and capitalization match.
- If the file contains subscription URLs, authentication passwords, or private keys, treat it as a credentials file and don't share it in public discussion spaces.
- Keeping a remote rule URL does not mean the resource itself is saved offline. The new device still needs to be able to access it.
4. Restore on a new device: handle the app, files, and subscriptions separately
Shadowrocket is a closed-source commercial app for Apple platforms, primarily used on iPhone and iPad, and is available exclusively through the App Store. When moving to a new device, check the original purchase account and look for the app in the App Store. The product page app ID is 932747118, and the developer is Shadow Launch Technology Limited. Refer to the App Store page for purchase details, compatible devices, and system requirements.
- Restore the app: Install Shadowrocket from the App Store. Your purchase history helps you access the app; it won't restore a separately lost subscription URL.
- Restore files: Use a config synced through iCloud, or select an exported file in Files and share it with Shadowrocket using the system share sheet. After importing, check Config and select the file you intend to use.
- Restore subscriptions: If the relevant subscription isn't in Home, import the complete subscription URL you already have using Home's add option. Check the contents before updating, and avoid adding multiple groups from the same source.
- Check parameters: Compare each manual entry's protocol, address, port, and authentication details. Use the original port value. For example, if the original entry uses
443, keep it; don't change every entry to443just because TLS is enabled. - Confirm permissions: The first time you enable a connection, follow the system prompt to allow adding a VPN configuration. Permission on the old device does not mean the new device is already authorized.
A one-time app purchase is not a service plan. This site does not provide, sell, or recommend nodes or subscriptions. Restore using only provider details you already have. If your original subscription URL has expired, check your existing service account for a valid URL; reinstalling the app cannot fix credentials that have expired on the server.
5. Check Global Routing and On Demand after restoring
A successful config import and correct connection behavior are two separate checks. If Global Routing is set to Proxy in Home, that doesn't prove rules are routing traffic as intended. If it's set to Direct, a request that bypasses the proxy doesn't mean the subscription is broken. To verify rules, explicitly select Config and check the results against that config.
| What to check | Details to verify | What to do if something differs |
|---|---|---|
| Home → Global Routing | Whether Proxy, Direct, Config, or Scene matches the intended use on the old device | Select a clearly defined mode first. If using Scene, also check its associated settings. |
| Config | The selected file, local rules, and policy references | Compare with the exported copy and make sure you haven't enabled an older file with the same name. |
| Settings → On Demand | Whether it's enabled and the conditions that trigger it | Test the connection manually first, then restore the automatic trigger settings you need. |
| Home | Subscription update results, selected entry, and connection parameters | Determine whether the subscription failed to fetch or the connection to the remote server failed. |
Change only one variable at a time while testing. Keep a known-good config, connect manually, and visit a destination you normally use. Then check the destination address and policy in the connection log. If only one domain behaves differently, check the rule matching that domain first. If the subscription updates but an entry won't connect, check the address, authentication, transport parameters, and current network conditions.
- Works on the old device but not the new one: compare parameters, selected entry, Global Routing, and system permissions before resetting the entire config.
- Manual connections work, but behavior changes when you switch networks: check Settings → On Demand and any relevant conditions for the Scene you're using.
- Most requests work, but a specific domain doesn't: check that rules such as DOMAIN-SUFFIX still appear before FINAL and that the referenced policy is valid.
6. Common transfer issues and cleaning up the old device
Why is Home empty when the new device has a config file?
First check whether the file actually contains connection details. A rules file is not a complete subscription backup. On the old device, check the subscription source; on the new device, import the link you already have using Home's add option, then check that the entries appear. Don't mistake a rules section in a config file for subscription content.
Why did my local changes disappear after updating the subscription?
An update retrieves the current remote content. Whether local changes are preserved depends on the specific item and how the update is handled. Stop updating repeatedly and compare the changed fields against your saved notes. After restoring, keep independently maintained rules in a clearly named config copy and export it again.
My data isn't showing up in iCloud. Should I delete and reinstall the app?
Don't delete your only copy yet. Check the iCloud account, Drive permissions, available storage, and network connection on both devices. Also confirm which sync items are actually enabled in the app. If the old device can still read the data, export the config to Files and restore it using the file-based method.
Can I erase the old device as soon as the new one connects?
First check subscription updates, rule matches, and behavior when switching networks, and keep a separate config copy. Before deleting app data, also confirm the sync setup so a deletion isn't propagated to other devices. Make sure your local copy isn't stored only on the old device.
For a complete transfer, confirm the app source, restored config, expected subscription updates, matching manual entry parameters, intended routing mode, and system permissions. If anything remains unchecked, keep the old device and exported files. Don't treat opening a webpage once as a complete migration check.