View in English

  • Apple Developer
    • Get Started

    Explore Get Started

    • Overview
    • Learn
    • Apple Developer Program

    Stay Updated

    • Latest News
    • Hello Developer
    • Platforms

    Explore Platforms

    • Apple Platforms
    • iOS
    • iPadOS
    • macOS
    • tvOS
    • visionOS
    • watchOS
    • App Store

    Featured

    • Design
    • Distribution
    • Games
    • Accessories
    • Web
    • Home
    • CarPlay
    • Technologies

    Explore Technologies

    • Overview
    • Xcode
    • Swift
    • SwiftUI

    Featured

    • Accessibility
    • AI & Machine Learning
    • App Intents
    • Apple Intelligence
    • Games
    • Security
    • Xcode Cloud
    • Community

    Explore Community

    • Overview
    • Meet with Apple events
    • Community-driven events
    • Developer Forums
    • Open Source

    Featured

    • WWDC
    • Swift Student Challenge
    • Developer Stories
    • App Store Awards
    • Apple Design Awards
    • Apple Developer Centers
    • Documentation

    Explore Documentation

    • Documentation Library
    • Technology Overviews
    • Sample Code
    • Human Interface Guidelines
    • Videos

    Release Notes

    • Featured Updates
    • iOS
    • iPadOS
    • macOS
    • watchOS
    • visionOS
    • tvOS
    • Xcode
    • Downloads

    Explore Downloads

    • All Downloads
    • Operating Systems
    • Applications
    • Design Resources

    Featured

    • Xcode
    • TestFlight
    • Fonts
    • SF Symbols
    • Icon Composer
    • Support

    Explore Support

    • Overview
    • Help Guides
    • Developer Forums
    • Feedback Assistant
    • Contact Us

    Featured

    • Account Help
    • App Review Guidelines
    • App Store Connect Help
    • Upcoming Requirements
    • Agreements and Guidelines
    • System Status
  • Quick Links

    • Events
    • News
    • Forums
    • Sample Code
    • Videos
 

Videos

Open Menu Close Menu
  • Collections
  • All Videos
  • About

