tvOS UI Patterns
Quick start
Choose a track based on your goal:
Existing project
- Identify the screen's focus graph before touching layout code.
- Classify the surface: catalog, hero + shelves, detail/product page, search, sidebar root, or player-adjacent overlay.
- Read the nearest existing tvOS view before inventing a new structure.
- Use
references/components-index.mdto jump to the most relevant pattern.
New tvOS screen or scaffold
- Start with
references/navigation-structure.mdto chooseNavigationStack,NavigationSplitView, orTabViewwith.sidebarAdaptable. - Read
references/focus-and-remote.mdbefore adding custom focus or gesture behavior. - Read
references/lockups-shelves.mdbefore building shelves, lockups, or hero headers. - Read
references/search-and-discovery.mdif the screen includes search or suggestion flows.
Core rules to follow
- Start from focus, not touch. Every interactive decision should make directional focus movement and Siri Remote behavior clearer.
- Prefer
NavigationStackfor drill-down flows,NavigationSplitViewfor sidebar or catalog structure, andTabView(.sidebarAdaptable)for sectioned top-level apps on modern tvOS. - Default to standard button styles:
- use
.buttonStyle(.borderless)for primary media lockups - use
.buttonStyle(.card)when the lockup is information-dense
- use
- Build shelves with
ScrollView(.horizontal)plusLazyHStack, and use.scrollClipDisabled()so focused lockups can lift and scale without being clipped. - Use
focusSection()to bridge directional focus across large hero or header regions that would otherwise be skipped by straight-line focus search. - Use
prefersDefaultFocus,defaultFocus,focusScope, andresetFocusintentionally when content changes or when the best initial target is not the default geometric choice. - Use
searchableandsearchSuggestionsfor search surfaces. Keep results stable, sorted, and easy to scan from across the room. - Treat Liquid Glass as a functional control and navigation layer, not as decoration over content. Read
references/liquid-glass-and-styling.mdbefore custom glass work. - Keep generous spacing, honor safe areas, and leave room for focus expansion and hover lift.
Strong defaults
- Prefer system focus behavior over custom gesture systems.
- Use
@Environment(\.isFocused)to react to focus state inside descendants instead of duplicating focus state in parent models. - Apply
.focusable(...)only to custom views that are not already intrinsically focusable. Do not wrap buttons, lists, or UIKit views that already manage focus cleanly. - Keep hero content, shelves, details, and player-adjacent overlays as distinct layout regions with explicit responsibilities.
- Use context menus for long-press quick actions instead of inventing custom press-and-hold overlays.
- Keep copy short and scannable. TV text should not feel like a dense tablet UI stretched onto a larger screen.
Anti-patterns
- Designing tvOS like an iPhone on a large monitor.
- Using
NavigationViewfor new work instead ofNavigationStackorNavigationSplitView. - Building rigid grids that break when focused items enlarge.
- Leaving shelves clipped because
.scrollClipDisabled()was omitted. - Replacing standard remote behavior with custom swipe models or freeform pointer-like interaction.
- Spraying custom blur, background fills, or custom glass over bars, sidebars, and controls that should use system appearance.
- Assuming the top-left element is always the correct default focus target.
- Treating
verticalSizeClassas a meaningful tvOS adaptation signal.
Workflow for a new tvOS screen
- Define the content surface and focus graph first.
- Choose the root structure from
references/navigation-structure.md. - Build the focusable content with standard lockup and shelf patterns from
references/lockups-shelves.md. - Add explicit focus management only where geometry or content changes require it.
- Review search, quick actions, and remote affordances if the screen exposes discovery actions.
- Build and verify in the simulator, making sure focus moves where a TV user expects.
References
references/components-index.mdreferences/navigation-structure.mdreferences/focus-and-remote.mdreferences/lockups-shelves.mdreferences/search-and-discovery.mdreferences/liquid-glass-and-styling.md- In addition to the references above, use web search to consult current Apple Developer documentation when tvOS APIs, focus behavior, or design guidance may have changed.