Joel-Mercier
wavio
TypeScript

Music streaming app for Android compatible with Navidrome, Jellyfin and OpenSubsonic servers or a local library

Last updated Jul 5, 2026
50
Stars
5
Forks
9
Issues
0
Stars/day
Attention Score
42
Language breakdown
TypeScript 92.8%
Kotlin 2.6%
JavaScript 1.7%
Astro 1.3%
Swift 1.1%
CSS 0.3%
โ–ธ Files click to expand
README

Wavio

Wavio logo

Music streaming app for Android compatible with Navidrome, Jellyfin and OpenSubsonic servers or a local library.

CI

Presentation website

Table of contents

How to install

For now you can only install the app from the releases page.

Two versions are available for 64bit (arm64-v8a) and 32bit (armeabi-v7a) architectures. If in doubt try arm64-v8a first. Simulator architetures (x86, x86_64) are not provided.

You can also apply for the closed testing beta on the Google Play Store in order for the app to be published. To do that I need your email address, so I can send you the link to the beta testing page.

Use Android Auto with a APK install

Android Auto doesn't detect Wavio automatically if you installed the app via APK on Github, Android Auto detects only Play Store apps automatically. To see Wavio with a APK install on Android Auto :

  • On the phone, open Android Auto settings (Settings โ†’ Connected devices โ†’ Android Auto, or open the standalone Android Auto app's settings, varies by phone).
  • Scroll to the bottom and tap "Version" ~10 times until it says developer mode is enabled.
  • Tap the โ‹ฎ overflow menu (top right) โ†’ Developer settings.
  • Turn on "Unknown sources" (sometimes worded "Add new apps to launcher" or "Unknown sources").
  • Reconnect the phone to the car (unplug/replug, or restart the Android Auto session).
  • If it still doesn't show, check Customize launcher in Android Auto settings and make sure Wavio is enabled/checked.

Features

  • Supports Navidrome, OpenSubsonic and Jellyfin servers or a local library
  • Home screen with shortcuts and recently played, recently added, most played, more from artist, highest rated, random and internet radio stations sections
  • Artist screen with albums, songs, liked songs, and similar artists
  • Album screen with songs and similar albums
  • Playlist screen with songs list and editing
  • Search screen with genres, artists, albums, and songs
  • Recent searches history
  • Library screen with starred, playlists, albums, and artists
  • Liked songs screen
  • Player screen with audio controls and synchronized lyrics
  • Floating player for easy access to the currently playing song
  • Queue screen with clearing, editing and reordering support
  • Similar songs screen with songs similar to the selected song
  • AudioMuse-AI support for AI powered sonic similarity. (Navidrome and Jellyfin only)
  • Octo-Fiesta proxy server support. Automatically fetch songs not in your library. (Navidrome and OpenSubsonic only)
  • Podcasts screen with search, podcast series and episodes (provided by Taddy API, 500 monthly free requests)
  • Internet radio stations, listen to radio streams, browse and search (provided by the Radio Browser API, free for non-commercial use)
  • Offline downloads of albums and playlists and tracks, offline actions, automatic dowload of favorite songs, downloads management screen, queued changes screen
  • Music folders (libraries) discovery and filtering across home, search, and library
  • Activity screen with now playing users
  • Share screen with shareable links
  • Servers screen with multiple servers support
  • Settings screen with server scanning, offline downloads, playback, content, display and backup settings
  • Audio quality settings, endless playback, replay gain, equalizer and sleep timer
  • Profile screen with user playlists
  • Edit profile screen with account info and password change
  • Synced lyrics support and retrieval through lrclib.net
  • Bookmarks support. Easy access to a song or podcast favorite parts
  • Landscape mode support
  • Android homescreen widgets
  • Android Auto support
  • Navidrome smart playlists beta support
  • Navidrome/Opensubsonic jukebox mode support
  • Backup and restore
  • Automatic metadata extraction from local files, uses embedded metadata if available or falls back to file system and file name heuristics
  • English, French, German, Italian, Chinese and Russian translations

Translations

Wavio is available in multiple languages thanks to the community. If you want to help translate the app, please join the Crowdin project and help us translate the app to your language.

If your language isn't listed, please open an issue to request it.

Crowdin

Currently supported languages: English, French, German, Italian, Chinese, Russian.

Translation status

Development

This repository is a Bun workspace monorepo with two workspaces:

  • apps/mobile โ€” the Expo mobile app
  • apps/landing โ€” the Astro marketing website
A single bun install at the repo root installs both. Most scripts are exposed at the root as mobile: / landing: (which delegate to the relevant workspace), or you can run a workspace's own scripts with bun run --cwd apps/<workspace> <script>.

Getting started

  • Clone the repository
  • Make sure you have Node v22+ installed
  • Make sure you have bun installed
  • Install dependencies with bun install (from the repo root)
  • Set environment variables in EAS secrets (see .env.example)
  • Prebuild the native development app with bun run mobile:prebuild
  • Run the app with bun run mobile:start and make sure you have a development build for the targetted platform (bun run mobile:android or bun run mobile:ios)

Android

  • Make sure you have the correct environnement for building on Android (Android Studio, SDK, Java, etc.)
  • Make sure you are have the SENTRYAUTHTOKEN and are logged in to the sentry-cli with sentry-cli login
  • Make sure you are logged in to Expo with eas login (check with eas whoami)
  • Build the app with the desired profile bun run mobile:build:android:<profile>
  • Install the app on your device with the generated APK file

Android Auto

In order to test Android Auto, you need to :

  • Install the Android Auto Desktop Head Unit Emulator via Android Studio in SDK Manager > SDK Tools > Android Auto Desktop Head Unit Emulator.
  • Make sure to enable the developer mode in your devices Android Auto settings by tapping the version number 10 times.
  • Run the head unit server in the Android Auto settings
  • On your development machine, run adb forward tcp:5277 tcp:5277 and start the emulator with ~/Library/Android/sdk/extras/google/auto/desktop-head-unit
  • Enable Unknown sources in Android Auto's developer settings (โ‹ฎ menu > Developer settings > Unknown sources) if the app doesn't show up in the emulator
  • You can check the logs related to the android auto service with adb logcat -c && adb logcat ReactNativeJS:V CarAuto:V "*:S"

iOS

Mostly functional, no carplay or widgets support yet. No plan yet to publish to the App Store.

Marketing website (apps/landing)

The landing page is a static Astro site (Tailwind v4, en/fr i18n), independent from the mobile app.

  • Install dependencies with bun install (from the repo root, shared with the app)
  • Start the local dev server with bun run landing:dev (defaults to localhost:4321)
  • Build the production site with bun run landing:build (output to apps/landing/dist/)
  • Preview the built site with bun run landing:preview
For Astro CLI commands, run them inside the workspace: cd apps/landing && bun run astro ....

E2E tests

The mobile app has E2E tests that are powered by Maestro. To run the tests, you need to have the Maestro CLI installed and need access to a iOS or Android simulator. The test scenarios are defined in apps/mobile/maestro/flows. Each flow is a sequence of steps that are executed in order. To run the tests, run maestro test apps/mobile/maestro/ from the repo root. You can find more information about the test scenarios in the E2E tests README.

Useful commands

Run from the repo root:

  • bun run mobile:start: Start the app in development mode
  • bun run mobile:android: Start the app in development mode on Android
  • bun run mobile:ios: Start the app in development mode on iOS
  • bun run mobile:web: Start the app in development mode with web support
  • bun run mobile:prebuild: Prebuild the native development app
  • bun run mobile:typecheck: Type-check the app
  • bun run mobile:lint: Lint the codebase
  • bun run mobile:lint:fix: Fix linting issues
  • bun run mobile:test: Run the test suite
  • bun run landing:dev: Start the marketing site dev server
  • bun run landing:build: Build the marketing site
  • bun run landing:preview: Preview the built marketing site
  • bun run doctor (inside apps/mobile): Check the app for any potential issues
  • eas build --profile preview --platform android (inside apps/mobile): Build the app for Android with the desired profile and platform (add --local to build locally)
  • eas whoami: Check the current user
  • eas login: Login to Expo

Useful links

Gallery

Login screen Home screen Artist screen Album screen Player screen Queue screen Library screen Search screen Smart playlist screen Offline downloads screen Settings screen Android Auto

ยฉ 2026 GitRepoTrend ยท Joel-Mercier/wavio ยท Updated daily from GitHub