More Videos

  • About
  • Summary
  • Swift Group Lab

    Join us online for a deep dive into WWDC26 with Apple engineers and designers to ask questions, get advice, and follow the discussion about the week's biggest Swift announcements. Conducted in English.

    Chapters

    • 0:00:00 - Introduction
    • 0:04:33 - What's the best way to transfer "ownership" of non-Sendable data from one isolation domain to another without copying — e.g. an actor handing large data to another actor?
    • 0:06:05 - What advice and best practices (and pitfalls) do you have for using Swift structured concurrency?
    • 0:11:56 - Is there an overhead cost to unused/unnecessary conformances (Sendable, Equatable, Hashable, etc.) added to every struct out of habit? What happens under the hood?
    • 0:14:29 - Applying @MainActor triggers a massive chain reaction of async refactoring across a legacy codebase. What's the cleanest pattern to stop this 'concurrency contagion' without sacrificing Swift 6 safety?
    • 0:17:19 - What are the most essential modern Swift features or official resources to adopt first for high efficiency and great performance?
    • 0:19:48 - After a full manual Swift 6 strict-concurrency migration, should we tear out annotations that the newer isolation model makes redundant, or leave them as no-ops?
    • 0:23:08 - Why is UserDefaults not Sendable given the docs say it's thread-safe? Is this a preliminary step?
    • 0:25:24 - Would it be good practice to migrate to using 'borrow/mutate' instead of 'get/set' altogether, and when would you not recommend it?
    • 0:27:06 - With additions like Mutex, InlineArray, Span, typed throws, and non-copyable types, how do app developers know what's for them vs systems/embedded developers, and how do you keep up?
    • 0:31:57 - Our project has very slow incremental builds with Swift Emit Module taking minutes, and splitting into modules didn't help. Can features like type inference/generics affect this, and how do we diagnose it?
    • 0:33:39 - Now that Swift 6 concurrency has been adopted widely, is there anything the team would approach differently if designing it today?
    • 0:37:31 - What are the notable Swift Package Manager improvements in the latest release, especially around build and dependency-resolution performance for large multi-package projects?
    • 0:39:20 - What's the one Swift feature most developers don't know exists but should?
    • 0:48:15 - What's left in language evolution to get tuples to finally conform to Equatable, Hashable, Comparable, etc. conditionally?
    • 0:50:05 - With Swift 6 strict concurrency, what's the recommended pattern to ingest high-frequency sensor data on a background actor and stream updates to an @Observable model on the MainActor without blocking the UI?
    • 0:53:03 - Performance: why is a tuple more expensive than a struct when returned from a method — or is it situational?
    • 0:54:17 - What's your favorite quality-of-life / quality-of-code feature in Swift — not the obvious ones, but neat lesser-known things that make Swift fun to write?

    Resources

      • HD Video
      • SD Video
  • Search this video…
    • 0:00:00 - Introduction
    • Engineers from the Swift and Foundation teams introduce themselves and set up a session spanning Swift concurrency and the Swift 6 migration, the ownership model, performance and build times, Swift Package Manager, and lesser-known language features.

    • 0:04:33 - What's the best way to transfer "ownership" of non-Sendable data from one isolation domain to another without copying — e.g. an actor handing large data to another actor?
    • Use region-based isolation, which lets you transfer non-Sendable data between actors as long as the original actor no longer accesses it after the transfer. In many cases the compiler can prove this is safe from your usage; the `sending` keyword makes the transfer explicit when you need to hand data off and relinquish access.

    • 0:06:05 - What advice and best practices (and pitfalls) do you have for using Swift structured concurrency?
    • Lean into structured concurrency as fully as you can — trouble tends to come from adding escape hatches out of it. A practical approach is to refactor smaller, self-contained parts of your codebase into structured concurrency as units, rather than sprinkling unstructured tasks throughout, so the structure and cancellation guarantees actually hold.

    • 0:11:56 - Is there an overhead cost to unused/unnecessary conformances (Sendable, Equatable, Hashable, etc.) added to every struct out of habit? What happens under the hood?
    • There is some cost. Conformances like Equatable and Hashable generate the associated equality/hashing code and metadata to support them, adding to binary size and compile work even when unused. Add conformances deliberately where you need them rather than reflexively to every type; Sendable is a compile-time marker with less runtime weight, but value conformances carry real generated code.

    • 0:14:29 - Applying @MainActor triggers a massive chain reaction of async refactoring across a legacy codebase. What's the cleanest pattern to stop this 'concurrency contagion' without sacrificing Swift 6 safety?
    • When you mark a type @MainActor, everything using it must also be main-actor-isolated, which spreads. Rather than annotating individual types, consider setting main-actor isolation as the module's default so most of your app code is implicitly on the main actor, and carve out concurrency only where you deliberately go off it. That inverts the contagion and keeps legacy UI code simple while preserving safety.

    • 0:17:19 - What are the most essential modern Swift features or official resources to adopt first for high efficiency and great performance?
    • Start by profiling — Instruments shows exactly where time goes, and the new flame graph view breaks down where work happens, so you optimize what actually matters rather than guessing. Build performance intuition from measurement first, then adopt the specific language features that address the hot spots you find.

    • 0:19:48 - After a full manual Swift 6 strict-concurrency migration, should we tear out annotations that the newer isolation model makes redundant, or leave them as no-ops?
    • It's completely fine to leave redundant annotations — they don't hurt, and some developers prefer keeping isolation explicit for clarity. There's no need to churn your codebase removing them; remove them if you value the reduced noise, but treating them as harmless no-ops is a perfectly good choice.

    • 0:23:08 - Why is UserDefaults not Sendable given the docs say it's thread-safe? Is this a preliminary step?
    • When Sendable was introduced, Foundation was audited into three buckets: clearly Sendable, clearly not, and a middle group complicated by class hierarchies where a superclass might be Sendable but a subclass isn't (like NSString being immutable while a mutable subclass exists). UserDefaults falls into that nuanced category; it's thread-safe in practice but not yet marked Sendable pending that resolution.

    • 0:25:24 - Would it be good practice to migrate to using 'borrow/mutate' instead of 'get/set' altogether, and when would you not recommend it?
    • Borrow and mutate are part of Swift's evolving ownership model: borrow gives a read-only reference to data held elsewhere (avoiding a copy), and mutate gives a mutable reference. They're valuable for performance-sensitive code handling large or non-copyable values, but they're not a blanket replacement for get/set — reach for them where avoiding copies matters, not everywhere by default.

    • 0:27:06 - With additions like Mutex, InlineArray, Span, typed throws, and non-copyable types, how do app developers know what's for them vs systems/embedded developers, and how do you keep up?
    • Swift is designed around progressive disclosure — you shouldn't need the advanced, low-level features for typical app development. Many additions target systems, embedded, or performance-critical code; reach for them only when a specific need arises. Don't feel obligated to learn everything at once; the core language remains approachable and the specialized tools are there when you need them.

    • 0:31:57 - Our project has very slow incremental builds with Swift Emit Module taking minutes, and splitting into modules didn't help. Can features like type inference/generics affect this, and how do we diagnose it?
    • Language features like type inference and generics can hurt build performance in the extreme, but usually not project-wide — once in a while a particular expression takes a long time to type-check. But when it's specifically the module-emission phase that's slow, that's more likely related to all the other modules being imported. Diagnose it the way you'd performance-tune code: use explicit module builds (rolled out in Xcode and Swift over the last couple of years, now on by default) together with the build timeline in Xcode to see where the compiler is actually spending its time. You'll often find excess dependencies causing large rebuilds that are easy to prune once you can see them.

    • 0:33:39 - Now that Swift 6 concurrency has been adopted widely, is there anything the team would approach differently if designing it today?
    • Yes — through concurrency's evolution there were two changes to how async functions behave, and in hindsight the team would have started with the latest behavior for where a non-isolated async function runs. That final model (a nonisolated async function runs in the caller's context rather than hopping off) is what they'd have chosen from the outset.

    • 0:37:31 - What are the notable Swift Package Manager improvements in the latest release, especially around build and dependency-resolution performance for large multi-package projects?
    • The biggest Swift Package Manager change in the 6.4 release is one you don't opt into: Xcode's SPM and the open-source SPM used in other IDEs (like VS Code) now share a single build-system implementation, the Swift Build package, rather than two separate ones. That brings consistency across environments and a single place to land bug fixes and improvements. It also carries the Swift build system's performance work into ordinary package builds — including explicit modules and better splitting of a module's build into parallel pieces. It was a preview in 6.3 and is on by default in 6.4, so you benefit just by updating.

    • 0:39:20 - What's the one Swift feature most developers don't know exists but should?
    • A favorite is a combination of two: the annotations that control a function body's visibility across module boundaries together with the optimizer's inlining decisions (such as @inlinable and @inline). Used well, they let the optimizer inline across modules for performance-critical code — powerful, but to be applied deliberately since they expose implementation details.

    • 0:48:15 - What's left in language evolution to get tuples to finally conform to Equatable, Hashable, Comparable, etc. conditionally?
    • It's an evolution of parameter packs. The base concept now exists in the language; what's still needed is the ability to write an extension over a tuple type whose element types are represented by a parameter pack (since each element can be a different concrete type). Once that's possible, conditional conformances of tuples to Equatable, Hashable, and so on can be expressed.

    • 0:50:05 - With Swift 6 strict concurrency, what's the recommended pattern to ingest high-frequency sensor data on a background actor and stream updates to an @Observable model on the MainActor without blocking the UI?
    • Start by pinning down what "high frequency" actually means — if it's still well below your UI's update rate, there may be no work to do. When it's genuinely high, the goal is to cross from the background actor to your MainActor @Observable model as infrequently as possible: coalesce or accumulate samples rather than sending one update per change, and decide how much data loss is acceptable (a UI rarely needs every intermediate value). Debouncing helps here — Swift Async Algorithms has a Debounce you can layer on an async sequence — and SwiftUI's @Observable already coalesces updates for efficiency. Keep the heavy ingestion asynchronous, and drive the UI only with what the user actually needs to see.

    • 0:53:03 - Performance: why is a tuple more expensive than a struct when returned from a method — or is it situational?
    • They're handled differently by the compiler. A struct is generally passed as a single entity, whereas a tuple is often "exploded" — each element passed as if it were a separate parameter. For a tuple with many elements that per-element handling can cost more than moving one struct, which is why returning a struct can be cheaper than an equivalent tuple.

    • 0:54:17 - What's your favorite quality-of-life / quality-of-code feature in Swift — not the obvious ones, but neat lesser-known things that make Swift fun to write?
    • A forward-looking favorite is the new work on iterable protocols mentioned in What's New in Swift, which connects to the performance thread around non-copyable and non-escapable types. It points toward writing expressive iteration while keeping the strong performance and ownership guarantees the language has been building out.

