mrkeyoor.com_
Wed 09 Sept 13:29 UTC
Webevaluationupdated 09 Sept 2026

MusicFree review

MusicFree's primary documentation and issue discussion are in Chinese, although an English README exists. It is a free Android and Harmony OS music player that stores its own data locally and relies on user-installed plugins for search, playback links, playlists, artist pages, and lyrics.

trackingstars / 7d
Verdict

Our MusicFree setup stopped after 130 seconds because Yarn saw Node 18.20.8 and minimatch required Node 20 or at least 22, so source builders should not trust the stated Node 18 floor without testing their exact lockfile path. The released APK is worth considering for Android users who will audit plugins and keep backups. Avoid it when you need a bundled catalog, dependable restore behavior, iOS support, or a predictable commercial-use policy.

We ran it

Lab card: what happened when we ran MusicFreeScreenshot of MusicFree (musicfree.catcat.work)
Install✗ · 130s
Build
Repo500 files~34,374 lines of source · 9.5 MB · 1 CI workflows

Answers from our run

Does MusicFree build from source?

The dependency install failed, and the project has no separate build step. We cloned commit d118b18 into a clean Debian container with 3 CPUs and no project-specific setup.

Who should not use MusicFree?

Anyone expecting a ready-made streaming catalog: the README says MusicFree includes no music source and depends on plugins for every online result.

What are the alternatives to MusicFree?

MusicFreeDesktop, Symphony, OuterTune. Our MusicFree setup stopped after 130 seconds because Yarn saw Node 18.

Setup2/5Yarn install failed after 130 seconds on an engine mismatch
Docs3/5English README exists; deeper guidance and support skew Chinese
Community4/526,739 stars with issue activity in September 2026
Maturity2/5Hobby beta with active fixes and unresolved data-loss reports

Who it’s for

Android or Harmony OS users willing to choose and inspect their own music-source plugins.
People who want an ad-free player with local playlists, themes, lyrics, and local files.
Plugin authors comfortable writing CommonJS modules against MusicFree's protocol.
Hobbyists who accept beta software, irregular releases, and support centered on Chinese channels.

Who it’s NOT for

Anyone expecting a ready-made streaming catalog: the README says MusicFree includes no music source and depends on plugins for every online result.
Users who cannot assess downloaded JavaScript: the project warns that unknown plugins can make suspicious network requests or cause damage.
iPhone users or people seeking this repository's app on desktop: the README supports Android and Harmony OS only, with desktop handled in a separate repository.
Phones below Android 7: the 0.5.0 changelog says the React Native 0.76.5 upgrade dropped older Android versions.
People who cannot risk playlist or startup failures: issue 595 reports blocked local restore and WebDAV backup, while issue 647 reports a startup crash after a large plugin source was installed.
Commercial redistributors seeking one simple permission statement: the repository declares AGPL-3.0 while its usage notes separately ask users not to use the code commercially.

Setup reality

Our Yarn install failed with exit 1 after 130 seconds. The log says minimatch@10.0.1 requires Node 20 or at least 22, while Yarn saw Node 18.20.8. It also warned that package-lock.json was present beside Yarn's lock data. We obtained no build or test result after that failure.

End users install an APK, then add a local .js plugin or a network plugin list before online search and playback work. Building from source needs the React Native Android toolchain. The repository's one CI workflow uses Node 20, Java 17, npm, Gradle, and optional signing secrets.

The package manifest says Node 18 or newer, but our failed dependency check did not accept the 18.20.8 runtime reported by Yarn. The sandbox image was labeled Node 22, and the log does not explain why Yarn saw Node 18.20.8. The 500-file checkout has no Dockerfile to standardize that toolchain.

MusicFree ships no music sources

The primary README is Chinese, and most issue traffic is Chinese too. An English README covers the main product, warnings, plugin model, and download route. MusicFree itself is an Android and Harmony OS player. Search, albums, artists, online playback, playlist import, and lyrics come from plugins rather than built-in service integrations. That distinction matters because a fresh install is a player shell until the user supplies a local plugin or a network plugin list.

The app side is reasonably focused. It stores playlists and settings locally, plays local files, supports light and dark themes, accepts custom backgrounds, and can associate one track's lyrics with another. Our measured commit d118b18 contained 500 files, about 34,374 lines of source, and 9.5 MB of checked-out code. It uses React Native 0.76.5 and Expo 52, while the published 0.6.2 release provides APKs for several Android CPU architectures.

CommonJS plugins carry the search and security burden

A MusicFree plugin is a CommonJS module implementing functions for search, playback, albums, artists, playlists, or lyrics. The host handles concerns such as pagination and caching. That separation lets one player work with different legal, self-hosted, or public sources. It also means the quality and continuity of online playback depend on code that may have a different author, update schedule, and data source from MusicFree itself.

