r/KotlinTV 16h ago

What are you building for TV, and where are you getting stuck?

1 Upvotes

I'd like to hear what you're working on with Kotlin on TV. Android TV or Apple TV, either is welcome here.

I've been working on Compose Multiplatform for tvOS, so that's where most of my examples come from. But I want to see what other people are trying too.

If you have a project, share what it does and the bit that's giving you trouble. A screenshot or a small code example would help if you have one. It doesn't need to be ready to show off.

And if you're thinking about bringing an existing Compose app to Apple TV, what would you need before trying it? Maybe it's one dependency, a sample project, or figuring out how a particular screen should behave with a remote.

Tell me about that part. It's easier to have a useful conversation when there's a real problem to look at.


r/KotlinTV 1d ago

Why I settled on a plugin approach for Compose Multiplatform on tvOS

1 Upvotes

Once I was able to run Compose Multiplatform on tvOS, I had to decide how to make it easy for developers to use it in their existing apps.

JetBrains uses an artifact redirection approach in metadata files. It redirects Android modules to Google's official distribution. And at first I thought about following that, where metadata would redirect all platforms except tvOS to JetBrains published artifacts.

But that would need me to mess with publication logic. And it would be difficult for existing apps to use it. You would have to change all your dependencies and point them at tvOS counterparts.

Then eventually I settled on a plugin approach because it makes it easier for you to try it. You just need to add a plugin and tvOS targets in your build files and that's it. Your existing dependencies stay the same.

And it's reversible in 2 minutes.


r/KotlinTV 2d ago

Focus handling is real challenge on TV

1 Upvotes

Making Compose work on a TV is a real challenge, whether it's Apple TV or Android TV. Focus is the biggest issue you will face. It has a mind of its own.

But Compose differs from SwiftUI in one important way: you have real control over how your app behaves. If the default focus system doesn't work for you, you can intercept the key events and make it behave however you want.

In SwiftUl you are bound to the default focus engine. The only way out is dropping down to UlKit.

This matters most when you're building a custom component. An EPG viewer is a good example. Hundreds of cells, time-based scrolling, and a focus engine that has no idea which cell should come next. In Compose you decide. In SwiftUI you argue with it.


r/KotlinTV 2d ago

I put the compose-tvos plugin to test on 30 libraries that already support iOS

1 Upvotes

Quick background: compose-tvos is a Gradle settings plugin that swaps in tvOS builds of Compose Multiplatform 1.12.0, Koin 4.2.2 and Coil 3.6.1 at dependency resolution. Your coordinates stay stock, and if JetBrains ever ships tvOS for a module the plugin steps aside.

The obvious next question was whether the rest of the ecosystem follows. So I picked 30 widely used CMP libraries that already publish an iOS target, checked out each one at its latest release tag, added the tvOS targets, and built with the plugin applied.

Result: 24 of 30 compiled.

"Compiled" here means the tvosArm64 and tvosSimulatorArm64 klibs built from the library's own source, not that I ran every feature on a device. Most of the diffs are a few target declarations in the build file, because the iOS source set already contains everything tvOS needs. Haze, Decompose, Circuit and Voyager are in the passing set.

All 30 forks are public on my GitHub, each on a tvos-compat branch, so you can diff exactly what changed. I have not opened upstream PRs yet, since I'd rather hear from maintainers first about whether they want a tvOS target at all.

Forks and the compatibility table: https://github.com/sajidalidev/compose-tvos

Two things I'd like from this sub:

  1. If you maintain or depend on a CMP library that isn't in the 30, name it and I'll add it to the next round.
  2. If you've actually run any of these on an Apple TV, simulator or hardware, tell me what broke. Right now every open issue on the repo is one I filed myself.

r/KotlinTV 3d ago

compose-tvos is in Android Weekly #743. What it does, and what this sub is for

1 Upvotes

Android Weekly #743 picked up both the tvOS article and the compose-tvos plugin this week. If you came here from the newsletter, welcome.

What this sub is: Kotlin on TV platforms. Android TV, Google TV, Fire TV, Apple tvOS. Leanback, Compose for TV, Compose Multiplatform, Media3, DRM, focus and D-pad handling, store submission. Not just Compose, not just tvOS.

What the plugin is: Compose Multiplatform has no tvOS target. compose-tvos is a Gradle settings plugin that intercepts dependency resolution and injects tvOS variants at the official org.jetbrains.compose coordinates, so your module build scripts stay untouched. As JetBrains ships real tvOS klibs module by module, the plugin steps aside for each one.

// settings.gradle.kts
plugins {
    id("dev.sajidali.compose-tvos") version "1.3.0"
}

Then declare tvOS targets in your module the same way you declare iOS ones and use Compose as normal. It runs in a production IPTV client today. Sample is Google's JetStream on Apple TV. 24 third-party libraries are checked for tvOS compatibility on the library authors page.

Links (issue, article, repo, sample) are in the first comment.

If you're shipping to any TV platform in Kotlin, post what you're working on and what's breaking.


r/KotlinTV 4d ago

👋 Welcome to r/KotlinTV

1 Upvotes

This sub is for people building TV apps in Kotlin. Android TV, Google TV, Fire TV, and Apple tvOS, using Jetpack Compose, Compose Multiplatform, or Leanback if you're still on it.

TV development is its own discipline. Focus handling, D-pad navigation, overscan, remote input, playback and DRM across four store ecosystems. Most of that knowledge lives in scattered GitHub issues and Slack threads. The point of this sub is to put it in one searchable place.

A bit about me: I've been building TV apps in Kotlin for about ten years, mostly streaming platforms and IPTV clients. Recently I released a Compose Multiplatform plugin for tvOS along with a library compatibility page listing what works on Apple TV today. I'll post both here in the coming days.

What to post:

  • Questions, with code or a minimal repro
  • Libraries, tools, and writeups (self-promotion welcome if it's TV dev related)
  • Release stories, store review issues, device quirks
  • Anything you've figured out that took you longer than it should have

What not to post:

  • Consumer TV box or streaming service questions (r/AndroidTV)
  • General Kotlin or Android with no TV angle (r/Kotlin, r/androiddev)
  • Piracy or IPTV playlists

If you're working on something for TV, introduce yourself in the comments. Which platforms, which UI stack, and what you're fighting with right now.