v2rayN Avalonia vs. WPF: UI Frameworks, Supported Platforms & Which Version to Choose

Compare the v2rayN desktop builds: WPF is for Windows, while Avalonia supports macOS and Linux. Find the right version for your operating system.

At a glance

Choose the UI version for your operating system first, then pick an installer that matches your processor architecture. WPF and Avalonia affect the window, menus, and platform integration—not node speeds or protocol support. This guide is for anyone choosing a v2rayN installer, moving from Windows to another desktop OS, or deciding whether to switch UI versions. Follow the steps to choose a package, migrate settings, and verify your connection.

Know the difference between the UI framework, proxy core, and node configuration

WPF is a desktop UI framework for Windows. Avalonia is a cross-platform desktop UI framework that lets v2rayN offer desktop builds for macOS and Linux, among other platforms. Both provide v2rayN’s graphical interface for viewing servers, managing subscriptions, and editing routing rules before passing configuration to the proxy core. Avalonia is not a new proxy protocol, and WPF is not the name of a proxy core.

For example, having a VLESS configuration in your subscription does not mean switching UI versions will fix connection problems. Compatibility depends on whether the proxy core supports the required settings, whether the server configuration matches, and whether all fields were imported correctly. With the same node, core, and routing rules, the UI framework alone cannot tell you which version will be faster.

Choose WPF or Avalonia for your operating system

Start by checking which operating systems are currently listed on the download page. Windows users can choose based on their preferences and available builds. macOS and Linux users should select the Avalonia desktop build for their OS rather than trying to run the WPF package. The recommendation below is for users who want to keep the classic Windows interface; WPF is not the right choice for every device.

WPF: Keep the classic Windows interface

Recommended

Runs on Windows. If your current setup is stable and you’re used to the menus and tray controls, sticking with the WPF build for your system can save you from having to learn a new interface. Check the package notes to see whether additional runtime components are required.

Best for: Everyday Windows use, existing WPF setups, and users who want to keep their familiar workflow.

Avalonia desktop: Choose the build for your OS

Avalonia provides a cross-platform desktop UI for macOS and Linux, and may also be available for Windows. Tray controls, permissions, and system proxy behavior can still vary by OS, so a similar-looking interface doesn’t mean the underlying settings work exactly the same way.

Best for: macOS or Linux desktops, working across operating systems, and users who prefer a consistent interface layout.

If your current WPF build handles subscription updates, routing, and everyday connections, there’s no need to migrate just for the sake of “cross-platform” support. If you’re setting up v2rayN on macOS or Linux, choose the desktop build for that OS and check which features it offers. Don’t expect every menu to have the same name as in Windows screenshots.

Check your system architecture, package type, and runtime dependencies

Choosing the right framework is only the first step. An unsupported OS or processor architecture, or a missing runtime dependency, can prevent the app from starting. Don’t install over your existing setup based only on whether the filename contains v2rayN.

  1. Check your system type in Windows: Open Settings → System → About, check System type under Device specifications, then choose an x64 or ARM64 package that’s actually available on the download page.
  2. Check your Mac’s chip: Open the Apple menu → About This Mac to see whether your Mac has Apple silicon or an Intel processor, then choose the matching architecture listed on the download page.
  3. Check your architecture on Linux: Run the command below. A common output of x86_64 corresponds to x64, while aarch64 corresponds to ARM64. Then choose a package format available for your distribution.
  4. Check the dependency notes: Find out whether the package is self-contained or requires a system runtime. Whether you need to install the .NET runtime depends on the package notes and any startup errors—not simply whether it’s called WPF or Avalonia.
uname -m

Linux deb, rpm, and archive packages are not interchangeable. Choose a format supported by your distribution’s package system. With an archive, you may also need to set execute permissions and install dependencies. If macOS shows a security warning, first confirm the package source and compatibility, then follow the standard OS authorization process. Don’t disable system security features altogether.

Migrate subscriptions and routing: keep the configuration source, then recheck system settings

When moving from WPF to Avalonia, or from Windows to another desktop device, start by reusing your subscription URL. A subscription usually distributes node configurations; it does not sync all client preferences. Check the system proxy, listening address, DNS, routing rules, and local file paths individually on the target device.

Migration plan: keep the old setup and test the new one separately

