A simple Media Hub
Find a file
VenusIsJaded e8d74d9194 Fix ExoPlayer unpausing when returning to foreground
The lifecycle observer was holding onto a stale playWhenReady value,
so every time you came back to the app it would resume playback even
if you had explicitly paused the video. Now it uses rememberUpdatedState
to check the live value instead.
2026-05-16 01:12:06 -05:00
.github update CONTRIBUTING.md 2026-05-13 18:38:21 +05:30
composeApp Fix ExoPlayer unpausing when returning to foreground 2026-05-16 01:12:06 -05:00
Docs/Stremio addons refer kmp init 2026-03-04 09:00:00 +05:30
gradle chore: update coil version 2026-05-12 18:34:00 +05:30
iosApp bump version 2026-05-16 03:57:53 +05:30
libass-android@c10b71ab8b fix: update addon fetch timeout 2026-04-10 20:09:45 +05:30
MPVKit@97923266e4 feat: update WatchingActions to mark watched items 2026-04-22 15:32:54 +05:30
scripts feat: add manual play option and update stream loading logic 2026-04-07 14:56:05 +05:30
vendor fix: ios downloads 2026-04-30 17:13:19 +05:30
.gitignore update deps 2026-04-23 00:59:28 +05:30
.gitmodules update deps 2026-04-23 00:59:28 +05:30
build.gradle.kts kmp init 2026-03-04 09:00:00 +05:30
CONTRIBUTING.md update CONTRIBUTING.md 2026-05-13 18:38:21 +05:30
gradle.properties fix: adjust behaviour logic of streamlink caching 2026-05-12 12:22:58 +05:30
gradlew kmp init 2026-03-04 09:00:00 +05:30
gradlew.bat kmp init 2026-03-04 09:00:00 +05:30
LICENSE update readme 2026-04-19 00:35:34 +05:30
README.md update readme 2026-04-19 00:37:20 +05:30
settings.gradle.kts kmp init 2026-03-04 09:00:00 +05:30

Nuvio

Contributors Forks Stargazers Issues License

A modern media hub for Android and iOS built with Kotlin Multiplatform and Compose Multiplatform.
Stremio addon ecosystem • Cross-platform

About

Nuvio is the current Kotlin Multiplatform rewrite of the original React Native app. It delivers a shared Compose UI for Android and iOS while keeping the playback-focused experience, collection tools, watch progress flows, downloads, and Stremio addon ecosystem integration that shaped the earlier app.

The mobile app is built from a single shared codebase in composeApp, with native platform entry points for Android and iOS.

Installation

Android

Download the latest Android build from GitHub Releases.

iOS

Development

git clone https://github.com/NuvioMedia/NuvioMobile.git
cd NuvioMobile
./scripts/run-mobile.sh android
# or
./scripts/run-mobile.sh ios

Project Structure

  • composeApp/ contains the shared Kotlin Multiplatform and Compose Multiplatform app code.
  • composeApp/src/commonMain/ contains shared UI, features, repositories, and platform-agnostic logic.
  • composeApp/src/androidMain/ contains Android-specific integrations.
  • composeApp/src/iosMain/ contains iOS-specific integrations.
  • iosApp/ contains the native Xcode project and iOS entry point.

Useful commands:

./gradlew :composeApp:assembleDebug
./gradlew :composeApp:compileKotlinIosSimulatorArm64
./scripts/build-distribution.sh

Versioning is driven from iosApp/Configuration/Version.xcconfig, which is used as the shared source of truth for both iOS and Android builds.

Nuvio functions solely as a client-side interface for browsing metadata and playing media provided by user-installed extensions and/or user-provided sources. It is intended for content the user owns or is otherwise authorized to access.

Nuvio is not affiliated with any third-party extensions, catalogs, sources, or content providers. It does not host, store, or distribute any media content.

For comprehensive legal information, including our full disclaimer, third-party extension policy, and DMCA/Copyright information, please visit our Legal & Disclaimer Page.

Built With

  • Kotlin Multiplatform
  • Compose Multiplatform
  • Kotlin
  • AndroidX Media3
  • AVFoundation and native iOS integrations

Star History

Star History Chart