Xcode 27 introduces an agentic localization workflow that lets you ask a coding agent to translate your entire app directly inside Xcode, leveraging String Catalog context — including where and how strings are used — to produce accurate, consistent translations across all languages.
• Eliminates the manual export/import cycle: agents build your targets, discover all localizable strings, add them to String Catalogs, and write translations in one conversation
• Context-aware translation uses String Catalog metadata (code location, usage comments, related strings, sibling-language translations) to disambiguate words like 'book' that have multiple meanings
• Consistent terminology is enforced automatically — a custom glossary or TRANSLATION.md file lets you lock product names, tone, and preferred terms across every language without re-prompting
Shows the recommended Swift source patterns that make strings fully discoverable by Xcode's localization agent, including plural variants and a custom table, so the agent can translate them with full context.
import SwiftUI
// MARK: - Localizable strings the Xcode agent will discover and translate
struct LandmarkListView: View {
let landmarks: [String]
let visitedCount: Int
var body: some View {
VStack(alignment: .leading, spacing: 12) {
// SwiftUI Text is localizable by default — agent picks this up automatically
Text("Landmarks", comment: "Section header listing all landmarks in the app")
.font(.largeTitle)
.bold()
// Plural variant: Xcode agent adds correct plural forms per language
// In the String Catalog this becomes a stringsdict-style plural rule
Text(
"\(landmarks.count) attractions",
comment: "Count of landmarks displayed in the list header"
)
.font(.subheadline)
.foregroundStyle(.secondary)
// Challenge label — new feature the agent will localize into every supported language
Text(
"Can you discover all \(landmarks.count) landmarks?",
comment: "Challenge prompt encouraging users to visit every landmark"
)
.font(.callout)
.foregroundStyle(.mint)
List(landmarks, id: \.self) { name in
Label(name, systemImage: "mappin.circle")
}
}
.padding()
.navigationTitle(
Text("Flagship Attractions",
comment: "App navigation title; preferred CA-French: 'Attraits phares'")
)
}
}
// MARK: - Non-SwiftUI code: use String(localized:table:comment:) so the agent finds it
func landmarkNotificationBody(name: String) -> String {
// 'table' maps to a String Catalog called Notifications.xcstrings
String(
localized: "You have a new landmark to explore: \(name)",
table: "Notifications",
comment: "Push notification body shown when a new landmark is added to the user's list"
)
}
// MARK: - Preview
#Preview {
NavigationStack {
LandmarkListView(
landmarks: ["Eiffel Tower", "CN Tower", "Sydney Opera House"],
visitedCount: 1
)
}
.environment(\.locale, Locale(identifier: "fr_CA"))
}iOS 27 adds sectioned queries, codable model attributes, ResultsObserver for non-SwiftUI change observation, and HistoryObserver for reacting to persistent history changes in SwiftData.
USDKit is a new first-party Swift framework introduced in iOS/macOS 27 that brings native USD scene creation, composition, modification, and export capabilities to Apple platform apps, with deep RealityKit and Spatial Preview integration.
LiveCommunicationKit is the modern replacement for CXProvider that delivers rich, native conversation UIs integrated with the Lock Screen, Dynamic Island, Phone app Recents, and Siri. It provides a unified lifecycle model for audio and video conversations with a single delegate-driven action pipeline.
Agents batch strings into subagents and can take several minutes for large projects — avoid interrupting mid-run. Custom terminology must be placed in TRANSLATION.md (or referenced from AGENTS.md) so the agent only loads it for translation tasks, not general coding tasks. Strings must be properly marked as localizable (String(localized:) in UIKit/Foundation code; SwiftUI Text/Button are localizable by default) or the agent will not find them. Always validate with native speakers via TestFlight before shipping — the agent cannot substitute for human review in languages you don't speak.
Requires an Apple Intelligence–capable Mac running Xcode 27; agent-based translation uses on-device or cloud LLM depending on system configuration
The NowPlaying framework introduces a first-class Swift API for surfacing app media in system-wide now-playing surfaces — Lock Screen, Control Center, Dynamic Island, StandBy, CarPlay, Apple Watch, and Apple TV — via a declarative MediaSessionRepresentable protocol. It also supports remote media sessions (for controlling external speakers/TVs) and Media Sharing Extensions for routing media to third-party devices.