iOS clients and configuration guides

Clash for iOS
iPhone Client and Setup Guides

From choosing a client to importing a subscription, the steps follow real-world workflows. Find client links for five major platforms, configuration guides, and troubleshooting steps here.

  • Free Forever
  • Open Source
  • mihomo Ecosystem
  • Supports iOS 15+

Platform Downloads

Choose a Client by Operating System

Each operating system uses different packages and permission models. Select your current device first, then compare available clients, system requirements, and installation methods on the download page.

Windows

Ideal for everyday desktop use. The download page lists graphical clients and explains installation, configuration imports, and system proxy integration.

Go to Downloads

macOS

For both Intel- and Apple-silicon Macs. Check your processor architecture before choosing a package, then follow the client prompts to authorize the network extension or system proxy.

Go to Downloads

Android

For phones, tablets, and some TV devices. The download page separates common processor packages and provides links for graphical clients and subscription configuration.

Go to Downloads

Linux

For desktop Linux, servers, and router environments. Most users can choose a graphical client, while advanced users can continue to the mihomo core options.

Go to Downloads

Core Configuration

Rules, DNS, and On-Demand Connections

These four configuration panels cover the operations used most often. Use the index above to jump to a section; each panel follows the practical setup sequence.

Traffic Mode

Rule Mode
Match first, then choose the route

Rule mode works well for long-term use. The client checks domains, IPs, processes, or rule sets from the top of the configuration downward, then passes a match to the assigned proxy group. Send everyday services directly, route selected requests through a proxy group, and keep local access paths for LAN addresses.

Global mode sends most traffic through one policy, making it useful for quickly checking whether a node works, but it is not a good basis for complex configurations. If some websites load while others do not, confirm the current mode first, then check which rule matched the affected domain.

Operating Mode
Rule Mode
Global Mode
Logging

Network Access

LAN and DNS
Define the scope of each layer

Allow LAN lets other devices on the same network connect to this device's proxy port. Enable it only when sharing is actually needed, and make sure the listen address, system firewall, and port settings agree. On iPhone, Local Network permission affects LAN device discovery and access; it is not exactly the same as the proxy connection itself.

DNS hijacking sends system DNS requests to the client's DNS module, keeping resolution results aligned with rule evaluation. When configuring it, check enable, the listen address, enhanced mode, upstream servers, and fallback conditions together. Changing just one address usually will not fix a problem caused by rules, the network, or a node.

Network
Allow LAN
DNS Hijacking
IPv6

Subscription

Automatic Subscription Updates
Keep a local configuration for rollback

Subscription URLs are usually generated by the service provider, and the client downloads the configuration again at the configured interval. Before enabling automatic updates, update it manually once and confirm that the file parses correctly, proxy groups open normally, and rule references produce no errors. This separates an expired URL, a blocked connection, and a configuration syntax problem.

Updating a subscription replaces the content supplied remotely, so temporary local edits may disappear. For DNS, rule, or proxy-group changes that must persist, use the client's supported override and merge features instead of editing the subscription source directly. If an update fails, check URL accessibility, system time, and network permissions first.

Subscription Configuration
Automatic Subscription Updates
Apply Configuration After Update
Keep Local Overrides

On Demand

On-Demand Connections
Set actions for different network conditions

On-demand connections use iOS network conditions to trigger the client, such as automatically connecting on cellular data, a specified Wi-Fi network, or an unknown network. Before configuring this feature, complete one manual connection, confirm that iOS created the corresponding VPN configuration, and allow the client to add its network extension.

Write rules from specific conditions to general ones so a broad rule does not match too early. You can set a home network to disconnect or ignore, and cellular data to connect. If the client reconnects frequently, reduce duplicate conditions first, disable high-frequency health checks next, and then review Low Power Mode and the system's background status.

Automation
On-Demand Connection
Connect on Cellular Data
Trusted Wi-Fi

Quick Start

