tvOS 27 introduces system-wide Large Text support, bringing Dynamic Type to the Apple TV platform. Apps can now respond to user-selected text size preferences just like on iOS, scaling fonts and adapting layouts automatically.
โข tvOS finally gains the same Dynamic Type accessibility infrastructure iOS has had for years โ users can choose text sizes from Large to Accessibility XXXL in Settings
โข Apps that use semantic text styles and flexible layouts get scaling for free; only custom/hard-coded elements need manual updates
โข Accessibility Nutrition Labels in the App Store now support a
Demonstrates how a content card on tvOS automatically switches from a horizontal to vertical layout when the user enables larger accessibility text sizes, using SwiftUI's dynamicTypeSize environment value and AnyLayout.
import SwiftUI
struct ContentCard: View {
let title: String
let subtitle: String
@Environment(\.dynamicTypeSize) private var dynamicTypeSize
private var usesAccessibilitySize: Bool {
dynamicTypeSize.isAccessibilitySize
}
private var layout: AnyLayout {
usesAccessibilitySize
? AnyLayout(VStackLayout(alignment: .leading, spacing: 8))
: AnyLayout(HStackLayout(alignment: .top, spacing: 12))
}
var body: some View {
layout {
RoundedRectangle(cornerRadius: 12)
.fill(Color.blue.opacity(0.4))
.frame(width: usesAccessibilitySize ? .infinity : 120,
height: 80)
VStack(alignment: .leading, spacing: 4) {
Text(title)
.font(.headline) // semantic style โ scales automatically
.lineLimit(2)
.frame(maxWidth: .infinity, alignment: .leading)
Text(subtitle)
.font(.subheadline) // semantic style โ scales automatically
.foregroundStyle(.secondary)
.frame(maxWidth: .infinity, alignment: .leading)
}
}
.padding()
.background(.regularMaterial, in: RoundedRectangle(cornerRadius: 16))
}
}
struct ContentCardPreview: View {
var body: some View {
VStack(spacing: 20) {
ContentCard(title: "Sunset at the Beach",
subtitle: "A relaxing 4K journey along the California coast")
ContentCard(title: "Mountain Camping",
subtitle: "Explore trails and starry nights in the Rockies")
}
.padding()
}
}
#Preview {
ContentCardPreview()
.environment(\.dynamicTypeSize, .accessibility2) // simulate large tvOS text
}Fixed font sizes and hard-coded width/height constraints will not scale โ they must be replaced with semantic text styles and flexible constraints. In UIKit, you must also set adjustsFontForContentSizeCategory = true and call registerForTraitChanges to react to live preference changes. AnyLayout switching between HStackLayout and VStackLayout is the recommended SwiftUI pattern for conditional axis changes.
Apple TV hardware running tvOS 27; no Apple Intelligence requirement
More iOS 27 APIs land every week.
Get notified when new capabilities are published โ no noise, just signal.