Using Clash on iPhone and iPad differs from running the core directly and setting a system proxy on desktop. The iOS client takes over traffic through Apple’s Network Extension interface, so the first connection requires permission to add a VPN configuration. A subscription link supplies nodes, proxy groups, and rules to the client. Installing the app, importing the subscription, and granting system permission are three separate steps; skipping any one of them prevents a normal connection.
The compatible clients available in the App Store depend on the store region, operating system version, and the developer’s maintenance status. App names and features may also change. Before you begin, check the Download Center on this site for the currently recommended iOS client, then verify its app name, developer, release date, and system requirements in the App Store. Do not rely on a similar icon alone, and do not mistake a desktop installer for an iPhone-compatible file.
Pre-installation checklist: device, store, and subscription details
Open “Settings → General → Software Update” first and confirm that the device’s iOS or iPadOS version meets the client’s requirements. Older systems may be unable to install the current release; even if the app was downloaded before, only a build compatible with the older system may be available. If the device is managed by a school or business, also check “VPN & Device Management” for policies that restrict network extensions, block new VPN configurations, or require an organization-managed proxy.
Next, prepare a valid subscription address. A subscription is usually an HTTPS URL generated by the service provider; the client accesses it to retrieve configuration content. Because the address may contain an account identifier or access token, treat it as a credential: copy it only into the client you intend to use, and never place it in public notes, screenshots, forums, or online conversion tools. If the provider offers a “universal subscription,” “Clash configuration,” and formats for other clients, choose the one explicitly marked as compatible with Clash or Mihomo.
| Check item | What to verify | Typical impact |
|---|---|---|
| System version | Meets the minimum requirement listed on the App Store page | Determines whether the app can be downloaded, installed, and launched |
| Store region | The target app is visible in the current account’s region | Search results and download availability may differ |
| Available storage | Enough space remains for the app, configurations, and logs | Insufficient space can cause installation or update failures |
| Subscription format | Uses a Clash- or Mihomo-compatible configuration | Invalid formatting prevents proxy groups from being generated |
| Device management | New VPN configurations and network extensions are not restricted | Permission approval may not complete |
App Store download: verify the name and developer carefully
In the App Store, enter the complete client name listed in the Download Center. Search results may include network tools with similar names, so open the product page and verify the developer, app description, latest update, privacy information, and system compatibility. When an iPhone and iPad share the same Apple Account, previously acquired apps can be reviewed in purchase history, but redownloading still depends on the app’s current status and system compatibility.
- Check the Download Center on this site for the currently recommended client and supported platforms.
- Open the App Store and search for the complete name; do not identify an app by its icon alone.
- Open the product page and verify the developer name, version history, and required system version.
- Tap Get or the purchase button, then confirm with Face ID, Touch ID, or your account password as prompted.
- Wait for installation to finish, launch the app from the Home Screen, and read its first-use instructions.
Some iOS network clients are paid apps; the current App Store page determines the price and available regions. Whether a purchase supports Family Sharing or installation on other devices also depends on the developer’s terms and App Store rules. If you cannot find the target app, check the spelling, store region, and system version first. Do not install an app with a similar name but different developer information.
On iPad, search results may default to “iPad Apps” only. If the target client is offered in iPhone compatibility mode, use the search filters to view that category. A successful installation only means that the client is now on the device; no subscription has been imported and no system VPN has been established yet. An empty profile or no nodes on the main screen is normal at this initial stage.
Importing a subscription: URLs, files, and the clipboard
Button labels vary by client and may include Profile, Configuration, Subscription, Remote Config, or Download from URL, but the workflow is largely the same: create a remote configuration entry, enter the subscription address, and let the client download and parse YAML. After import, you should see proxy groups, a node list, or rule information. If you see only plain text or zero nodes, the address is usually incompatible, the link has expired, or the server returned a login page instead of a configuration file.
Import via subscription URL
- Copy the Clash-compatible subscription link from the service provider’s account page.
- Open the client’s Configuration or Profile page and choose to add a remote configuration.
- Paste the link into the URL field and give the profile a recognizable name.
- If an automatic update interval is available, set it based on how often you use the configuration; when unsure, keep the client’s default.
- Start the download or save operation and wait for the client to finish parsing.
- Return to the profile list and set the newly imported profile as the active one.
Some service pages offer a one-click import button. After you tap it, Safari attempts to open the app through the URL Scheme registered by the client, and iOS may ask, “Open in [app]?” Before confirming, verify the app that will open. If the button does nothing, copy the subscription URL directly and follow the manual import steps; this usually makes the problem easier to isolate.
Import via a local YAML file
If you receive a YAML file, save it in the Files app first, then choose file import in the client. Configuration files typically use the .yaml or .yml extension. The iOS Share Sheet may also offer “Open in [target client],” but support depends on the client implementation. File import works well for a fixed configuration, but it does not automatically retrieve later node and rule changes from the subscription server.
A configuration recognized by the Clash family of cores typically includes fields for listeners, proxies, proxy groups, and rules. A mobile configuration generated by a provider may not expose every field, but it should at least produce selectable policies and final rules. The example below only illustrates the structure and should not replace a real subscription:
mode: rule
proxies:
- name: Example
type: socks5
server: 192.0.2.10
port: 1080
proxy-groups:
- name: Select
type: select
proxies:
- Example
- DIRECT
rules:
- DOMAIN-SUFFIX,example.com,Select
- MATCH,Select
In a configuration, proxy-groups determines the policies available on the main screen, while rules match traffic from top to bottom; the final MATCH commonly provides the fallback. Clients using the Mihomo core may also support additional rule types, DNS options, and proxy-provider fields. Field support depends on the core version built into the client; a configuration working on desktop does not prove that it will work the same way on iOS.
VPN permission approval: understanding iOS system prompts
The first time you tap Connect, iOS tells you that the client wants to add a VPN configuration. After you approve, the system may request your device passcode and then show the VPN status in the status bar or Control Center. This step allows the app to establish a local network tunnel through Network Extension and is required for taking over system traffic on iPhone and iPad.
You can review added configurations under “Settings → General → VPN & Device Management → VPN.” Menu names may vary slightly between system versions. If the list does not contain a VPN entry for the target client, the authorization flow was not completed. Return to the client and connect again, watching for another system prompt. If the “Add VPN Configurations” request was canceled, reimporting the subscription alone will not restore the permission.
Desktop Clash commonly distinguishes traffic handling through “System Proxy” and “TUN Mode,” while iOS clients generally run through the system network extension and may show only a connection switch, VPN, or enhanced mode. Do not transfer the desktop TUN switch layout directly to iPhone. For LAN proxying, domain bypasses, and DNS resolution, use the client’s own routing and DNS settings.
If another VPN, enterprise security app, or DNS network extension is already installed, multiple network extensions may compete to take control. iOS generally does not allow two VPNs of the same type to handle all traffic simultaneously. Before enabling a Clash-compatible client, disconnect other VPNs and check whether the target profile remains connected. Confirm the purpose of an old VPN configuration before deleting it; organization-managed or school-managed profiles should not be removed on your own.
First connection check: from profile selection to log review
Once permission is granted, do not immediately change multiple DNS, rule, and routing options. First run a minimal test with the imported profile’s default settings. This makes it easier to determine whether a problem comes from the subscription, node, policy, or an extra setting.
- Confirm that the newly imported Profile is active, rather than an empty or older profile.
- Open the proxy groups and select an available node for the main selection group, instead of leaving an unavailable historical choice active.
- Tap Connect, approve the VPN configuration, and check that the status remains connected.
- Visit a website with a clearly defined rule first, then test commonly used apps instead of relying on a single speed-test result.
- Open the connection logs and check which rule matched the request, which policy was used, and whether DNS or handshake errors occurred.
In rule mode, different websites may use different policies. If one page opens, that only proves that its domain and dependent requests were handled; it does not mean every node and rule is working. Conversely, if a single app cannot connect, the VPN may not be entirely down: its domain may have matched DIRECT, REJECT, or an unavailable proxy group. Rule names, policy names, and destination domains in the logs are the main evidence for checking rule order.
During the first test, use both Wi-Fi and cellular data. If Wi-Fi works but cellular data fails, check whether the client is allowed to use cellular data and confirm that the subscription’s server address is reachable on the current network. If the connection still appears enabled but requests stall after switching networks, disconnect and reconnect to let the network extension establish a fresh path.
Subscription updates and profile management
A remote subscription is not a local file that stays unchanged after one import. The server may update nodes, proxy groups, or rules, and the client must download the profile again to receive those changes. The profile page usually offers a manual update and may support scheduled updates. Make sure the subscription is still valid before updating, then check whether the node selected by the active policy still exists.
Do not set the automatic update interval too short. Frequent requests will not improve node quality and may trigger server-side rate limits. For everyday use, the client’s default interval is usually appropriate; perform a manual update when the provider announces a configuration change. When an update fails, check the HTTP status or error details in the profile information first rather than refreshing repeatedly.
When managing multiple Profiles, name them by purpose and source, such as “Daily subscription,” “Rule testing,” or “Local direct-connection checks.” Importing the same subscription repeatedly creates similar profiles that are easy to confuse during updates and policy selection. Delete duplicates only after confirming they are no longer needed, and keep one verified working profile as a fallback.
- Remote subscription: best for receiving ongoing node and rule updates.
- Local YAML: useful for testing fixed rules, but it does not sync server-side changes automatically.
- Temporary test profile: archive or delete it after field validation to avoid selecting it by mistake.
- Profile name: state its purpose; avoid indistinguishable names such as “New profile” or “Profile 2.”
Subscription updates usually overwrite server-side fields in a remote profile. If the client supports overrides, place custom rules in a clearly defined override layer and verify their application order. Direct edits to cached subscription content may be lost at the next update. For long-term maintenance of complex YAML, consult the YAML Manual on this site to verify fields and rule order.
Troubleshooting: isolate the failing step by its symptoms
The client does not appear in App Store search
Verify the complete name and spelling first, then check the Apple Account’s store region, the device system version, and the app’s compatibility range. Not finding the app does not indicate a subscription problem because configuration import has not started yet. If the app has been removed from the current region, purchase history may not provide an installable version again. Return to the Download Center for currently available options.
Format error after pasting the subscription
Check that the copied content is a complete HTTPS URL and that no spaces, line breaks, or explanatory text were added at either end. If opening the link in a browser returns a login page, error page, or ordinary webpage HTML, the client cannot parse it as YAML. Also confirm that you selected a Clash-compatible subscription rather than a raw link intended only for another protocol client.
The profile imported but contains no nodes
The subscription may return empty content, the account may be in an abnormal state, or the configuration may rely mainly on proxy-providers that the current client core failed to load. Check the logs for provider download failures, unsupported fields, or authentication errors. If the same subscription behaves differently across clients, compare their core types and versions instead of repeatedly deleting the system VPN.
The connection drops immediately
First verify that VPN permission was actually added, then inspect startup logs for configuration parsing, port initialization, DNS, and network-extension errors. Device-management restrictions, another active VPN, or unsupported fields in the profile can all prevent the extension from starting. Temporarily switch to a verified basic profile to distinguish an app-permission problem from an issue with the current Profile.
VPN shows connected but webpages do not load
Check in order whether the proxy group has an available node selected, DNS returns a result, and the rules send the request to the correct policy. Switch to another node and test again while watching for timeouts. If no requests appear in the logs, confirm that the active VPN belongs to the target client. If requests are logged but all time out, focus on node reachability and the current network environment.
The connection stops after the screen locks or does not resume automatically
iOS manages network extensions according to system resources, network changes, and the client implementation. If the client offers on-demand connections or On Demand, enable the feature only after understanding its rules, then test Wi-Fi, cellular data, and Airplane Mode transitions separately. On-demand connection is not node failover; automatic node switching still depends on groups such as url-test and fallback, as well as client support.
After completing these checks, the device should have four verifiable states: the App Store client source has been confirmed, the Profile parses successfully, iOS VPN permission has been added, and real requests match the expected rules in the logs. Further optimization should address one observable symptom at a time instead of replacing the client, subscription, DNS, and rules simultaneously.