iOS 27 expands App Intents to deeply integrate with Siri's on-device language model, enabling natural-language invocation of app actions with richer parameter resolution and multi-step task chaining. Apps can now expose capabilities that Siri understands contextually without rigid phrase matching.
⢠New @AssistantIntent macro replaces boilerplate AppIntent+AssistantSchema conformances from iOS 26
⢠Parameter resolution now uses the on-device Foundation Models LLM for fuzzy matching instead of strict enum binding
⢠Intents can return structured values consumed by downstream Siri actions via the new ReturnsValue protocol
⢠AssistantEntity replaces the older AppEntity+AssistantSchemaProtocol pattern for entities surfaced to Siri
⢠Siri can now infer intent parameters from conversation context, eliminating the need for users to speak exact trigger phrases
⢠App Intents can be chained by Siri across multiple apps in a single request, enabling powerful cross-app automation
⢠Developers get built-in confirmation dialogs, disambiguation UI, and streaming response support without writing custom Siri UI code
Demonstrates an App Intent that lets Siri create a task with natural-language due-date parsing and priority inference, using the new @AssistantIntent macro and ReturnsValue protocol introduced in iOS 27.
import AppIntentsimport Foundationā// Pre-iOS 27: manual AssistantSchema conformance, no @AssistantIntent macro+// MARK: - Entityāstruct LegacyTask: AppEntity, AssistantSchemaProtocol {+struct Task: AppEntity {static var typeDisplayRepresentation = TypeDisplayRepresentation(name: "Task")ā static var defaultQuery = LegacyTaskQuery()ā static var assistantSchema: AssistantSchema = .system.entity+ static var defaultQuery = TaskQuery()var id: UUIDvar title: Stringvar dueDate: Date?ā var priority: LegacyTaskPriority+ var priority: TaskPriorityvar displayRepresentation: DisplayRepresentation {ā DisplayRepresentation(title: "\(title)")+ DisplayRepresentation(title: "\(title)",+ subtitle: priority.rawValue)}}āenum LegacyTaskPriority: String, AppEnum {+enum TaskPriority: String, AppEnum {case low, medium, highstatic var typeDisplayRepresentation = TypeDisplayRepresentation(name: "Priority")ā static var caseDisplayRepresentations: [LegacyTaskPriority: DisplayRepresentation] = [+ static var caseDisplayRepresentations: [TaskPriority: DisplayRepresentation] = [.low: "Low", .medium: "Medium", .high: "High"]}āstruct LegacyTaskQuery: EntityQuery {ā func entities(for ids: [UUID]) async throws -> [LegacyTask] { [] }+struct TaskQuery: EntityQuery {+ func entities(for ids: [UUID]) async throws -> [Task] { [] }}ā// Pre-iOS 27: manual AssistantSchema conformance on the intent itselfāstruct LegacyCreateTaskIntent: AppIntent, AssistantSchemaProtocol {ā static var assistantSchema: AssistantSchema = .system.createTask+// MARK: - Intent (iOS 27 style)++@AssistantIntent(schema: .system.createTask)+struct CreateTaskIntent: AppIntent {static var title: LocalizedStringResource = "Create Task"+ static var description = IntentDescription("Creates a new task with optional due date and priority.")ā @Parameter(title: "Title") var title: Stringā @Parameter(title: "Due Date") var dueDate: Date?ā // No fuzzy LLM matching ā user must say exact enum valuesā @Parameter(title: "Priority") var priority: LegacyTaskPriority+ @Parameter(title: "Title")+ var title: Stringā // Pre-iOS 27: no ReturnsValue chaining; Siri cannot pass result to next actionā func perform() async throws -> some ProvidesDialog {ā let _ = LegacyTask(id: UUID(), title: title, dueDate: dueDate, priority: priority)ā return .result(dialog: "Task created.")+ @Parameter(title: "Due Date")+ var dueDate: Date?++ // iOS 27: Siri infers this from natural language (e.g. "urgent" ā .high)+ @Parameter(title: "Priority", default: .medium)+ var priority: TaskPriority++ // iOS 27: structured return value Siri can chain into follow-up actions+ func perform() async throws -> some ReturnsValue<Task> & ProvidesDialog {+ let newTask = Task(+ id: UUID(),+ title: title,+ dueDate: dueDate,+ priority: priority+ )+ // Persist task to your store here+ return .result(+ value: newTask,+ dialog: "Created '\(title)' with \(priority.rawValue) priority."+ )}}āstruct LegacyTaskShortcuts: AppShortcutsProvider {+// MARK: - App Shortcuts (makes intent discoverable by Siri without setup)++struct TaskShortcuts: AppShortcutsProvider {static var appShortcuts: [AppShortcut] {AppShortcut(ā intent: LegacyCreateTaskIntent(),ā phrases: ["Create a task in \(.applicationName)"],+ intent: CreateTaskIntent(),+ phrases: [+ "Create a task in \(.applicationName)",+ "Add \(\.$title) to \(.applicationName)",+ "Remind me to \(\.$title) in \(.applicationName)"+ ],shortTitle: "Create Task",systemImageName: "checkmark.circle")}}
Foundation Models is a new Apple framework introduced in iOS 27 that gives developers on-device access to the same Apple Intelligence language model powering system features, enabling text generation, structured output, and tool-calling entirely on-device without a network connection.
Visual Intelligence brings iOS 17's Visual Look Up capabilities to a new developer-facing API surface in iOS 27, letting apps pipe live camera frames or static images through on-device scene understanding to extract subjects, text, barcodes, and rich semantic labels without any cloud round-trip.
iOS 27 opens the Foundation Models framework to third-party LLM providers via a new public LanguageModel protocol, allowing anyone to integrate server-based or local models (e.g. Claude, Gemini, CoreAI, MLX) using the same API as Apple's on-device system model.
In-depth guide
iOS 27 On-Device AI & Apple Intelligence āIntents must be re-indexed after code changes during beta; AssistantSchema conformance is required for Siri's on-device model to discover new intents ā forgetting the @AssistantIntent macro is the most common pitfall. PerformResult now requires explicit ReturnsValue conformance for chained intents.
Full natural-language parameter resolution requires Apple Intelligence-capable devices (A17 Pro / M1 or later); basic intent invocation works on all iOS 27 devices
iOS 27 opens the Foundation Models framework to third-party LLM providers via a new public LanguageModel protocol, enabling anyone to integrate custom, server-based, or open-source models using the same Swift API as Apple's on-device system model.