The README tells users to inspect third-party plugins for suspicious network requests and warns against installing unknown code. That is unusually direct and entirely appropriate. A .js file fetched from a URL is executable logic, not a passive playlist. Our 130-second install failure says nothing about plugin safety, and the repository makes no promise to vet every external source. Anyone deploying this for less technical users should control the plugin list instead of asking each person to judge JavaScript.

What happened when we ran it

Our sandbox tried the repository's Yarn path at commit d118b18. Installation failed with exit code 1 after 130 seconds. Yarn reported that minimatch@10.0.1 accepts Node 20 or versions at least 22, but the runtime it saw was Node 18.20.8. It printed the same incompatibility again after restarting its install output. The failure occurred during package fetching, before this run established a build or test result.

The log also warned about package-lock.json and advised against mixing package managers. We do not have evidence that the second lockfile caused the engine failure, so those are separate findings. The manifest declares Node >=18, which does not match the dependency's requirement on the path Yarn resolved. Although our container image was labeled lab-node:22, Yarn reported 18.20.8. The log does not show why. That discrepancy needs reproduction before anyone changes an engine field or lockfile.

The lab scan found 1 CI workflow, no Dockerfile, and no tests directory. Those signals do not prove the project lacks tests, since its manifest defines a Jest command. They do show that the repository does not supply a container recipe matching its mobile build. Source contributors must reconcile the JavaScript install before Gradle can produce an APK.

The only CI workflow uses npm, Node 20, and Java 17

The beta workflow takes a different route from our failed Yarn install. It runs npm ci on Node 20, sets up Temurin Java 17, then invokes the Android Gradle wrapper. Release signing is conditional on repository secrets. This gives contributors a concrete working outline, but it also exposes the lockfile ambiguity: the declared project ecosystem includes Yarn artifacts while the automated Android build trusts package-lock.json and npm.

No build or test measurement followed our 130-second failure, so the workflow cannot be treated as a substitute lab result. It triggers on version changes in the development branch or by manual dispatch, and it builds beta APK artifacts. There is no broad pull-request workflow visible in the measured checkout. A contributor should copy the CI versions first, use npm's lockfile path, and then verify Jest and the release Gradle task locally.

Local app data does not make downloaded plugins private

The project says MusicFree stores its own data locally and does not collect personal information. That is a useful default for playlists and preferences. Network plugins remain outside that promise: their job is to contact sources, and the README assigns responsibility for third-party plugins and their generated data to the user. Treat every plugin URL as a software installation. Review changes when a subscription updates, especially if the source controls many plugins at once.

Current reports also make backups important. Issue 595 describes a 0.6.3 beta user who could create a local backup but could not select it for restore, while WebDAV backup returned a network failure. Issue 647 describes version 0.6.2 freezing or crashing on Android 13 after a source containing many plugins was installed, leaving app-data clearing as the reporter's recovery. These reports are specific cases rather than proof that every device fails, but both hit recovery paths users depend on.

Android and Harmony OS are the supported mobile targets

The README names Android and Harmony OS only and directs desktop users to the separate MusicFreeDesktop repository. The 0.5.0 changelog says the React Native 0.76.5 update raised the floor to Android 7. Harmony OS support also has open platform gaps: issue 645 asks for status-bar controls on a newer Harmony OS device, and issue 464 requests a HarmonyOS Next HAP package. Buyers should test notification controls, background playback, storage access, and restore on the exact phone.

The project remains active even though stable release 0.6.2 was published on October 11, 2025. GitHub recorded the last push on September 6, 2026, with new issue activity the next day. It had 26,739 stars and 277 open issues and pull requests when fetched. The maintainer's own README calls it a hobby project with limited daily time, irregular updates, and a long unstable-test period. That warning is more useful than the star count when deciding whether to depend on it.

Alternatives

ProjectWhat it isPick it when
MusicFreeDesktopThe related plugin-based MusicFree player for desktop operating systems.pick this instead when the same general plugin approach is wanted on a computer rather than a phone.
SymphonyA lightweight Android player focused on music already stored on the device.pick this instead when local-file playback matters and remote source plugins add unwanted risk.
OuterTuneAn Android player for local files and YouTube Music with a Material 3 interface.pick this instead when a defined service integration is preferable to installing arbitrary source plugins.

What people are saying

  1. [github-trending] maotoumao/MusicFree
  2. [velocity-scout] maotoumao/MusicFree

Sources

  1. MusicFree repository and Chinese README
  2. MusicFree English README
  3. MusicFree plugin documentation
  4. MusicFree 0.6.2 release
  5. MusicFree beta build workflow
  6. Backup and restore issue 595
  7. Plugin-source startup crash issue 647

More web reviews

BongoCat · react-hook-form · fasthttp · pretext · solid · quasar · the whole board →