FlClash는 ClashMeta(Mihomo) 코어를 Flutter UI로 감싼 프록시 클라이언트다. 짧은 README 한 줄 — "multi-platform, simple, ad-free" — 뒤에 숨어 있는 진짜 선택은 UI 프레임워크다. Dart/Flutter 한 코드베이스로 Android, iOS, Windows, macOS, Linux 다섯 타겟을 동시에 빌드한다.
이 선택이 왜 흔치 않은지는 Clash 프론트엔드 생태계의 분포를 보면 드러난다. Clash Verge와 v2rayN은 Electron+Rust로 데스크톱만 잡았고, Stash와 Shadowrocket은 Swift 네이티브로 iOS·macOS에 머문다. NekoBox 같은 프로젝트는 안드로이드용 Kotlin과 데스크톱용 Qt를 따로 가져간다. 모바일 두 OS와 데스크톱 세 OS를 한 저장소·한 릴리스로 묶은 ClashMeta 클라이언트는 사실상 FlClash가 처음에 가깝다.
기술적으로는 만만치 않은 길이다. ClashMeta는 Go로 작성된 바이너리라, Dart에서 FFI로 직접 호출하거나 사이드카 프로세스로 띄우면서 플랫폼마다 다른 번들링을 해줘야 한다. 터널링 계층도 결국 OS별로 갈라진다. Android는 VpnService, iOS는 NetworkExtension, 데스크톱은 TUN 디바이스나 WinTun 드라이버를 직접 다뤄야 하고, Flutter 데스크톱은 시스템 트레이·자동 시작·관리자 권한 승격 같은 OS 통합 영역에서 여전히 서드파티 플러그인에 의존하는 거친 모서리가 있다. "simple and easy to use"라는 한 줄을 유지하려면 이 모든 분기를 사용자에게 감춰야 한다.
포지셔닝도 읽을 만하다. 중국어권 프록시 앱 시장은 ClashMeta 코어를 가져다 광고 SDK를 박거나 유료 Pro 버전을 분리하는 클론이 흔하다. FlClash가 "open-source, ad-free"를 README 첫 줄에 박은 건 이 생태계에 대한 명백한 카운터포지션이다. Dart 카테고리에서 하루 190스타, 랭크 12위에 오른 흐름은 ClashMeta 사용자층이 플랫폼마다 다른 클라이언트를 갈아끼우는 피로감에 반응하고 있다는 뜻으로 읽힌다. 한 저장소에서 다섯 OS의 릴리스 바이너리를 받아갈 수 있다는 사실 하나가, 잘 만든 네이티브 앱 여러 개보다 실용적으로 강력할 수 있다는 사례다.