finds.dev← search

// the find

lyswhut/lx-music-mobile

★ 17,570 · TypeScript · Apache-2.0 · updated Jul 2026

一个基于 React native 开发的音乐软件

A React Native music player for Android that proxies playback through user-supplied JavaScript 'source' plugins — essentially scripts that talk to Chinese streaming platforms like 酷我 and 酷狗. The app itself fetches nothing; it hands song metadata to a QuickJS-sandboxed script and plays back whatever URL the script returns. Aimed squarely at Chinese users who want cross-platform library management without paying for multiple subscriptions.

The QuickJS native module for running user source scripts is the right architectural call — isolating untrusted JS in a separate thread via a dedicated handler loop means a broken source can't hang the UI. The custom Java lyric renderer (LyricView/LyricSwitchView) does smooth scrolling natively instead of fighting React Native's bridge for frame-rate-sensitive animation. Self-hosted sync server option means your playlist data doesn't live on someone else's infrastructure. i18n is wired in from the start with real translation files, not an afterthought.

The whole thing is Android-only with an explicit 'no iOS plans' note — the ios/ directory is a skeleton left over from RN scaffolding, not a usable build. The source plugin model is load-bearing but fragile: when a platform changes its API or encryption scheme, every user is broken until a community maintainer pushes an updated script, and there's no fallback. The supplementary license on top of Apache 2.0 requires users to delete any 'copyright data' within 24 hours, which is legally unenforceable boilerplate that also makes any derivative work legally awkward. Still on Redux in 2026 — not a blocker, but the store management is heavier than necessary for what is essentially a playlist state machine.

View on GitHub → Homepage ↗

// want more like this?

We dig through GitHub every week and send a few repos picked for what you actually care about — each with an honest take like this one.

Get finds in your inbox → Search again →