2025 Accessibility & Inclusion
WWDC25 · 16 min · Accessibility & Inclusion
Customize your app for Assistive Access
Assistive Access is a distinctive, focused iOS experience that makes it easier for people with cognitive disabilities to use iPhone and iPad independently. In iOS and iPadOS 26, you can customize your app when it’s running in Assistive Access to give people greater ease and independence. Learn how to tailor your app using the AssistiveAccess SwiftUI scene type, and explore the key design principles that can help you create a high-quality Assistive Access experience for everyone.
Watch at developer.apple.com ↗Chapters
Code shown on screen · 5 snippets
Create a scene for Assistive Access
// Create a scene for Assistive Access
import SwiftUI
import SwiftData
@main
struct WWDCDrawApp: App {
var body: some Scene {
WindowGroup {
ContentView()
.modelContainer(for: [DrawingModel.self])
}
AssistiveAccess {
AssistiveAccessContentView()
.modelContainer(for: [DrawingModel.self])
}
}
} Display an Assistive Access preview
// Display an Assistive Access preview
import SwiftUI
struct AssistiveAccessContentView: View {
(\.modelContext) var context
var body: some View {
VStack {
Image(systemName: "globe")
.imageScale(.large)
.foregroundStyle(.tint)
Text("Hello, world!")
}
.padding()
}
}
#Preview(traits: .assistiveAccess)
AssistiveAccessContentView()
} Declare a SwiftUI scene with UIKit
// Declare a SwiftUI scene with UIKit
import UIKit
import SwiftUI
class AssistiveAccessSceneDelegate: UIHostingSceneDelegate {
static var rootScene: some Scene {
AssistiveAccess {
AssistiveAccessContentView()
}
}
/* ... */
} Activate a SwiftUI scene with UIKit
// Activate a SwiftUI scene with UIKit
import UIKit
@main
class AppDelegate: UIApplicationDelegate {
func application(_ application: UIApplication, configurationForConnecting connectingSceneSession: UISceneSession, options: UIScene.ConnectionOptions) -> UISceneConfiguration {
let role = connectingSceneSession.role
let sceneConfiguration = UISceneConfiguration(name: nil, sessionRole: role)
if role == .windowAssistiveAccessApplication {
sceneConfiguration.delegateClass = AssistiveAccessSceneDelegate.self
}
return sceneConfiguration
}
} Display an icon alongside a navigation title
// Display an icon alongside a navigation title
import SwiftUI
struct ColorSelectionView: View {
var body: some View {
Group {
List {
ForEach(ColorMode.allCases) { color in
NavigationLink(destination: DrawingView(color: color)) {
ColorThumbnail(color: color)
}
}
}
.navigationTitle("Draw")
.assistiveAccessNavigationIcon(systemImage: "hand.draw.fill")
}
}
} Resources
Related sessions
-
8 min -
26 min