So far:
Homework
The app wasn’t great. It was usable, but not even close to a four-star experience—more like a one-star prototype. I wanted to get it to at least four stars, so I did the one thing I hadn’t done yet: real homework, no LLMs involved.
I’ve been building for Apple platforms since the pre-ARC iOS 5 days, and I usually follow a personal checklist for new apps. This time I skipped it, and the results made that obvious. Time to catch up.
Inspirations
First, I needed to study real-world apps and how their UI behaves. I installed a bunch of IPTV apps on Apple TV and tested almost all of them. One stood out: UHF.
I might have used an LLM here—I asked Perplexity for IPTV app inspiration. Reddit pointed me toward a few options, and that’s how I found UHF.
I don’t know who built it, but it’s polished. The card layouts are great, everything feels snappy, and it has tons of features I hadn’t considered.
Mad respect to that developer—they shipped it pre-LLM.
tvOS 101
Next, I needed to understand how modern tvOS apps are built with SwiftUI. What does it take to achieve that level of polish? So I did what any Apple platform developer would do:
- Read Apple’s Human Interface Guidelines for tvOS.
- Watched relevant WWDC sessions.
Turns out tvOS didn’t get major features this year. I expected some SwiftUI updates—maybe liquid glass on tvOS 18—but the best resource I found was from tvOS 17: a session about migrating TVML-based apps to SwiftUI, complete with a sample project. I ran the sample and it worked perfectly on tvOS 18.
The session was WWDC24 session 10207: Migrate your TVML app to SwiftUI.
After watching the session and running the sample in the simulator, I had a much better sense of how tvOS and SwiftUI fit together. Now I knew what I needed.
What do you think I did next?