Get Started with Clash on iPhone in Three Steps

Complete one short, verifiable path before configuring automatic updates, overrides, and on-demand connections. This makes it easier to identify where a problem occurs.

  1. Install and Authorize the Network Extension

    On the download page, open the iOS section and choose a client for iPhone or iPad. On the first connection, iOS will ask to add a VPN configuration; authorize it with your device passcode, Face ID, or Touch ID. Confirm the request in the system dialog, and do not repeatedly toggle the connection before importing a configuration.

  2. Import a Subscription and Check Proxy Groups

    Copy a valid subscription URL, then choose Import from URL on the client's configuration or subscription page. After the download completes, open the configuration and confirm that proxy-group names, rule lists, and the DNS section load correctly. Then open the proxy-group selector and choose a node or an automatic policy for your use case; do not connect just because the configuration name appears.

  3. Connect and Verify Rule Matches

    Enable rule mode and connect, then open one site that should connect directly and another that should use a proxy. If the results are unexpected, check the rule name and proxy group in the connection log instead of changing several settings in succession. Confirm the traffic path first, then determine whether the cause is a rule, DNS, a node, or the local network.

Open Source Context

The Clash and mihomo Open-Source Ecosystem

Clients, cores, and configuration formats operate at different layers. Understanding how they relate helps prevent interface, network, and core issues from being investigated as if they were the same problem.

Project History and Configuration Continuity

Clash established a widely adopted YAML configuration structure covering proxy nodes, proxy groups, rules, DNS, and runtime ports. After the original project stopped receiving active maintenance, the community continued using this approach while developing compatible implementations, rule data, and graphical clients. The core concepts in older guides therefore remain useful, but support for specific fields should be verified against the current core documentation.

mihomo and Graphical Clients

mihomo is one of the actively maintained Clash-compatible cores. It parses configurations, establishes proxy connections, runs rules, and handles DNS. Graphical clients on Windows, macOS, Android, iOS, and Linux typically add subscription management, system proxy integration, network extensions, log viewing, and policy switching outside the core. Interface labels may differ, but the underlying concepts are broadly the same.

Open-Source Code and Issue Diagnosis

Public source code allows the community to inspect configuration fields, behavior changes, and known issues. When something goes wrong, record the operating system, client name, active mode, configuration source, and reproducible steps before deciding whether to inspect the client project or the core project. “It doesn't work” is rarely enough to locate a problem; field errors, rule names, and network status in the logs provide much more useful evidence.

Update Paths and Compatibility Boundaries

Client updates, core updates, and subscription updates are three separate paths. A client update mainly changes the interface and system integration; a core update may change field support and network behavior; a subscription update replaces the nodes, policies, and rules delivered by the provider. When behavior changes, adjust one layer at a time and keep the last working configuration so rollback and comparison remain clear.

mihomo source

git clone https://github.com/MetaCubeX/mihomo.git

Common Checks

Four Checks Before You Start Configuring

Most first-use issues can be traced to one of four areas: the subscription, the mode, the proxy group, or the system state.

What to Check First When a Subscription Update Fails

First confirm in a browser that the subscription URL is still accessible, then check the system time, network permissions, and the update time shown in the client. If the URL opens but the client cannot parse it, verify that the returned content is a valid configuration.

What to Do When There Is No Internet After Connecting

Check the system VPN status, current mode, proxy-group selection, subscription validity, and DNS resolution in that order. Change only one condition at a time and test again after each change so multiple actions do not hide the real cause.

How to Choose Between Rule Mode and Global Mode

For everyday use, prefer rule mode so each request can be sent directly or through a proxy according to the rules. Global mode is useful for briefly verifying whether the selected node can handle traffic, but it does not replace checking which rule matched.

Why Avoid Editing the Subscription Source Directly?

When the remote subscription updates, local edits made directly to its source may be overwritten. Put DNS, rule, or proxy-group changes that must persist into the client's supported override or merge configuration.