Setting up Shadowrocket on an iPhone involves more than pasting a URL. You need a subscription that is compatible with the app, a working internet connection while the profile is imported, and permission from iOS to add a VPN configuration. Once those pieces are in place, the usual routine is straightforward: add the subscription, refresh its server list, choose a route, connect, and check that traffic is working.

This guide walks through that process from the first launch. Button names and screen layouts can vary between Shadowrocket versions, so treat the labels below as landmarks rather than exact wording. If your interface differs, look for the equivalent option for adding a subscription, updating a profile, or connecting to a server. Also check that Shadowrocket is available to you through the App Store in your region; the app is separate from any VPN subscription, and an account with a network provider does not automatically install or configure it.

What you need before setup

Shadowrocket is a third-party iOS client. It can use supported proxy and VPN configurations, but it does not provide a server subscription by itself. You need a separate service that supplies a link or configuration compatible with Shadowrocket. Ask the provider specifically for its iOS or Shadowrocket subscription URL if it offers more than one link type. A link intended for a different client may use a format that Shadowrocket cannot import, even if the link opens in a browser.

There are three items to distinguish before importing anything:

  • Your service account: the username and password, or other sign-in details, used to access the provider’s website or account panel.
  • Your subscription URL: a link that Shadowrocket can request to retrieve or update server profiles. It is usually not the same as your account password.
  • The iOS VPN configuration: a system permission that allows the app to create a local VPN connection on the iPhone. Approving this prompt does not import a subscription or create a provider account.

Keep those items separate. Signing in to a provider’s website does not necessarily add a profile to Shadowrocket, and approving an iOS VPN prompt does not prove that the profile contains usable servers. If you have not yet received a subscription link, check the provider’s account area or its setup instructions. You can also consult the general setup guide for the provider’s client and subscription steps, then return to Shadowrocket for the app-specific process.

Before opening the app, copy the full subscription URL if your provider has supplied one. Avoid removing punctuation, trimming the end of the address, or copying only the visible portion of a shortened link. If the provider presents a QR code instead, use the app’s supported scan or import function when available, or ask whether it can provide a copyable URL. Do not post the link in a public chat, screenshot, or support forum unless the provider confirms it has been revoked or replaced.

  • ✅ Install Shadowrocket from a source you trust and confirm that the app opens normally.
  • ✅ Obtain a subscription URL specifically intended for a compatible client.
  • ✅ Keep the URL private because it may reveal or authorize access to your profile.
  • ❌ Do not paste your account password into a subscription field unless the provider explicitly says that field requires it.

Add the subscription URL

Open Shadowrocket and review its main screen. Depending on the version, the app may show an empty server list, an existing configuration, or a list of previously imported profiles. Find the control for adding a server or subscription. If the app offers several import choices, select the one that accepts a subscription URL or remote profile rather than a manual server entry. Manual entry is intended for users who have individual connection parameters and is not a substitute for importing a provider’s subscription.

Paste the complete URL into the relevant field. If the app asks for a label or remarks, choose a name that helps you recognize the provider or profile; this label is for your own organization and does not change the connection settings. If there is an option to update the profile automatically, leave it at the provider’s recommended setting unless you have a reason to manage updates manually. The exact control names and available options depend on the app version and the subscription format.

Confirm the import and wait for the app to retrieve the profile. A successful import may add one or more server entries or create a selectable group. If nothing appears, first check that the phone is online and that the URL was copied in full. Some subscription addresses are long and easy to truncate when copied from a message or account page. If the provider supplies separate links for different client types, confirm that you did not copy a link meant for another app.

Do not try to “fix” a rejected URL by changing its protocol prefix or editing its contents. Subscription links are generated for a particular service and may include tokens or parameters that must remain intact. If the app reports an unsupported format, ask the provider for a Shadowrocket-compatible link or its recommended import method. If the provider supplies a configuration file rather than a URL, use the app’s supported file-import flow and follow the provider’s instructions for keeping that configuration current.

Refresh and organize profiles

After importing, update the subscription once so the app requests the latest profile from the provider. Look for a refresh or update action associated with the imported subscription; it may be available from the profile list, a context menu, or the app’s configuration area. Wait for the update to finish before testing a server. If the app reports an update error, note the wording and time of the error, but do not share the full subscription URL when asking for help.

Providers may organize entries by region, server purpose, or group. Start by identifying which entries are actual server choices and which are selection groups or rules. A group may choose a server automatically, while a named location may let you select a particular route. The display name is not a guarantee of performance: a nearby location can be busy or unsuitable for a specific destination, and a farther route may work better on your current access network.

For a first test, choose one clearly identified server or provider-recommended group rather than changing several settings at once. This makes it easier to tell whether a problem comes from the subscription, the selected route, or the local network. If your provider offers several protocol types, use the profile it recommends for Shadowrocket unless its support instructions say otherwise. Do not assume that every client supports every protocol or every provider-specific configuration in the same way.

When a subscription refresh replaces or updates entries, the visible names or available routes may change. That is normal for a remotely managed profile. If a previously available entry disappears, refresh once more and check the provider’s service notices or account page before recreating the profile manually. A manually added copy can become stale and may not receive later configuration changes.

Import

Add the complete compatible subscription URL or supported configuration.

Refresh

Request the current profile before choosing a server or group.

Connect

Select one route and approve the system VPN configuration when prompted.

Choose a location and connect

