On macOS and Linux, choose the Avalonia desktop version for your platform. For a fresh Windows install, start with the desktop version; consider WPF if you prefer its familiar interface or need to troubleshoot a UI compatibility issue. The main difference is the interface layer—not a guaranteed speed advantage or a change in supported protocols. This guide compares platform support, runtime dependencies, display behavior, and configuration migration, then walks through checking ports and system proxy settings.
The UI framework and proxy core
Avalonia and WPF handle the windows; the proxy core handles the connection. v2rayN is a desktop client for managing server lists, subscriptions, routing options, and core processes. WPF is a Windows UI framework, while Avalonia is cross-platform and runs on Windows, macOS, and Linux. On the download page, “Desktop” and “WPF” primarily distinguish these two interface implementations.
A proxy connection also depends on the client generating a configuration, starting the core, and establishing an outbound connection. To determine whether VMess, VLESS, or REALITY is supported, check the selected core and its version, node parameters, and server configuration—not just the window’s appearance. Switching to Avalonia does not change your subscription, and switching to WPF does not add protocol support.
| Layer | Main responsibilities | What to troubleshoot |
|---|---|---|
| UI framework | Window layout, font rendering, list controls, and input interactions | Scaling, window display, system tray, and desktop environment |
| Client configuration | Subscriptions, node selection, routing rules, and core startup parameters | Whether the configuration is complete, outbound routing is correct, and rules match |
| Proxy core | Protocol handling, transport connections, DNS, and routing | Core logs, protocol fields, and server connection results |
| Operating system | Process permissions, system proxy, network interfaces, and routing table | Port conflicts, permissions, and whether apps honor the system proxy |
Troubleshoot UI lag separately from websites that will not load. The former may involve graphics rendering, scaling, or the desktop session. For connection issues, first check whether the core started, whether the local port is listening, and whether the app’s traffic is reaching the proxy.
Choosing a version for Windows, macOS, or Linux
Filter by operating system first, then processor architecture, and only then compare the interfaces. Framework support for a platform does not guarantee that every release includes installers for all operating systems and architectures. Check the options currently listed on the client download page.
Avalonia desktop version
RecommendedA good first choice for a fresh install, with a similar layout across desktop operating systems. Windows users should still check that the display, shortcuts, and workflow suit their needs. On macOS or Linux, download the package for that platform; a Windows package is not a substitute.
Best for: fresh installs, multiple desktop devices, and macOS or Linux
WPF version
Windows only. Keep using it if you know the classic interface, your current configuration is stable, or you need to compare it with Avalonia while troubleshooting a display issue. It is not a guarantee of better performance on low-end hardware, and you should still check system requirements.
Best for: users who prefer the classic Windows interface, existing configurations, or UI troubleshooting
- Windows: Go to Settings → System → About to check your system type. Choose a package that matches your processor and system; the interface name does not indicate the architecture.
- macOS: Open About This Mac and check the chip or processor information to distinguish Apple silicon from Intel, then choose the matching architecture.
- Linux: Run
uname -mto check the architecture. Common values includex86_64for x64 andaarch64for ARM64. Choose a package format that suits your distribution, too.
Bottom line: rule out platform and architecture mismatches first
On macOS and Linux, go straight to the desktop version for your platform. On Windows, compare the two interfaces. If the app will not start at all, check the package format, architecture, and runtime dependencies before changing node protocols.
Appearance, runtime dependencies, and system integration
The two interfaces may differ in list density, menu placement, font rendering, and high-DPI scaling. Avalonia uses its own cross-platform UI framework, while WPF is more closely integrated with the Windows desktop. But font comfort and window responsiveness also depend on graphics drivers, system scaling, and the specific build, so the framework name alone does not tell the whole story.
Both versions use the .NET ecosystem, but whether you need to install a runtime depends on how the package was published. A self-contained release bundles the required runtime components; a framework-dependent release requires a compatible runtime on the system. Neither version can be assumed to work without additional dependencies, and another device’s runtime setup does not tell you whether yours meets the requirements.
Troubleshooting: check startup requirements separately from network permissions
App startup and display
- Check the package’s operating system, processor architecture, and supported system versions.
- Follow startup prompts to identify missing runtime components; do not install several runtimes blindly.
- For high-DPI displays, start with the system-recommended scaling, then test moving the window between monitors.
- On Linux, check the desktop session, graphics dependencies, and system tray support.
Connections and permissions
- Confirm that the core process starts correctly, then review the client logs.
- Check that another client instance is not using the local listening port.
- Test the system proxy and Tun separately; do not change multiple settings at once.
- Set up the permissions and network components required for Tun on your platform.
Test the system proxy first, then enable Tun. An open window does not mean the virtual network adapter and routing permissions are ready.
Check system tray behavior separately, too. Some Linux desktop environments need a tray extension or related component. Whether the app keeps running after you close the window depends on the client settings. If the window seems to disappear, check the process, tray, and close-to-tray options before launching more instances; multiple instances can cause local port conflicts.
Migrating settings and restoring subscriptions
Before switching interface versions, save your subscription URLs and important settings, then back up your existing user data. A subscription can usually restore your server list, but may not include local routing, custom DNS, shortcuts, listening ports, or custom configuration. Saving a subscription URL alone is not a complete backup.
Data structures and storage locations can change between releases, so avoid copying an entire old folder over a new one. Cross-platform migration requires extra care: path separators, core executable paths, and permissions may differ. Use the export, import, or backup tools in the current version when available. Otherwise, keep a copy of the original data and note what you will need to recreate manually.
- Record your current setup: Save the subscription source, active node, routing mode, and local port. If the interface has Settings → Parameter Settings, check the listening and basic options there. Exact section names may vary by version.
- Exit the old instance: Turn off the system proxy or Tun, then exit the client. Make sure the old core is no longer using the listening port before launching the new version.
- Restore your server list: Add the original subscription URL in the subscription manager and update it. Subscription URLs may contain access credentials, so do not include the full URL in public screenshots or logs.
- Start with a minimal test: Select a known-working node and enable only the system proxy. Check that web pages load and review the logs, then restore routing, DNS, and Tun one at a time.
- Keep a way to roll back: Do not delete the original data until you have finished testing the new version. To revert, exit the new instance first, then restore the old setup. Avoid letting both instances modify the system proxy at the same time.
Connection checks and port examples
“The desktop version connects, but WPF does not” does not necessarily point to a framework issue. The versions may be using different active nodes, core versions, routing modes, or listening ports. Before comparing them, align these settings, close the other instance, and test the same destination. The ports below illustrate the troubleshooting process; they are not default values for every package.
Suppose the client is configured to use local proxy port 10808. First, check whether it is listening on the loopback address. On Windows, run the command below in PowerShell. It only tests whether a TCP connection can be made to a local port; it does not test the node, DNS, or remote websites.
Test-NetConnection -ComputerName 127.0.0.1 -Port 10808
On Linux, use the command below to check for the corresponding TCP listening entry. If there is no output, check the core startup logs and configured port before changing the subscription. On macOS, use lsof -nP -iTCP:10808 -sTCP:LISTEN to see which process is listening.
ss -ltnp 'sport = :10808'
- Nothing is listening: Check for a core startup failure, configuration parsing errors, or a port conflict. Make sure you are checking the port shown in the current interface.
- The port is listening, but the browser cannot connect: Check that the system proxy points to the correct address and port, and see whether the browser has its own proxy settings.
- Only some apps bypass the proxy: Those apps may not honor the system proxy. Check their settings first, then consider using Tun.
- Only some websites have problems: Check DNS, rule matches, and node outbound logs. Do not blame Avalonia or WPF for a routing issue that affects only certain traffic.
A basic node latency test is not a substitute for testing the full app. To compare download speeds, use the same node, destination, time period, and routing settings. Without controlling for these factors, you cannot attribute a speed difference to the UI framework. This guide does not rank performance without comparable test conditions.
Common questions
WPF already works on Windows. Do I need to switch?
You do not need to switch just because the interface has a different name. First confirm that your current version meets your protocol and system requirements. If you want the newer interface or a similar workflow across devices, back up your data and test the desktop version. If only certain websites fail, troubleshoot the port, system proxy, and routing first.
Can I install the WPF version on macOS?
WPF is for Windows. On macOS, choose the Avalonia desktop version for your processor architecture. Check your chip in About This Mac, then select the matching package on the download page. A Windows installer cannot run as a macOS app.
Why is my subscription missing after switching to the desktop version?
The new version may use a different user data location, or the old data may not have been imported. Keep the original data, retrieve the subscription URL from the old client, then add and update it in the new subscription manager. Restore routing and DNS separately; do not overwrite the entire configuration folder.
Can I run both versions at once to compare them?
Do not let both instances manage the system proxy or Tun at the same time. They may also compete for the same local port. Exit one version before starting the other, and record the active node, core, listening port, and routing mode so you can test them under the same conditions.
Should I choose Avalonia or WPF for Android, too?
These names refer to the desktop interfaces compared in this guide. For Android, look into v2rayNG and v2flyNG based on the core you need: v2rayNG uses the Xray core, while v2flyNG uses the V2Fly core. Check each node’s protocol, transport settings, and core support; desktop interface selection criteria do not apply.