Developer Footer

  • Videos
  • WWDC26
  • Swift Group Lab
  • Open Menu Close Menu
    • iOS
    • iPadOS
    • macOS
    • tvOS
    • visionOS
    • watchOS
    • App Store
    Open Menu Close Menu
    • Swift
    • SwiftUI
    • Swift Playground
    • TestFlight
    • Xcode
    • Xcode Cloud
    • Icon Composer
    • SF Symbols
    Open Menu Close Menu
    • Accessibility
    • Accessories
    • AI & Machine Learning
    • Apple Intelligence
    • Audio & Video
    • Augmented Reality
    • Business
    • Design
    • Distribution
    • Education
    • Games
    • Health & Fitness
    • In-App Purchase
    • Localization
    • Maps & Location
    • Security
    • Safari & Web
    Open Menu Close Menu
    • Documentation
    • Downloads
    • Sample Code
    • Videos
    • Documentation Archive
    Open Menu Close Menu
    • Help Guides & Articles
    • Contact Us
    • Forums
    • Feedback & Bug Reporting
    • System Status
    Open Menu Close Menu
    • Apple Developer
    • App Store Connect
    • Certificates, IDs, & Profiles
    • Feedback Assistant
    Open Menu Close Menu
    • Apple Developer Program
    • Apple Developer Enterprise Program
    • App Store Small Business Program
    • MFi Program
    • Mini Apps Partner Program
    • News Partner Program
    • Video Partner Program
    • Security Bounty Program
    • Security Research Device Program
    Open Menu Close Menu
    • Meet with Apple
    • Apple Developer Centers
    • App Store Awards
    • Apple Design Awards
    • Apple Developer Academies
    • WWDC
    Read the latest news.
    Get the Apple Developer app.
    Copyright © 2026 Apple Inc. All rights reserved.
    Terms of Use Privacy Policy Agreements and Guidelines