Select a server or group in Shadowrocket, then use the app’s main connect control. On the first connection, iOS may display a system prompt asking whether Shadowrocket can add VPN configurations. Review the prompt and approve it only if you intended to connect using this app. iOS may ask you to authenticate with your device passcode, Face ID, or Touch ID. These steps authorize the local VPN configuration; they do not send your passcode to the service provider.

After approval, return to Shadowrocket if iOS takes you to Settings or another system screen. Start the connection again if necessary. Look for the app’s connected status and the iOS VPN indicator, but do not rely on either one alone. A displayed connection can still have a DNS, routing, or destination-specific problem. Open a site or app that you normally use and confirm that it loads. If your purpose is access to a particular service, test that service directly rather than assuming that general browsing confirms every route works.

For a fair comparison, keep the test simple. Use one access network, one selected route, and one destination at a time. If the first route does not work, disconnect before choosing another entry. This avoids confusing a route change with a profile update or an iOS permission change. When switching between Wi-Fi and cellular data, allow the client a moment to recover and check the connection again; the route may need to reconnect after the network changes.

Shadowrocket can include options for routing, DNS, rules, or proxy behavior. These settings can affect which traffic uses the selected profile. For an initial setup, avoid editing advanced rules before confirming that a basic connection works. If only one app or domain fails, the cause may be a routing rule or the destination itself rather than a failed import. Restore the provider’s default profile or ask for its recommended settings before changing multiple options.

Practical rule: confirm the profile is current, select one route, approve the iOS prompt, and test a real destination before adjusting advanced settings.

Verify the connection safely

Start with a basic browsing check: load a familiar website, then try the app or service you intended to use. If those work, verify that Shadowrocket still shows an active connection. If you use an IP-checking website, compare the displayed network location before and after connecting, but remember that an IP result is only one diagnostic signal. It does not measure every aspect of privacy, route quality, or DNS behavior.

Do not treat a speed-test result as a complete verdict. Results vary with the iPhone’s signal, the Wi-Fi router, the access provider, the test server, and the selected route. A single result cannot establish how the connection will behave at another time or on another network. If a task matters, test the relevant app and repeat the check after a network change rather than selecting a route based on one number.

When the connection is working, note which profile and route you selected so you can return to them later. If you need to disconnect, use Shadowrocket’s disconnect control and wait for the status to change. The iOS VPN indicator should also reflect the change. If you are unsure whether the connection has stopped, check the app and iOS Settings rather than assuming that closing the app always ends a tunnel; behavior can depend on the app’s settings and iOS state.

For a quick connection review, use this checklist:

  • ✅ The imported profile is present and has refreshed without an error.
  • ✅ Shadowrocket shows the route or group you intended to select.
  • ✅ The app and iOS both indicate that a connection is active.
  • ✅ A normal website and the destination relevant to your task can load.
  • ❌ Do not share screenshots that expose a subscription URL, account token, or private profile details.

Troubleshoot common import problems

The URL is rejected or the profile stays empty. Check that you selected the subscription-import option, not a manual server form. Confirm that the entire link was copied and that the iPhone has internet access. If it still fails, ask the provider whether the link is current and compatible with Shadowrocket. Share the app’s error message and your app version with support, but redact the URL and any tokens.

The profile imports but cannot update. Test the phone’s ordinary internet connection first. Then reopen the subscription’s update action and check for a visible error. A link can be expired, revoked, or copied with missing characters. If you have regenerated the subscription link in the provider’s account area, import the new one using the provider’s instructions; do not keep retrying an old address indefinitely.

The app connects but websites do not load. Disconnect and reconnect once, then try another route from the same current profile. Check whether the issue affects every site or only one app or destination. If all destinations fail, confirm that the profile is current and that iOS has granted the VPN configuration. If only some traffic fails, rules or DNS behavior may be involved. Restore default settings before making advanced edits so you can identify the actual cause.

The iOS permission prompt does not appear. Make sure you started a connection in Shadowrocket and that the app is installed normally. Check iOS Settings for an existing VPN configuration or a connection left by another app. Avoid deleting profiles you do not recognize until you know which app created them. If the prompt remains absent or the system reports an error, restart the app and consult the provider or app support with the exact message.

The connection stops after changing networks. Moving between Wi-Fi and cellular data can interrupt an existing tunnel. Wait briefly, check the app status, and reconnect if needed. If the problem repeats, test each access network separately and note whether the profile updates correctly on both. This separates a local network restriction from a subscription or server issue.

A route works on one network but not another. Repeat the test with the same profile and destination on each network, changing only the access connection. Some networks handle VPN traffic differently. If a particular network blocks or disrupts the connection, ask the provider which compatible profile or protocol it recommends for that environment. Avoid installing unrelated profiles or changing several protocol and DNS options at once; otherwise the original cause becomes harder to identify.

Keep the profile private and current

A subscription URL can contain an access token or identify a profile associated with your account. Store it in a trusted location and avoid sending it in an unprotected screenshot, public post, or message to someone who does not need it. When requesting help, describe the import step, app version, iOS behavior, and error text. If support needs to inspect the link, use the provider’s private support channel and follow its instructions.

Refresh the subscription when the provider recommends it or when the profile becomes unavailable. If the service issues a replacement URL, update the imported profile according to its instructions and remove an obsolete entry only after the new one is confirmed. Do not assume that refreshing an app updates your billing status or changes your service account; those are separate provider-side functions.

Finally, keep your troubleshooting notes modest and useful: record the selected profile name, access network type, whether the iOS prompt was approved, and which destination failed. Avoid recording secrets or sharing full configuration files unless support specifically requests them through a secure channel. With those habits, the setup remains easier to maintain and much easier to diagnose if an import or connection problem returns.