Profile
Back to NewsBack
GitHub Trending 7 min
Reader Mode
Jellify-Music/App: A cross-platform, free and open source music player for Jellyfin, powered by React Native

Jellify-Music/App: A cross-platform, free and open source music player for Jellyfin, powered by React Native

10 hours ago

Jellify logo

Latest Version</a> iTunes App Store</a> Google Play</a> Github All Releases</a>

Sponsors</a> Patreon</a> Ko-Fi</a>?logo=ko-fi&logoColor=white&color=rgb(243%2C110%2C60))

Discord</a>&color=rgb(89%2C100%2C238))

Contents

Info

jellify (verb) - _to make gelatinous_
see also

_Jellify_ is a free and open source music player for the Jellyfin Media Server. Built with React Native, it is available for both iOS and Android.

_Jellify_ requires a connection to a Jellyfin Media Server server to work. See also

Showcasing the artwork of your library, it has a user interface congruent to what _the big guys_ do. _Jellify_ also provides algorithmic curation of your music, driven by Jellyfin's Instant Mix and Suggestions APIs.

Background

This app was designed with me and my dad in mind. I wanted us to have a sleek, one stop shop for live recordings of bands we like (read: the Grateful Dead). The UI was designed so that we'd find it instantly familiar and useful. CarPlay / Android Auto support was also a must for us, as we both use CarPlay religiously.

Recommended Additions

These projects are not required to use _Jellify_, but are recommended by us to enrich your Jellyfin music experience!

- Really good at fetching missing artist artwork for obscure / less popular artists - Available in the default plugins catalog - Really good at fetching song lyrics - Gives a recap of your year in music listening similar to other music streaming services - A hosted version is provided here - Imports a user's Spotify playlists into Jellyfin - Can run as a scheduled task - Performs sonic analysis on your music - Creates "smart playlists" based on tempo and mood - Displays the content you're currently playing on Discord

Downloading

Android

Download from Google Play</a>

Direct .APK Download

Head to releases to download the required .APK directly.

Also there is obtanium to which you can add Jellify as a repo to use the above releases as a repository.

For Obtanium, click "Add App", put "https://github.com/Jellify-Music/App" as the source URL, and on the next screen toggle "prereleases". You'll now be easily able to keep your local copy in sync with new releases.

iOS

Download from the iTunes App Store</a>

The TestFlight Way

Join the TestFlight and install the latest version from there

The Sideloading Way

Head to releases to download the required .IPA directly.

Install via Altstore or your favorite sideloading utility

Screenshots

Screenshots taken on iPhone 15 Pro Max


Home

Jellify Home


Library

Artists

Library Artists Library Albums Library Tracks

Artist View

Artist

Similar Artists

Similar Artists

Album Views

Album MultiArtist Album Offline Album

Track Options & Add to Playlist

Track Options Playlist


Search

Search


Player

Player Queue


CarPlay

CarPlay


Features

Current

- APKs are associated with each release
  • Light and Dark modes (and different theme colors)
  • Home screen access to previously played tracks, artists, and your playlists
  • Quick access to similar artists and items for discovering music in your library
  • Jellyfin playback reporting and Last.FM Plugin support
  • Quick Connect Support
  • Full Library Browsing
  • Playlist support, including creating, updating, and reordering
  • Offline Playback
  • Support for Jellyfin Instant Mixes
  • Over-the-Air Updates
- Powered by react-native-nitro-ota, incremental app updates are automatically fetched and applied from our App Bundles Repository
  • Shuffling
  • Switching Music Libraries
  • Google Cast Support (still in early stages)
  • Storage UI Manager
  • Gapless Playback
  • Android Auto / CarPlay Support

Roadmap

1.4 - If You Plant Ice, You're Gonna Harvest Wind - December '26

  • Websocket Support (Server online status)
  • Collaborative Playlists
  • EQ Controls
  • Allow Self-Signed Certificates

1.5 - March '27

  • App Customization Options

2.0.0 - December '27

  • Watch Support
  • Desktop Support (Experimental)
  • Tablet Support

3.0.0 - TBD

  • Seerr (formerly Jellyseerr) Integration
  • Autoplay Integration
  • tvOS (Apple and Android)
  • JellyJam (Collaborative Queue)
\*This is subject to change