Original device or UI version
  • Note the subscription source and group names. Keep URLs containing access credentials secure.
  • Record the current node, routing mode, DNS, and local listening settings.
  • Keep a backup of the original configuration; don’t delete a working setup right away.
Target device or new UI version
  • Add the same subscription URL, save it, then update the subscription.
  • Select a node and confirm its protocol, transport, and security settings are complete.
  • Reconfigure OS-specific options individually, then check the logs and test web access.

Sharing a subscription doesn’t sync every setting. Verify the nodes first, then migrate routing and traffic-handling settings.

In the commonly used Chinese-language v2rayN interface, go to Subscription Group → Subscription Group Settings to add the URL, then use the update option in the Subscription Group menu to fetch nodes. Menu names and locations may vary between builds. If you can’t find the exact label, look for the subscription group manager and the update subscription function. Don’t import a subscription URL as if it were a single-node link.

When migrating local routing files, check that their paths are still valid. Windows drive-letter paths won’t work as-is on macOS or Linux, and case-sensitive filenames may affect whether files are found. If you’re restoring a full configuration backup, confirm that the target version supports its format. Don’t force-copy the entire configuration directory to another platform while the app is running.

Verify the local listener and system proxy; don’t judge connectivity by the interface

After importing your settings, first confirm that the proxy core starts successfully. Then check whether apps are actually using the local proxy. The example below uses 127.0.0.1:10808 as a local listening address; this is not a claim that every build uses the same default. Check the client settings and logs for the actual address, port, and inbound type.

127.0.0.1
A local loopback address, not a remote server address
10808
Example listening port; check your actual settings
  1. Confirm that the core starts: Check the logs for configuration parsing errors, missing core files, or a port conflict. Fix startup errors before testing web access.
  2. Check the inbound type: Confirm whether the port provides SOCKS, HTTP, or a mixed inbound. If you set a proxy manually in an app, its protocol must match the inbound type.
  3. Check the system proxy: Set the traffic-handling mode in v2rayN’s system proxy controls, then check the proxy status in your OS. Desktop environments don’t all read system proxy settings the same way.
  4. Distinguish routing from traffic handling: The system proxy directs some apps to send requests through the client; routing determines whether those requests go direct or through the proxy. Setting routing to global proxy does not mean every app is using it.
  5. Test the app you want to use: First visit a website in a browser that reads the system proxy, then test your target app. If the app has its own proxy settings, configure them separately.

A successful node latency test only shows that the test path received a response. It doesn’t replace testing web access, DNS resolution, or the target app. Differences between Avalonia and WPF interfaces also don’t explain every system proxy issue. If nodes pass latency tests but apps can’t connect, check which apps are covered by the system proxy instead of repeatedly reimporting the subscription.

FAQ: Rule out these issues before switching versions

I’m using WPF on Windows. Do I need Avalonia to keep using my subscription?

No. There’s no need to switch just because the UI framework is different. Update your subscription, check the affected node’s settings, and review the proxy core logs. If only one node fails to connect, check its protocol settings, server status, and core support. Choosing a UI version and having an active subscription are separate issues.

After switching to Avalonia, my nodes are still there. Why does routing work differently?

Check the current routing mode, rule order, and DNS settings first. Then confirm that the system proxy or TUN is actually enabled. Reimporting a subscription usually restores the node list, not all the rules and system settings from your old device.

Why won’t one version start when both are open?

Quit one instance, then check the logs for the one that failed. If the logs report an address or port conflict, check the local listening port. For everyday use, let a single instance manage the system proxy. Even with different ports, two instances should not manage the same system proxy settings at the same time.

Can I copy the same configuration directory between a computer and an Android device?

Don’t copy the entire directory. Use v2rayN on desktop and v2rayNG or v2flyNG on Android; their configuration storage and settings differ. Add the same subscription on each device, then configure routing separately. v2rayNG uses the Xray core, while v2flyNG uses the v2fly core. Check that the relevant core supports the features your nodes require.

Keep the selection process simple: choose your OS, match the processor architecture, check package dependencies, then verify the subscription, proxy core, and traffic handling. On Windows, choose based on your interface preferences. On macOS and Linux, select the Avalonia desktop package for your OS. Don’t treat framework names as a speed ranking or overlook each device’s network settings just to keep interfaces consistent.

Download v2rayNChoose a client for your platform