FlClash v0.8.96 covers Android and three desktop systems
FlClash v0.8.96 is a graphical client for Clash Meta on Android, Windows, macOS, and Linux. It imports subscription links, switches proxy policies, supports dark mode and multiple themes, and can sync data through WebDAV. The interface adapts between desktop and mobile rather than forcing a desktop window onto a phone. Android also exposes start, stop, and toggle actions for system automation. Users still need their own compatible subscription or configuration; the repository supplies the client, not a proxy service.
The project is Chinese-first in practice. Its default README is in English and links a Simplified Chinese version, while most recent issue titles and discussions are Chinese. That is workable for installation because the README's commands are short. Troubleshooting an OS-specific failure may require translation. Our reviewed checkout contained 769 files and about 11,497 source lines, with 55.9 MB on disk before dependency setup. Dart drives the application, while the routing core lives in a Go subproject.
What happened when we ran it
Our sandbox entered the Go project under core/ and failed installation after 17 seconds with exit code 1. Its go.mod replaces github.com/metacubex/mihomo with the local directory ./Clash.Meta. Go then tried to read /work/repo/core/Clash.Meta/go.mod and reported that the file did not exist. That is the entire recorded failure. The log does not show a compiler error, network error, or incompatible Go version.
Because installation stopped at the missing directory, the lab run did not reach a build or a test command. It would be wrong to call either one failed or passed. The checkout at commit 62addf7 had 1 CI workflow file, no Dockerfile, and a tests directory. Those repository signals do not change the measured outcome: the first dependency step could not resolve the local Clash Meta replacement in our fresh unprivileged Debian container with 3 CPUs and 8 GB of RAM.
Recursive submodules are required before Go can resolve
The README puts git submodule update --init --recursive at step 1 of the source build. That command matters because core/Clash.Meta is a Git submodule, and the Go module refers to it through a local replacement. The .gitmodules entry uses an SSH URL at GitHub. Builders need working SSH access for that remote or must adjust the submodule transport. A normal archive download or a clone without submodules leaves the exact hole our 17-second run found.
After submodules, the toolchain splits by platform. Every build needs Flutter and Go. Android adds the Android SDK, Android NDK, and an ANDROID_NDK environment value. Windows requires a Windows machine, GCC, and Inno Setup. Linux requires a Linux machine plus libayatana-appindicator3-dev and libkeybinder-3.0-dev; the setup script can install those packages. macOS builds must run on macOS. This is one codebase with 4 native packaging jobs, not a single portable compile command.
v0.8.96 binaries have host-specific failures
Open issue 2144 describes the current Linux package failing on Ubuntu 20.04.6 because the binary needs GLIBC 2.34 and a plugin needs 2.33, while that release provides 2.31. The request asks for a compatible build. That is a specific boundary for older long-term-support machines, and replacing system glibc by hand would be a bad workaround. Ubuntu 20.04 users should test an older compatible FlClash release or choose another client built against an older baseline.
Windows has its own v0.8.96 report. Issue 2370 says the application would not open on Windows 11 25H2 because MSVCP140.dll, VCRUNTIME140.dll, and VCRUNTIME140_1.dll were missing. Another report, issue 2391, covers a white or invisible window while the VPN can remain active; it traces one case to saved window coordinates or damaged nested JSON preferences. These are user reports rather than universal failures, but they justify testing startup, tray recovery, and shutdown before depending on the tunnel.
KDE 6 TUN mode may need a NetworkManager exception
Issue 1966 documents TUN mode failing on Fedora 44 with KDE 6.6.4 because NetworkManager creates and controls a profile for the FlClash interface. The report includes a workaround that marks the interface unmanaged, then reloads NetworkManager. That changes host network configuration and deserves deliberate review. A proxy client can appear connected while routing is wrong, so validation should include DNS, the public exit address, local-network access, and behavior after suspend rather than relying only on the app's status label.
WebDAV synchronization adds another failure domain. FlClash can move its data between devices, which is useful when 4 supported operating systems share profiles. It also means a restore can overwrite local state, a concern visible in current issue 2389 about script association and enablement settings. Use a dedicated WebDAV location, restrict its account, and keep an export outside the sync folder before the first restore. A routing profile and its scripts should receive the same care as other executable network configuration.
The queue has 432 issues and 88 pull requests
GitHub showed 51,380 stars, 432 open issues, and 88 open pull requests in the same fetch window. The repository's last-push field was September 7, 2026, and issue activity continued on September 8. Release v0.8.96 was published on August 17 with fixes for a Windows delay test plus package-icon and connection-polling work. Those dates show active maintenance and an active support burden. The large queue makes an issue search by OS, version, desktop environment, and routing mode part of setup.
Clash Verge Rev is the cleaner comparison for a desktop-only Clash client. ClashMetaForAndroid narrows the decision to Android, while Hiddify App changes the engine choice to sing-box and supports a different protocol set. FlClash is worth trying when cross-device familiarity and WebDAV sync matter. Start with a release package, verify its checksum, import a disposable profile, and prove traffic behavior. Source contributors should clone recursively before judging anything beyond the missing submodule our 17-second run exposed.

