Version selection guide
How to choose between packages
A single client may offer multiple files to match the interface technology, processor architecture, or distribution package format. Choose based on device information, not file size or the order of names.
Check system information on desktop platforms
Windows users should first choose between the modern Desktop interface and the classic WPF interface. They are not simply a “full” and “lite” edition; the main difference is the UI framework and workflow. macOS users must choose arm64 or x64 based on the chip field. Linux users must match both the distribution family and CPU architecture.
If the device is managed by an organization or another person and the architecture is unclear, check processor information in system settings or ask the administrator. Do not guess from numbers in the filename or install multiple mismatched packages by trial and error.
Choose the Android client first
v2rayNG and v2flyNG use different core implementations. If a subscription provider specifies a client or core, follow those instructions; without a specific requirement, start with v2rayNG. After choosing the client, select arm64 or universal. Prefer arm64 on newer mainstream devices and universal when compatibility is uncertain.
When switching clients, importing the subscription is not enough. Recheck routing rules, LAN bypass settings, per-app proxy scope, DNS policy, and connection mode, because defaults and configuration locations may differ between clients.
Review configuration changes when updating
Client updates may change the interface, core capabilities, subscription parsing, or system integration. Save the current configuration details first, then check in order whether the subscription refreshes, servers connect, the system proxy is enabled, and routing rules still work as expected. This narrows upgrade issues to a specific step.
If the current version is stable, read the release notes and relevant tutorials before scheduling an upgrade. When connection problems occur, check the runtime log and client messages first rather than blaming the package itself.