What's new in Xcode 15

Written by Cihat Gündüz

Description: Discover the latest productivity and performance improvements in Xcode 15. Explore enhancements to code completion and Xcode Previews, learn about the test navigator and test report, and find out more about the streamlined distribution process. We’ll also highlight improved navigation, source control management, and debugging.

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) or ImageResource.yourImage with autocompletion support & compiler checks
  • likewise you can use Color(.yourColor) or ColorResource.yourColor with autocompletion
  • String Catalogs replace .strings and .stringsdict files – 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, @Model examples of macros from Apple
  • New 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 { ... } replaces PreviewProvider protocol, much easier & more flexible
  • #Preview even supports UIKit & AppKit directly, just create a ViewController for example
  • #Preview supports 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 ViewModifier protocol
  • When 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 .xcframeworks
  • New 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)

Missing anything? Corrections? Contributions are welcome 😃

Related

Written by

Cihat Gündüz

Cihat Gündüz

📱Indie iOS Developer, 🎬Content Creator for 👨🏻‍💻Developers. 👾Twitch-Streamer & ▶️YouTuber.