MCPcopy Index your code
hub / github.com/Jellify-Music/App

github.com/Jellify-Music/App @1.2.2-ota-241

Chat with this repo
repository ↗ · DeepWiki ↗ · release 1.2.2-ota-241 ↗ · + Follow
883 symbols 2,697 edges 444 files 13 documented · 1%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

Jellify logo

Latest Version iTunes App Store Google Play Github All Releases

Sponsors Patreon Ko-Fi

Discord

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!

Downloading

Android

Download from Google Play

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

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

  • Available via Play Store, App Store, Testflight, and Android APKs
  • 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
  • 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.2.0 (We Made a Language For Us Two...) - June '26

  • Quick Connect Support
  • Websocket Support (Server online status)
  • Collaborative Playlists
  • EQ Controls

1.3.0 (Endless Summer) - September '26

  • App Customization Options
  • Autoplay Integration
  • Allow Self-Signed Certificates

2.0.0 - December '26

  • Watch Support
  • Desktop Support (Experimental)
  • Tablet Support
  • Seerr (formerly Jellyseerr) Integration

3.0.0 - TBD

  • tvOS (Apple and Android)
  • JellyJam (Collaborative Queue)

*This is subject to change

Built with Good Stuff

Made with React React Native Made with TypeScript code style: prettier GitHub License

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

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.

Usage Analytics — TelemetryDeck

Anonymous usage signals are sent via @typedigital/telemetrydeck-react. The only signal currently sent is Jellify launched on app open. All signals are anonymous (clientUser: 'anonymous') and are only sent when you have opted in to metrics.

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

Extension points exported contracts — how you extend this code

TamaguiCustomConfig (Interface)
(no doc)
src/configs/styling/tamagui.ts
JellifyLibrary (Interface)
(no doc)
src/types/JellifyLibrary.ts
Fonts (Interface)
(no doc)
src/components/theme.ts
ArtistContext (Interface)
(no doc)
src/providers/Artist/index.tsx
QueuingRequest (Interface)
(no doc)
src/services/types/queuing-request.ts
MediaInfoQueryProps (Interface)
(no doc)
src/api/queries/media/keys.ts
PerformanceMetrics (Interface)
(no doc)
src/hooks/use-performance-monitor.ts
JellyfinServer (Interface)
(no doc)
src/types/JellyfinServer.ts

Core symbols most depended-on inside this repo

getApi
called by 64
src/stores/auth/utils.ts
applyHapticFeedback
called by 49
src/utils/haptics/index.ts
getUser
called by 39
src/stores/auth/utils.ts
getItemImageUrl
called by 35
src/api/queries/image/utils/index.ts
useJellifyLibrary
called by 22
src/stores/auth/index.ts
captureError
called by 21
src/utils/logging/index.ts
loadNewQueue
called by 20
src/hooks/player/functions/queue.ts
triggerHaptic
called by 19
src/hooks/use-haptic-feedback.ts

Shape

Function 764
Interface 76
Enum 24
Method 11
Class 8

Languages

TypeScript99%
Kotlin1%

Modules by API surface

src/screens/Storage/index.tsx17 symbols
src/utils/legacy/offline-mode-utils.ts16 symbols
src/components/Context/index.tsx13 symbols
src/stores/player/queue.ts10 symbols
src/components/Global/components/item-row.tsx10 symbols
src/components/Global/components/AZScroller/index.tsx10 symbols
src/utils/mapping/track-extra-payload.ts9 symbols
src/providers/Storage/index.tsx9 symbols
src/components/Global/helpers/text.tsx9 symbols
src/api/queries/album/index.ts8 symbols
src/screens/YearSelection/index.tsx7 symbols
src/screens/GenreSelection/index.tsx7 symbols

For agents

$ claude mcp add App \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact

Ask about this repo answers extend the page