Home
compose-tvos
A Gradle settings plugin that adds tvOS (tvosArm64/tvosSimulatorArm64) support to
JetBrains Compose Multiplatform projects — without JetBrains’s own artifacts needing to support
tvOS yet.
- How it works — the architecture: variant injection, official-first resolution, plugin-marker interception, the version manifest.
- Supported versions — the full version matrix and what “covered groups” means.
- App embedding — building and running your KMP app on a real tvOS device or simulator, including the Compose Resources bundle layout.
- Library authors — adding tvOS to your own Kotlin Multiplatform library.
- Troubleshooting — WARN blocks,
strictMode, caches, offline behavior.
Quickstart
// settings.gradle.kts
plugins {
id("dev.sajidali.compose-tvos") version "1.4.2"
}
That is the entire required setup: the plugin resolves from the
Gradle Plugin Portal, and once
applied it takes care of the rest (including adding mavenCentral() to plugin resolution for
the tvOS-patched Compose Gradle plugin it substitutes). If your build declares its own
pluginManagement.repositories block, keep gradlePluginPortal() and mavenCentral() in it.
That’s it — no other settings are required. Add tvosArm64()/tvosSimulatorArm64() targets to
your Kotlin Multiplatform module as you normally would:
// build.gradle.kts
kotlin {
tvosArm64()
tvosSimulatorArm64()
}
…and your existing Compose dependency declarations resolve for tvOS too, with no changes:
kotlin {
sourceSets {
commonMain.dependencies {
implementation(compose.runtime)
implementation(compose.foundation)
implementation(compose.material3)
implementation(compose.components.resources)
}
}
}
See the full list of redirected dependency groups in Supported versions.
Requirements
- Gradle 8.0+
- Compose Multiplatform 1.12.0+. The fork publishes JetBrains’ exact versions for the 1.12 line only; older Compose lines are not back-published and will fail to resolve rather than being silently substituted. See Version policy.
- Kotlin 2.3.20+ for consumer projects targeting tvOS. The fork’s published Compose/AndroidX
and Koin
klibs are compiled with Kotlin/Native2.3.x(abi_version=2.3.0) — an older Kotlin version’s compiler is not ABI-compatible with these artifacts on tvOS targets. Non-tvOS targets in the same project are unaffected by this constraint (they never touch adev.sajidaliartifact). -
Coil 3.6.1 needs Kotlin 2.4.x (upstream Coil 3.6.1 is compiled with Kotlin 2.4.10,
abi_version=2.4.0); projects on Kotlin 2.3.x should stay onio.coil-kt.coil3:*:3.5.0, which the fork also publishes.// settings.gradle.kts dependencyResolutionManagement { repositories { google() mavenCentral() } }
Demo
A working, canonical tvOS Compose Multiplatform consumer of this plugin lives in
demo/ in the repository:
compose.runtime/foundation/material3/components.resources, navigation-compose,
lifecycle-viewmodel-compose, tvOS + iOS targets, and Compose Resources.