Personal media client for movies, TV, manga, and IPTV — built with React Native and Expo.
v2.2.0 · dark Netflix-inspired UI · no Yummy backend (everything stays on-device)
- Browse trending, popular, top-rated, and upcoming titles via TMDB
- Filter Home by streaming provider chips
- Search the TMDB catalog
- Details with cast, seasons/episodes, and recommendations
- Person profiles and filmography
- Play through configurable third-party embed providers (WebView) after accepting an on-device risk notice; real hostnames shown in Settings
- Watch history, continue watching, and per-episode watched checkmarks for TV (auto-advances to the next episode)
- In-player ad blocking (host blocklist + DOM/popup cleanup)
- Discover and search via MangaDex and AniList
- Chapter list and gesture-based reader (pinch / pan)
- Built-in iptv-org category playlist
- Add public HTTPS M3U playlists and custom direct stream channels
- Favorites, recent channels, group/search filters
- Direct HLS / MP4 playback with Plyr
- Custom tab bar and quiet dark chrome (Geist Mono)
- More hub (⋯) for My List, Watch History, and Settings — room to grow
- GitHub Releases update alert
- Privacy-first: AsyncStorage only — no Yummy server
- Expo SDK 57 · React Native 0.86 · React 19.2 · TypeScript
- Expo Router · AsyncStorage · WebView · Reanimated
- Node.js + npm
- A free TMDB API key (or read-access token)
git clone https://github.com/kunalkcube/yummy.git
cd yummy
npm install
cp .env.example .envEdit .env if you want a local TMDB key reference (optional — the app reads TMDB credentials from Settings):
TMDB_API_KEY=your_tmdb_api_key_hereStart the app:
npm start
# or
npm run android
npm run iosThen open More (⋯ on Home) → Settings, accept the stream notice if you use embeds, paste your TMDB API key or bearer token, and pick a stream provider.
The IPTV tab ships with the category-grouped iptv-org playlist.
- Add more playlists under Settings → IPTV Playlists (public HTTPS M3U only)
- Add single channels under Settings → IPTV Channels
- Streams must allow direct browser playback — DRM, auth-walled, or offline feeds will not play
Some networks block TMDB. Use Cloudflare DNS if requests fail:
Android: Settings → Network → Private DNS → one.one.one.one
Yummy has no backend. TMDB credentials, IPTV playlists/channels, favorites, and stream-disclaimer acceptance stay on this device (AsyncStorage). Network traffic goes only to the third-party APIs you use (TMDB, IPTV playlists, manga sources, stream embeds).
| Command | Description |
|---|---|
npm start |
Expo dev server |
npm run android / ios / web |
Platform targets |
npm run lint |
ESLint |
npx tsc --noEmit |
Typecheck |
Built by kunalkcube · Licensed under MIT








