Editing
All simulators are now optional to download, reducing Xcodes download size further
Code completion is faster, makes less mistakes
Press ➡️ key to get all overloads of a function in auto-complete
Function suggestions are now ordered by usage frequency and context-aware
Symbols are now generated for Images and Colors in Asset Catalogs
use via
Image(.yourImage)orImageResource.yourImagewith autocompletion support & compiler checkslikewise you can use
Color(.yourColor)orColorResource.yourColorwith autocompletionString Catalogs replace
.stringsand.stringsdictfiles – migrate those legacy files via right-click “Migrate”A visual editor shows all languages with their current translation progress and all singular & pluraized translations in one place
New translation keys in code are automatically detected and added to the file
Real-time preview of documentation by using Assistant Editor
Macros make for more expressive APIs, help eliminate repeated code
@Observable,#Predicate,@Modelexamples of macros from AppleNew template for creating your own macro packages with sample code provided
“Expand Macro” in quick actions menu (Cmd + Shift + A) shows code that’s generated by macro – supports breakpoints
#Preview { ... }replacesPreviewProviderprotocol, much easier & more flexible#Previeweven supports UIKit & AppKit directly, just create aViewControllerfor example#Previewsupports also Widget timeline, previewing all differentt time views
Navigating
New Bookmarks navigator (in left menu), right-click any code or search query to add a bookmark
You can provide a description for the bookmark, which shows from right side of the code (like
#warning)Bookmarks are groupable (like folders), to give them different semantic meanings like TODOs/reminders/etc.
You can “complete” a bookmark by pressing a checkbox to its left, or simply delete them – same result
New type of search queries available: “conforming type” e.g. to find all conformances to
ViewModifierprotocolWhen a search query is bookmarked, you need to press “refresh” button to re-execute query & update matches
Sharing
Uncommitted changes now presented in a single scrollable view
You can make smaller changes to your code right within that view if you find small issues like typos
Stage changes
Testing
45% fater reporting
You can filter tests at the bottom left
New design for reports with a high-level summary of test plan: Top Insights, Stats with pie chart, & more
New “Performance Metrics” tab
UI tests have full recording until fail, plays automatically when stepping through test, timeline for scrubbing available
Even the UI hierarchy is recorded so you can see the hierarchy at any given time during the test
Debugging
OSLog deeply integrated to Xcode
Initialize:
let logger = Logger(subsystem:...)Then call:
logger.info(...),logger.warning(...),logger.error(...),logger.notice(...)Clean presentation of logs in Console with background color & optional metadata fields
Filtering possible based on metadata, like log level
Right-clicking and selecting “Jump to Source” brings you to line where log happened
Distributing
Xcode Cloud: Test notes support, Notarization support
Signature Verification for
.xcframeworksNew Privacy Manifest file for 3rd party frameworks
Xcode produces PDF report based on all privacy manifests or included frameworks to help fill App Stor Connect privacy labels
New TestFlight internal testing option during distribution to prevent accidental release to customers
New push notification when uploaded build processing finished on Connect (build ready for distribution)