Built with Good Stuff

Made with React</a> React Native</a> Made with TypeScript</a> code style: prettier</a> GitHub License</a>

Frontend

Tamagui\ Figtree\ Pulsar\ React Navigation\ React Native Blurhash\ React Native CarPlay\ React Native Drax\ React Native Reanimated\ React Native Toast Message\ React Native Vector Icons

Backend

Jellyfin SDK\ Tanstack Query\ React Native DNS Lookup\ React Native File Access\ React Native Google Cast\ React Native MMKV\ React Native Nitro Fetch\ React Native Nitro Modules\ React Native Nitro OTA\ React Native Nitro Player\ React Native URL Polyfill\ Zustand

Made for Jellify

We built these libraries for _Jellify_, and they're free for anyone to use in their own apps:

React Native Nitro Player\ React Native Reanimated Slider

Opt-In Monitoring

All logging and metrics gathering is _opt-in_ by default. This is merely here to help us make _Jellify_ better.

All logs and metrics are completely anonymized. No data can be traced back to you.

Error Reporting — GlitchTip

Unhandled exceptions and captured errors are reported to the SaaS GlitchTip instance via @sentry/react-native. Error reporting is initialized at app startup and is disabled unless you have opted in to sending metrics.

All logging goes through three shared utilities in src/utils/logging/index.ts, each tagged with a LoggingContext (e.g. Initialization, Playback Reporting, Queue, Favorites):

| Function | Severity | Sentry behaviour | |---|---|---| | captureError(error, context, message?) | Error | Reports exception via Sentry.captureException when metrics are enabled | | captureWarning(context, message, error?) | Warning | Reports message at warning level via Sentry.captureMessage when metrics are enabled | | captureInfo(context, message) | Info | Console-only — never sent to Sentry |

In production builds, all console.* methods are replaced with no-ops so that no debug output leaks — logs only surface through the explicit capture call path.

Love from Wisconsin 🧀

This is undoubtedly a passion project of mine, and I've learned a lot from working on it (and the many failed attempts before it). I hope you enjoy using it! Feature requests and bug reports are welcome :)

Support the Project

_Jellify_ is free, open source, and always will be. You can support development via Patreon, GitHub Sponsors, or Ko-Fi starting at $1.

All publicly paid supporters on GitHub and Patreon get their name displayed in the app's Settings as a thank-you.

🎁 Sticker Club

Patreon supporters on the $5 or $10 tier who stay subscribed for 3 months get a _Jellify_ sticker mailed to them. A small, physical thank-you for supporting a passion project.

Special Thanks

  • The Jellyfin Team for making this possible with their software, SDKs, and unequivocal helpfulness.
- Extra thanks to Niels and Bill - They taught me the ways of the AudioAPI and how to do audio transcoding with Jellyfin - James’ API Blog Post proved to be exceptionally valuable during development - Chaphasilor taught me everything they know about audio normalization and LUFS, and their math was referenced in _Jellify_'s audio normalization algorithm
  • Marc and the rest of the Margelo Community for their amazing modules and support
  • Nicolas Charpentier for his React Native URL Polyfill module and for his assistance with getting Jest working
  • The team behind Podverse for their incredible open source project, of which was used as a reference extensively during development
  • My fellow contributors who have poured so much heart and a lot of sweat into making _Jellify_ a great experience
- Extra thanks to John, Vali-98, and Erik for shaping and designing the user experience - Shout out to skalthoff for championing many features: - Gapless Playback - Library Selection - Quality Selection - Many thanks to PDB3D for the logo design! - Huge thank you to Ritesh for literally so many things: - Over-the-Air Updates - Cast Support
  • The friends we made along the way that have been critical in fostering an amazing community around _Jellify_
- Thalia - BotBlake - Neptune1987
  • My long time friends that have heard me talk about _Jellify_ for literally eons. Thank you for testing _Jellify_ during it's infancy and for supporting me all the way back at the beginning of this project
- Tony (iOS, Android) - Trevor (Android) - Laine (Android) - Jordan (iOS)
  • My best(est) friend Alyssa, for your design knowledge and for making various artwork for _Jellify_.
- You’ve been instrumental in shaping it’s user experience, my rock during development, and an overall inspiration in my life

Star History

Star History Chart</a>

Chat with me