tvOS 27 introduces system-wide Dynamic Type support, allowing users to choose preferred text sizes (Large through Accessibility XXXL) in Settings. Apps built with standard UIKit and SwiftUI text styles adapt automatically, while custom layouts can respond via the dynamicTypeSize environment value.
โข Millions of Apple TV users who rely on larger text sizes can now benefit from accessible apps โ and the App Store Accessibility Nutrition Label lets developers signal this support to reach them
โข Standard UIKit/SwiftUI components (Label, Button, NavigationBar) scale automatically; developers only need to audit custom views for hard-coded fonts and fixed constraints
โข Conditional layouts using AnyLayout or UIStackView axis switching let you maintain a great visual design at default sizes while gracefully adapting for accessibility sizes
Demonstrates a content card that switches between a horizontal and vertical stack layout depending on the active Dynamic Type size, preventing text truncation at larger accessibility sizes.
import SwiftUI
struct ContentCard: View {
let title: String
let subtitle: String
let imageName: String
@Environment(\.dynamicTypeSize) private var dynamicTypeSize
private var usesAccessibilitySize: Bool {
dynamicTypeSize.isAccessibilitySize
}
var body: some View {
// Switch between HStack and VStack based on text size
let layout: AnyLayout = usesAccessibilitySize
? AnyLayout(VStackLayout(alignment: .leading, spacing: 12))
: AnyLayout(HStackLayout(alignment: .top, spacing: 16))
layout {
Image(systemName: imageName)
.resizable()
.scaledToFit()
.frame(width: usesAccessibilitySize ? 80 : 120,
height: usesAccessibilitySize ? 80 : 120)
.cornerRadius(8)
VStack(alignment: .leading, spacing: 4) {
Text(title)
.font(.headline) // semantic style โ scales automatically
.frame(maxWidth: .infinity, alignment: .leading)
Text(subtitle)
.font(.caption) // semantic style โ scales automatically
.foregroundStyle(.secondary)
.frame(maxWidth: .infinity, alignment: .leading)
}
}
.padding()
.background(.regularMaterial)
.cornerRadius(12)
}
}
struct ContentCardPreview: View {
var body: some View {
VStack(spacing: 20) {
ContentCard(
title: "Coastal Sunrise",
subtitle: "A relaxing beach timelapse at dawn",
imageName: "beach.umbrella"
)
ContentCard(
title: "Mountain Camping",
subtitle: "Overnight adventure in the Sierras",
imageName: "tent"
)
}
.padding()
}
}
#Preview {
ContentCardPreview()
// Simulate accessibility text size in canvas
.environment(\.dynamicTypeSize, .accessibility2)
}Liquid Glass is Apple's new material and visual design language introduced in iOS 27, bringing translucent, refractive glass-like surfaces to system and custom UI elements. It replaces the frosted vibrancy aesthetic with a more dynamic, depth-aware material that responds to content beneath it.
PaperKit is Apple's full-featured canvas framework โ previously internal-only โ now publicly available in iOS/macOS/visionOS 27. It powers the drawing and markup experience in Notes, Preview, and Freeform, giving developers access to a complete pencil, shapes, images, and text canvas with a rich data model.
Xcode 27 introduces a fully customizable toolbar and theme system, untitled scratch projects, coding agent integration directly in the editor, and the new Device Hub for evaluating apps across simulators and physical devices side-by-side.
In-depth guide
SwiftUI & Liquid Glass in iOS 27 โHard-coded font sizes (e.g. .font(.system(size: 24))) will not scale โ always use semantic text styles like .caption or .headline. Fixed width/height constraints can cause truncation; replace with .frame(maxWidth: .infinity). In UIKit, you must also set adjustsFontForContentSizeCategory = true and call registerForTraitChanges(_:) with UITraitPreferredContentSizeCategory to react to live changes.
Apple TV only; no iPhone/iPad specific constraint, but the Dynamic Type size range on tvOS starts at Large (not the default size iOS uses)
iOS 27 introduces new SwiftUI drag and drop APIs including reorderable, reorderContainer, dragContainer, and configuration modifiers that enable reordering within and across collections, multi-item drag, and fine-grained control over how data is transferred during drag and drop operations.