CINXE.COM

Platforms State of the Union - WWDC24 - Videos - Apple Developer

<!DOCTYPE html> <html xmlns="https://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head> <meta charset="utf-8" /> <meta name="Author" content="Apple Inc." /> <meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover" /> <link rel="shortcut icon" href="/favicon.ico" /> <link rel="icon" href="/favicon.ico" /> <link rel="mask-icon" href="/apple-logo.svg" color="#333333"> <link rel="stylesheet" href="/assets/styles/global.dist.css?02002514015" type="text/css" /> <link rel="stylesheet" href="/assets/styles/dark-mode.css?17182448067" type="text/css" media="(prefers-color-scheme: dark)" data-color-scheme="dark" /> <link rel="stylesheet" href="/assets/styles/localization.css?39172414191" type="text/css" /> <script src="/assets/scripts/lib/jquery/jquery-3.6.0.min.js?17182448067"></script> <script src="/assets/scripts/settings.js?17182448067"></script> <script src="/assets/scripts/language-locales.js?17182448067"></script> <script src="/assets/scripts/DeveloperBreadcrumbs.js?05182434080"></script> <script async src="/assets/scripts/lib/jquery/jquery.retinate.js?17182448067"></script> <script async src="/assets/scripts/global.js?17182448067"></script> <script async src="/assets/scripts/global-logout.js?17182448067"></script> <link rel="stylesheet" href="https://www.apple.com/wss/fonts?family=SF+Pro&v=2" type="text/css" /> <link rel="stylesheet" href="https://www.apple.com/wss/fonts?family=SF+Pro+Icons&v=1" type="text/css" /> <link rel="stylesheet" href="https://www.apple.com/wss/fonts?family=SF+Mono&v=2" type="text/css" /> <link rel="stylesheet" href="https://www.apple.com/wss/fonts?family=Apple+Icons&amp;v=1" type="text/css" /> <title>Platforms State of the Union - WWDC24 - Videos - Apple Developer</title> <meta name="omni_page" content="Platforms State of the Union - WWDC24 - Videos" /> <meta http-equiv="content-type" content="text/html; charset=utf-8"> <link type="text/css" rel="stylesheet" href="/videos/styles/videos.css?2"> <link type="text/css" rel="stylesheet" href="/videos/styles/video-overlay.css?2"> <meta name="description" content="Discover the newest advancements on Apple platforms."> <meta property="og:url" content="https://developer.apple.com/videos/play/wwdc2024/102/" /> <meta property="og:title" content="Platforms State of the Union - WWDC24 - Videos - Apple Developer" /> <meta property="og:description" content="Discover the newest advancements on Apple platforms." /> <meta property="og:site_name" content="Apple Developer" /> <meta property="og:type" content="website" /> <meta property="og:video" content="https://devstreaming-cdn.apple.com/videos/wwdc/2024/102/1/A8ECDDD9-F782-4267-B6E0-782B4D9ECB88/cmaf.m3u8" /> <meta property="og:video_secure_url" content="https://devstreaming-cdn.apple.com/videos/wwdc/2024/102/1/A8ECDDD9-F782-4267-B6E0-782B4D9ECB88/cmaf.m3u8" /> <meta property="og:video:type" content="vnd.apple.mpegURL" /> <meta property="og:video:width" content="1280" /> <meta property="og:video:height" content="720" /> <meta property="og:image" content="https://devimages-cdn.apple.com/wwdc-services/images/C03E6E6D-A32A-41D0-9E50-C3C6059820AA/9735/9735_wide_250x141_2x.jpg" /> <meta property="og:locale" content="en_US" /> <meta itemprop="datePublished" content="2024-06-10"> <meta itemprop="uploadDate" content="2024-06-10"> <link rel="alternate" href="https://developer.apple.com/videos/play/wwdc2024/102/" hreflang="en"> <link rel="alternate" href="https://developer.apple.com/kr/videos/play/wwdc2024/102/" hreflang="ko-KR"> <link rel="alternate" href="https://developer.apple.com/cn/videos/play/wwdc2024/102/" hreflang="zh-CN"> <link rel="alternate" href="https://developer.apple.com/jp/videos/play/wwdc2024/102/" hreflang="ja-JP"> <link rel="canonical" href="https://developer.apple.com/videos/play/wwdc2024/102/" /> </head> <body class="view-play theme-dark"> <script> const prefersDark = window.matchMedia("(prefers-color-scheme: dark)").matches; if (window.Settings.preferredColorScheme) { const colorTheme = (window.Settings.preferredColorScheme === 'auto') && !prefersDark ? 'light' : (window.Settings.preferredColorScheme === 'light') ? 'light' : 'dark' document.body.setAttribute('data-color-scheme', colorTheme); } else { document.body.setAttribute('data-color-scheme', prefersDark ? 'dark' : 'light'); } </script> <style> /* footer */ html body[data-color-scheme='dark'] #main section.section.section-resources.bg-alt {background-color:var(--fill-tertiary);color:var(--glyph-gray);} html body[data-color-scheme='dark'] .developer-router-links {background-color:var(--fill-tertiary);color:var(--glyph-gray);} html body[data-color-scheme='dark'] .footer {background-color:var(--fill-tertiary);color:var(--glyph-gray-tertiary);} /* body backgrounds */ body[data-color-scheme='dark'].dmf {background-color: #000;} html body[data-color-scheme='dark'].dmf .bg-alt {background-color:var(--fill-tertiary);} html body[data-color-scheme='dark'].dmf .bg-blue {background-color:var(--fill-blue-secondary);} html body[data-color-scheme='dark'].dmf .bg-green-blue {background:linear-gradient(135deg, #65976d 0%, #588ea4 100%)} html body[data-color-scheme='dark'].dmf .bg-yellow {background: linear-gradient(to bottom, var(--fill-tertiary) 0%, var(--fill-tertiary-alt) 100%);} html body[data-color-scheme='dark'].dmf .bg-light {background-color:var(--fill-secondary-alt);} html body[data-color-scheme='dark'].dmf .bg-gradient, html body[data-color-scheme='dark'].dmf .bg-grad {background:linear-gradient(to bottom, var(--dark) 0%, var(--fill-gray-secondary-alt) 100%);} html body[data-color-scheme='dark'].dmf .bg-grad-down {background:linear-gradient(to bottom, var(--dark) 0%, var(--fill-gray-secondary-alt) 100%);} html body[data-color-scheme='dark'].dmf .bg-grad-up {background:linear-gradient(to bottom, var(--fill-gray-secondary-alt) 0%, var(--dark) 100%);} html body[data-color-scheme='dark'].dmf .bg-blue-gradient, html body[data-color-scheme='dark'].dmf .bg-gradient-blue {background:linear-gradient(to bottom, var(--fill-blue-gradient-light) 0%, var(--fill-blue-gradient-dark) 100%);} html body[data-color-scheme='dark'].dmf .bg-blue-gradient-alt {background: linear-gradient(90deg, #061830 0%, #102d48 100%);} /* globalNav */ html body[data-color-scheme='dark'] #ac-globalnav {background: var(--fill-tertiary);} /* localNav */ html body[data-color-scheme='dark'] .localnav.localnav-scrim .localnav-background, html body[data-color-scheme='dark'] .localnav-scrim.localnav.localnav-background { background-color: rgba(29, 29, 31, 0.9); } @supports ((-webkit-backdrop-filter: initial) or (backdrop-filter: initial)) { html body[data-color-scheme='dark'] .localnav.localnav-scrim .localnav-background, html body[data-color-scheme='dark'] .localnav-scrim.localnav.localnav-background { background-color: rgba(29, 29, 31, 0.72); } } </style> <link rel="stylesheet" href="/assets/styles/globalnav.css?55202406207" type="text/css" /> <link rel="stylesheet" href="/assets/styles/suggest-lang.css?17182448067" type="text/css" /> <div id="suggest-lang" class="ribbon hide" lang="en"> <div class="ribbon-content-wrapper"> <div class="ribbon-content row"> <div class="column large-12 large-centered"> <p><a href="#" id="suggest-link" class="ribbon-link more">View in English</a></p> <button id="suggest-closer" class="icon icon-after icon-reset" aria-label="Dismiss language suggestion" tabindex="0"></button> </div> </div> </div> </div> <script src="/assets/scripts/suggest-lang.js?17182448067"></script> <aside id="ac-gn-segmentbar" class="ac-gn-segmentbar" lang="en-US" dir="ltr"> </aside> <input type="checkbox" id="ac-gn-menustate" class="ac-gn-menustate" /> <nav id="ac-globalnav" class="no-js" role="navigation" aria-label="Global" data-hires="false" data-analytics-region="global nav" lang="en-US" dir="ltr" data-www-domain="www.apple.com" data-store-locale="us" data-store-root-path="/us" data-store-api="/[storefront]/shop/bag/status" data-search-locale="en_US" data-search-suggestions-api="/search-services/suggestions/" data-search-defaultlinks-api="/search-services/suggestions/defaultlinks/" data-search-suggestions-enabled="false"> <div class="ac-gn-content"> <ul class="ac-gn-header"> <li class="ac-gn-item ac-gn-menuicon"> <label class="ac-gn-menuicon-label" for="ac-gn-menustate" aria-hidden="true"> <span class="ac-gn-menuicon-bread ac-gn-menuicon-bread-top"> <span class="ac-gn-menuicon-bread-crust ac-gn-menuicon-bread-crust-top"></span> </span> <span class="ac-gn-menuicon-bread ac-gn-menuicon-bread-bottom"> <span class="ac-gn-menuicon-bread-crust ac-gn-menuicon-bread-crust-bottom"></span> </span> </label> <a href="#ac-gn-menustate" role="button" class="ac-gn-menuanchor ac-gn-menuanchor-open" id="ac-gn-menuanchor-open"> <span class="ac-gn-menuanchor-label">Global Nav Open Menu</span> </a> <a href="#" role="button" class="ac-gn-menuanchor ac-gn-menuanchor-close" id="ac-gn-menuanchor-close"> <span class="ac-gn-menuanchor-label">Global Nav Close Menu</span> </a> </li> <li class="ac-gn-item ac-gn-apple"> <a class="ac-gn-link ac-gn-link-apple-developer" href="/" data-analytics-title="appledeveloper home" id="ac-gn-firstfocus-small"> <span class="ac-gn-link-text">Apple Developer</span> </a> </li> </ul> <div class="ac-gn-search-placeholder-container" role="search"> <div class="ac-gn-search ac-gn-search-small"> <a id="ac-gn-link-search-small" class="ac-gn-link" href="/search/" data-analytics-title="search" data-analytics-click="search" data-analytics-intrapage-link aria-label="Search"> <div class="ac-gn-search-placeholder-bar"> <div class="ac-gn-search-placeholder-input"> <div class="ac-gn-search-placeholder-input-text" aria-hidden="true"> <div class="ac-gn-link-search ac-gn-search-placeholder-input-icon"></div> <span class="ac-gn-search-placeholder">Search</span> </div> </div> <div class="ac-gn-searchview-close ac-gn-searchview-close-small ac-gn-search-placeholder-searchview-close"> <span class="ac-gn-searchview-close-cancel" aria-hidden="true">Cancel</span> </div> </div> </a> </div> </div> <ul class="ac-gn-list"> <li class="ac-gn-item ac-gn-apple"> <a class="ac-gn-link ac-gn-link-apple-developer" href="/" data-analytics-title="appledeveloper home" id="ac-gn-firstfocus"> <span class="ac-gn-link-text">Apple Developer</span> </a> </li> <li class="ac-gn-item ac-gn-item-menu ac-gn-news"> <a class="ac-gn-link ac-gn-link-news" href="/news/" data-analytics-title="news"> <span class="ac-gn-link-text">News</span> </a> </li> <li class="ac-gn-item ac-gn-item-menu ac-gn-discover"> <a class="ac-gn-link ac-gn-link-discover" href="/discover/" data-analytics-title="discover"> <span class="ac-gn-link-text">Discover</span> </a> </li> <li class="ac-gn-item ac-gn-item-menu ac-gn-design"> <a class="ac-gn-link ac-gn-link-design" href="/design/" data-analytics-title="design"> <span class="ac-gn-link-text">Design</span> </a> </li> <li class="ac-gn-item ac-gn-item-menu ac-gn-develop"> <a class="ac-gn-link ac-gn-link-develop" href="/develop/" data-analytics-title="develop"> <span class="ac-gn-link-text">Develop</span> </a> </li> <li class="ac-gn-item ac-gn-item-menu ac-gn-distribute"> <a class="ac-gn-link ac-gn-link-distribute" href="/distribute/" data-analytics-title="distribute"> <span class="ac-gn-link-text">Distribute</span> </a> </li> <li class="ac-gn-item ac-gn-item-menu ac-gn-dsupport"> <a class="ac-gn-link ac-gn-link-dsupport" href="/support/" data-analytics-title="dsupport"> <span class="ac-gn-link-text">Support</span> </a> </li> <li class="ac-gn-item ac-gn-item-menu ac-gn-account"> <a class="ac-gn-link ac-gn-link-account" href="/account/" data-analytics-title="account"> <span class="ac-gn-link-text">Account</span> </a> </li> <li class="ac-gn-item ac-gn-item-menu ac-gn-search" role="search"> <a id="ac-gn-link-search" class="ac-gn-link ac-gn-link-search" href="/search/" data-analytics-title="search" data-analytics-click="search" data-analytics-intrapage-link aria-label="Search"></a> </li> </ul> <aside id="ac-gn-searchview" class="ac-gn-searchview" role="search" data-analytics-region="search"> <div class="ac-gn-searchview-content"> <div class="ac-gn-searchview-bar"> <div class="ac-gn-searchview-bar-wrapper"> <form id="ac-gn-searchform" class="ac-gn-searchform" action="/search/" method="get"> <div class="ac-gn-searchform-wrapper"> <input id="ac-gn-searchform-input" class="ac-gn-searchform-input" type="text" name="q" aria-label="Search" placeholder="Search" autocorrect="off" autocapitalize="off" autocomplete="off" spellcheck="false" role="combobox" aria-autocomplete="list" aria-expanded="true" aria-owns="quicklinks suggestions" /> <button id="ac-gn-searchform-submit" class="ac-gn-searchform-submit" type="submit" disabled aria-label="Submit Search"></button> <button id="ac-gn-searchform-reset" class="ac-gn-searchform-reset" type="reset" disabled aria-label="Clear Search"> <span class="ac-gn-searchform-reset-background"></span> </button> </div> </form> <button id="ac-gn-searchview-close-small" class="ac-gn-searchview-close ac-gn-searchview-close-small" aria-label="Cancel Search"> <span class="ac-gn-searchview-close-cancel" aria-hidden="true"> Cancel </span> </button> </div> </div> <aside id="ac-gn-searchresults" class="ac-gn-searchresults hidden" data-string-quicklinks="Quick Links" data-string-suggestions="Suggested Searches" data-string-noresults=""> <section class="ac-gn-searchresults-section ac-gn-searchresults-section-defaultlinks"> <div class="ac-gn-searchresults-section-wrapper"> <div class="search-group-checkbox hidden"><input id="group-input" type="checkbox" name="group-filter" checked>Only search within “<span id="group-search-label"></span>”</div> <h3 class="ac-gn-searchresults-header ac-gn-searchresults-animated">Quick Links</h3> <ul class="ac-gn-searchresults-list" id="defaultlinks" role="listbox"> </ul> <span role="status" class="ac-gn-searchresults-count" aria-live="polite">5 Quick Links</span> </div> </section> </aside> </div> <button id="ac-gn-searchview-close" class="ac-gn-searchview-close" aria-label="Cancel Search"> <span class="ac-gn-searchview-close-wrapper"> <span class="ac-gn-searchview-close-left"></span> <span class="ac-gn-searchview-close-right"></span> </span> </button> </aside> </div> </nav> <div class="ac-gn-blur"></div> <div id="ac-gn-curtain" class="ac-gn-curtain"></div> <div id="ac-gn-placeholder" class="ac-nav-placeholder"></div> <script src="/assets/scripts/ac-globalnav.built.js?17182448067"></script> <link rel="stylesheet" href="/assets/styles/search.css?17182448067"> <script src="/assets/scripts/search.js?17182448067"></script> <!-- metrics --> <script> /* RSID: */ var s_account="awdappledeveloper" </script> <script src="/assets/metrics/scripts/analytics.js?072620243"></script> <script> s.pageName= AC && AC.Tracking && AC.Tracking.pageName(); s.channel="www.en.developer" s.channel="www.videos.developer"; /************* DO NOT ALTER ANYTHING BELOW THIS LINE ! **************/ var s_code=s.t();if(s_code)document.write(s_code) </script> <!-- /metrics --> <link rel="stylesheet" property="stylesheet" href="/assets/styles/localnav.css" type="text/css" /> <input type="checkbox" id="localnav-menustate" class="localnav-menustate"/> <nav id="localnav" class="localnav localnav-scrim theme-dark" data-sticky role="navigation"> <div class="localnav-wrapper"> <div class="localnav-background"></div> <div class="localnav-content"> <h2 class="localnav-title"> <a href="/videos/">Videos</a> </h2> <div class="localnav-menu"> <a href="#localnav-menustate" class="localnav-menucta-anchor localnav-menucta-anchor-open" id="localnav-menustate-open"> <span class="localnav-menucta-anchor-label">Open Menu</span> </a> <a href="#" class="localnav-menucta-anchor localnav-menucta-anchor-close" id="localnav-menustate-close"> <span class="localnav-menucta-anchor-label">Close Menu</span> </a> <div class="localnav-menu-tray"> <ul class="localnav-menu-items"> <li class="localnav-menu-item"> <a href="/videos/" class="localnav-menu-link">Collection</a> </li> <li class="localnav-menu-item"> <a href="/videos/topics/" class="localnav-menu-link">Topics</a> </li> <li class="localnav-menu-item"> <a href="/videos/all-videos/" class="localnav-menu-link">All Videos</a> </li> <li class="localnav-menu-item"> <a href="/videos/about/" class="localnav-menu-link">About</a> </li> </ul> </div> <div class="localnav-actions localnav-actions-center"> <div class="localnav-action localnav-action-menucta" aria-hidden="true"> <label for="localnav-menustate" class="localnav-menucta"> <span class="localnav-menucta-chevron"></span> </label> </div> </div> </div> </div> </div> </nav> <label id="localnav-curtain" for="localnav-menustate"></label> <script src="/assets/scripts/ac-localnav.built.js"></script> <script type="text/javascript" src="/assets/scripts/localnav.js"></script> <main id="main" class="main theme-dark" role="main"> <section class="bg-dark"> <section class="grid"> <section class="row"> <section class="column large-10 small-12 padding-top-small large-centered no-padding-bottom"> <!-- back link --> <p class="back-link smaller"> <a class="icon icon-before icon-chevronleft" href="/videos/">More Videos</a> </p> </section> </section> <!-- video player --> <section class="video-wrapper row"> <section class="column large-10 small-12 padding-top-small padding-bottom-small large-centered"> <div class="developer-video-player"> <div id="video-status-overlay" class="developer-video-overlay" style="display: none"> <div class="video-status-content"> <div id="video-status-text"></div> <img class="video-status-icon" id="icon-backward" src="/assets/elements/icons/symbols/gobackward5.svg" style="display: none" /> <img class="video-status-icon" id="icon-forward" src="/assets/elements/icons/symbols/goforward5.svg" style="display: none" /> </div> </div> <video id="video" class="video large-centered" controls="" src="https://devstreaming-cdn.apple.com/videos/wwdc/2024/102/1/A8ECDDD9-F782-4267-B6E0-782B4D9ECB88/cmaf.m3u8" data-id="wwdc2024-102" data-locale="en"></video> </div> <div class="no-video-banner hidden"> <div class="no-video-copy"> <p>Streaming is available in most browsers,<br> and in the Developer app.</p> </div> </span> </div> </section> </section> </section> </section> <section class="grid"> <!-- tab menu --> <section class="tab-menu row divider-bottom"> <section class="column large-10 small-12 padding-top-small padding-bottom-small large-centered"> <ul class="tabs"> <li class="tab" data-supplement-id="details"><a href="#"><span class="smaller">Overview</span></a></li> <li class="tab" data-supplement-id="transcript"><a href="#"><span class="smaller">Transcript</span></a></li> <li class="tab right active" data-supplement-id="search"> <!-- mobile search --> <a href="#"><span><!--icon--></span></a> <!-- desktop search --> <section class="searchbar-wrapper desktop" style="opacity:0;"> <button class="search-icon"></button> <input id="searchDesktop" class="active" type="text" autocomplete="off" placeholder="Search this video…"> </section> </li> <section class="searchbar-wrapper mobile"> <input class="active" type="text" autocomplete="off" placeholder="Search this video…"> </section> </ul> </section> </section> <!-- supplements --> <section class="row"> <section class="column large-10 small-12 large-centered no-padding-top no-padding-bottom"> <ul class="supplements hidden"> <!-- details --> <li class="supplement details " data-supplement-id="details"> <h1>Platforms State of the Union</h1> <p>Discover the newest advancements on Apple platforms.</p> <h2>Chapters</h2> <ul class="no-bullet"> <li>0:00:21 - <a class="jump-to-time" href="/videos/play/wwdc2024/102/?time=21" data-start-time="21" data-chapter-end-time="95" data-chapter-lenght="74" data-chapter-index="1">Introduction</a></li> <li>0:01:35 - <a class="jump-to-time" href="/videos/play/wwdc2024/102/?time=95" data-start-time="95" data-chapter-end-time="554" data-chapter-lenght="459" data-chapter-index="2">Apple Intelligence</a></li> <li>0:09:14 - <a class="jump-to-time" href="/videos/play/wwdc2024/102/?time=554" data-start-time="554" data-chapter-end-time="1270" data-chapter-lenght="716" data-chapter-index="3">Generative Tools</a></li> <li>0:21:10 - <a class="jump-to-time" href="/videos/play/wwdc2024/102/?time=1270" data-start-time="1270" data-chapter-end-time="1438" data-chapter-lenght="168" data-chapter-index="4">Xcode</a></li> <li>0:23:58 - <a class="jump-to-time" href="/videos/play/wwdc2024/102/?time=1438" data-start-time="1438" data-chapter-end-time="1664" data-chapter-lenght="226" data-chapter-index="5">Swift Assist</a></li> <li>0:27:44 - <a class="jump-to-time" href="/videos/play/wwdc2024/102/?time=1664" data-start-time="1664" data-chapter-end-time="1981" data-chapter-lenght="317" data-chapter-index="6">Swift</a></li> <li>0:33:01 - <a class="jump-to-time" href="/videos/play/wwdc2024/102/?time=1981" data-start-time="1981" data-chapter-end-time="2123" data-chapter-lenght="142" data-chapter-index="7">Swift Testing</a></li> <li>0:35:23 - <a class="jump-to-time" href="/videos/play/wwdc2024/102/?time=2123" data-start-time="2123" data-chapter-end-time="2518" data-chapter-lenght="395" data-chapter-index="8">SwiftUI</a></li> <li>0:41:58 - <a class="jump-to-time" href="/videos/play/wwdc2024/102/?time=2518" data-start-time="2518" data-chapter-end-time="2657" data-chapter-lenght="139" data-chapter-index="9">RealityKit</a></li> <li>0:44:17 - <a class="jump-to-time" href="/videos/play/wwdc2024/102/?time=2657" data-start-time="2657" data-chapter-end-time="2844" data-chapter-lenght="187" data-chapter-index="10">iOS</a></li> <li>0:47:24 - <a class="jump-to-time" href="/videos/play/wwdc2024/102/?time=2844" data-start-time="2844" data-chapter-end-time="2970" data-chapter-lenght="126" data-chapter-index="11">iPadOS</a></li> <li>0:49:30 - <a class="jump-to-time" href="/videos/play/wwdc2024/102/?time=2970" data-start-time="2970" data-chapter-end-time="3131" data-chapter-lenght="161" data-chapter-index="12">watchOS</a></li> <li>0:52:11 - <a class="jump-to-time" href="/videos/play/wwdc2024/102/?time=3131" data-start-time="3131" data-chapter-end-time="3386" data-chapter-lenght="255" data-chapter-index="13">macOS</a></li> <li>0:56:26 - <a class="jump-to-time" href="/videos/play/wwdc2024/102/?time=3386" data-start-time="3386" data-chapter-end-time="3735" data-chapter-lenght="349" data-chapter-index="14">visionOS</a></li> <li>1:02:15 - <a class="jump-to-time" href="/videos/play/wwdc2024/102/?time=3735" data-start-time="3735" data-chapter-end-time="3863" data-chapter-lenght="128" data-chapter-index="15">Native Experiences</a></li> <li>1:04:23 - <a class="jump-to-time" href="/videos/play/wwdc2024/102/?time=3863" data-start-time="3863" data-chapter-end-time="3991" data-chapter-lenght="128" data-chapter-index="16">Conclusion</a></li> </ul> <h2>Resources</h2> <ul class="links small"> <li class="download"> <ul class="options"> <li><a href="https://devstreaming-cdn.apple.com/videos/wwdc/2024/102/1/A8ECDDD9-F782-4267-B6E0-782B4D9ECB88/downloads/wwdc2024-102_hd.mp4?dl=1">HD Video</a></li> <li><a href="https://devstreaming-cdn.apple.com/videos/wwdc/2024/102/1/A8ECDDD9-F782-4267-B6E0-782B4D9ECB88/downloads/wwdc2024-102_sd.mp4?dl=1">SD Video</a></li> </ul> </li> </ul> </li> <!-- transcript --> <li class="supplement transcript" data-supplement-id="transcript" data-shortcut-base-url="/videos/play/wwdc2024/102/"> <section> <div class="margin-bottom-small download-transcript"><span id="get-transcript" class="icon icon-before icon-downloadcircle">Download</span></div> <p><span class="sentence"><span data-start="0.0">♪ ♪ </span></span><span class="sentence"><span data-start="18.0">Susan Prescott: Welcome to the WWDC 24 Platforms State of the Union! </span></span><span class="sentence"><span data-start="23.0">WWDC is always an exciting time of year when we dig into the technical details </span></span><span class="sentence"><span data-start="28.0">of what we've been working on, share how it works, </span></span><span class="sentence"><span data-start="30.0">and help you understand what's possible in your apps and games. </span></span><span class="sentence"><span data-start="35.0">Before we get started, we want to take a moment </span></span><span class="sentence"><span data-start="37.0">to recognize your hard work and dedication-- </span></span><span class="sentence"><span data-start="40.0">you are the creators, designers, and developers </span></span><span class="sentence"><span data-start="44.0">of the amazing apps and games that people use every day </span></span><span class="sentence"><span data-start="48.0">to learn, play, work, and change the world. </span></span><span class="sentence"><span data-start="52.0">Thank you! </span></span><span class="sentence"><span data-start="53.0">We love connecting with you around the world </span></span><span class="sentence"><span data-start="56.0">at Apple Developer Centers, Developer Academies, </span></span><span class="sentence"><span data-start="59.0">and Apple Vision Pro labs </span></span><span class="sentence"><span data-start="61.0">where you created the first spatial computing apps and games! </span></span><span class="sentence"><span data-start="65.0">And the next generation of developers blew us away </span></span><span class="sentence"><span data-start="68.0">in the Swift Student Challenge with clever, creative playgrounds </span></span><span class="sentence"><span data-start="72.0">that tackled topics from social impact to security. </span></span><span class="sentence"><span data-start="77.0">We're continually amazed by your creativity, </span></span><span class="sentence"><span data-start="80.0">enthusiasm, and new ideas. </span></span><span class="sentence"><span data-start="82.0">Thank you for making this such an incredible and exciting ecosystem. </span></span><span class="sentence"><span data-start="87.0">Now, let's dive into the details of our biggest developer announcements, </span></span><span class="sentence"><span data-start="92.0">starting with Seb to tell you about Apple Intelligence.</p><p></span></span><span class="sentence"><span data-start="96.0">Sebastien Marineau-Mes: This is going to be an incredible year for developers. </span></span><span class="sentence"><span data-start="100.0">There are so many innovations happening right now with Generative AI, </span></span><span class="sentence"><span data-start="103.0">and today marks the beginning of an exciting chapter </span></span><span class="sentence"><span data-start="106.0">with Apple Intelligence. </span></span><span class="sentence"><span data-start="109.0">Apple Intelligence is the personal intelligence system, </span></span><span class="sentence"><span data-start="112.0">bringing powerful generative models to our platforms. </span></span><span class="sentence"><span data-start="115.0">iOS, iPadOS, and macOS get powerful new capabilities </span></span><span class="sentence"><span data-start="120.0">for understanding and generating language and images, </span></span><span class="sentence"><span data-start="122.0">and helping users take actions, all with rich awareness </span></span><span class="sentence"><span data-start="126.0">of users' personal context. </span></span><span class="sentence"><span data-start="128.0">It's deeply integrated into features and apps across the system, </span></span><span class="sentence"><span data-start="132.0">and built with privacy from the ground up. </span></span><span class="sentence"><span data-start="136.0">Before we get into all of the new ways that you can integrate </span></span><span class="sentence"><span data-start="138.0">with the new features and bring them into your apps, </span></span><span class="sentence"><span data-start="141.0">let's take a look behind the scenes at how Apple Intelligence was developed. </span></span><span class="sentence"><span data-start="146.0">For years, our platforms have been at the forefront of running </span></span><span class="sentence"><span data-start="149.0">machine learning tasks on-device, </span></span><span class="sentence"><span data-start="151.0">taking full advantage of the power of Apple silicon. </span></span><span class="sentence"><span data-start="154.0">We want to run as much as we can on-device </span></span><span class="sentence"><span data-start="157.0">because it delivers low latency and a better user experience. </span></span><span class="sentence"><span data-start="160.0">And, of course, it helps keep users' personal data and activity private. </span></span><span class="sentence"><span data-start="165.0">New generative AI models are incredibly exciting and powerful, </span></span><span class="sentence"><span data-start="169.0">and they are really pushing the limits of what can be run locally. </span></span><span class="sentence"><span data-start="174.0">Apple Intelligence starts with our on-device foundation model, </span></span><span class="sentence"><span data-start="177.0">a highly capable Large Language Model. </span></span><span class="sentence"><span data-start="180.0">We were looking for the sweet spot: powerful enough </span></span><span class="sentence"><span data-start="183.0">for experiences that we wanted, and yet small enough to run on a device. </span></span><span class="sentence"><span data-start="189.0">Starting from that foundation model, there were three key challenges </span></span><span class="sentence"><span data-start="193.0">we needed to solve: specializing it to be great </span></span><span class="sentence"><span data-start="196.0">for the many tasks and features that we wanted to run, </span></span><span class="sentence"><span data-start="199.0">making it small enough to fit on devices like an iPhone, </span></span><span class="sentence"><span data-start="203.0">and delivering the best possible inference performance </span></span><span class="sentence"><span data-start="206.0">and energy efficiency. </span></span><span class="sentence"><span data-start="208.0">The first technique we used is fine-tuning. </span></span><span class="sentence"><span data-start="211.0">This involves running different training passes on our model, </span></span><span class="sentence"><span data-start="215.0">each teaching it to be great for a given task, </span></span><span class="sentence"><span data-start="217.0">such as text summarization, proofreading, or generating mail replies. </span></span><span class="sentence"><span data-start="222.0">This process results in a set of distinct models, </span></span><span class="sentence"><span data-start="225.0">that are each trained to be great at one thing </span></span><span class="sentence"><span data-start="227.0">but not quite as good at the others. </span></span><span class="sentence"><span data-start="229.0">A more efficient approach to fine-tuning leverages a new technique called adapters. </span></span><span class="sentence"><span data-start="235.0">Adapters are small a collection of model weights that are overlaid </span></span><span class="sentence"><span data-start="239.0">onto the common base foundation model. </span></span><span class="sentence"><span data-start="241.0">They can be dynamically loaded and swapped, </span></span><span class="sentence"><span data-start="243.0">giving the foundation model </span></span><span class="sentence"><span data-start="245.0">the ability to specialize itself on-the-fly for the task at hand. </span></span><span class="sentence"><span data-start="249.0">Apple Intelligence includes a broad set of adapters, </span></span><span class="sentence"><span data-start="253.0">each fine-tuned for a specific feature. </span></span><span class="sentence"><span data-start="255.0">It's an efficient way to scale the capabilities of our foundation model. </span></span><span class="sentence"><span data-start="260.0">The next step we took is compressing the model. </span></span><span class="sentence"><span data-start="263.0">We leveraged state-of-the-art quantization techniques </span></span><span class="sentence"><span data-start="266.0">to take a 16-bit per parameter model </span></span><span class="sentence"><span data-start="268.0">down to an average of less than 4 bits per parameter </span></span><span class="sentence"><span data-start="271.0">to fit on Apple Intelligence-supported devices, </span></span><span class="sentence"><span data-start="274.0">all while maintaining model quality. </span></span><span class="sentence"><span data-start="276.0">Lastly, we focused on inference performance and efficiency, </span></span><span class="sentence"><span data-start="280.0">optimizing models to get the shortest time </span></span><span class="sentence"><span data-start="283.0">to process a prompt and produce a response. </span></span><span class="sentence"><span data-start="286.0">We adopted a range of technologies, such as speculative decoding, </span></span><span class="sentence"><span data-start="290.0">context pruning, and group query attention, </span></span><span class="sentence"><span data-start="293.0">all tuned to get the most out of the Neural Engine. </span></span><span class="sentence"><span data-start="296.0">We also applied a similar process for a diffusion model </span></span><span class="sentence"><span data-start="300.0">that generates images, </span></span><span class="sentence"><span data-start="302.0">using adapters for different styles and Genmoji. </span></span><span class="sentence"><span data-start="304.0">This is Apple Intelligence on-device: </span></span><span class="sentence"><span data-start="307.0">powerful, intuitive, and integrated language and diffusion models </span></span><span class="sentence"><span data-start="311.0">that deliver great performance and run on a device </span></span><span class="sentence"><span data-start="315.0">small enough to fit in your hand. </span></span><span class="sentence"><span data-start="317.0">Still, there are some more advanced features </span></span><span class="sentence"><span data-start="319.0">that require larger models to reason over more complex data. </span></span><span class="sentence"><span data-start="323.0">So we've extended Apple Intelligence to the cloud with Private Cloud Compute </span></span><span class="sentence"><span data-start="328.0">to run those larger foundation models. </span></span><span class="sentence"><span data-start="331.0">Because these models process users' personal information, </span></span><span class="sentence"><span data-start="334.0">we needed to rethink Cloud Compute </span></span><span class="sentence"><span data-start="336.0">and extend the privacy approach of our devices to servers. </span></span><span class="sentence"><span data-start="341.0">Private Cloud Compute is designed specifically for processing AI, privately. </span></span><span class="sentence"><span data-start="346.0">It runs on a new OS using a hardened subset of the foundations of iOS, </span></span><span class="sentence"><span data-start="350.0">based on our industry leading operating system security work. </span></span><span class="sentence"><span data-start="354.0">To mitigate entire classes of privacy risks, </span></span><span class="sentence"><span data-start="357.0">we have omitted features that are not strictly necessary </span></span><span class="sentence"><span data-start="360.0">in a dedicated AI server, such as persistent data storage. </span></span><span class="sentence"><span data-start="363.0">On top of this secure foundation, we have completely replaced </span></span><span class="sentence"><span data-start="367.0">the tools normally used to manage servers. </span></span><span class="sentence"><span data-start="370.0">Our tooling is designed to prevent privileged access, </span></span><span class="sentence"><span data-start="373.0">such as via remote shell, that could allow access to user data. </span></span><span class="sentence"><span data-start="378.0">And finally, Private Cloud Compute includes a full machine learning stack </span></span><span class="sentence"><span data-start="382.0">that powers intelligence. </span></span><span class="sentence"><span data-start="383.0">The result is an unprecedented cloud security foundation </span></span><span class="sentence"><span data-start="387.0">based on Apple Silicon. </span></span><span class="sentence"><span data-start="389.0">It starts with the Secure Enclave to protect critical encryption keys. </span></span><span class="sentence"><span data-start="393.0">Secure Boot ensures the OS is signed and verified just like on iOS, </span></span><span class="sentence"><span data-start="398.0">Trusted Execution Monitor makes sure that only signed and verified code runs. </span></span><span class="sentence"><span data-start="403.0">And attestation enables a user's device to securely verify the identity </span></span><span class="sentence"><span data-start="408.0">and configuration of a Private Cloud Compute cluster </span></span><span class="sentence"><span data-start="411.0">before ever sending a request. </span></span><span class="sentence"><span data-start="413.0">For each request, a user's device establishes </span></span><span class="sentence"><span data-start="417.0">an end-to-end encrypted connection with a Private Cloud Compute cluster. </span></span><span class="sentence"><span data-start="421.0">Only the chosen cluster can decrypt the request data, </span></span><span class="sentence"><span data-start="424.0">which is not retained after the response is returned </span></span><span class="sentence"><span data-start="427.0">and is never accessible to Apple. </span></span><span class="sentence"><span data-start="430.0">But we're going even further: </span></span><span class="sentence"><span data-start="431.0">we're committing to making virtual images </span></span><span class="sentence"><span data-start="434.0">of every production build of Private Cloud Compute </span></span><span class="sentence"><span data-start="436.0">publicly available for inspection by security researchers, </span></span><span class="sentence"><span data-start="440.0">so they can verify the promises that we're making, </span></span><span class="sentence"><span data-start="442.0">and findings will be rewarded through the Apple Security Bounty. </span></span><span class="sentence"><span data-start="446.0">Second, we're making sure a user's device will only communicate </span></span><span class="sentence"><span data-start="450.0">with Private Cloud Compute clusters that are running a signed build </span></span><span class="sentence"><span data-start="452.0">that has been publicly logged for inspection. </span></span><span class="sentence"><span data-start="455.0">This is verified with the strong cryptographic </span></span><span class="sentence"><span data-start="457.0">attestation mechanisms in Apple silicon. </span></span><span class="sentence"><span data-start="460.0">We believe this is the most advanced security architecture </span></span><span class="sentence"><span data-start="464.0">ever deployed for cloud AI compute at scale. </span></span><span class="sentence"><span data-start="467.0">Apple Intelligence is the personal intelligence system </span></span><span class="sentence"><span data-start="471.0">that brings this all together. </span></span><span class="sentence"><span data-start="472.0">It includes an on-device semantic index </span></span><span class="sentence"><span data-start="475.0">that can organize personal information from across apps </span></span><span class="sentence"><span data-start="478.0">as well as an App Intents Toolbox that can understand capabilities of apps </span></span><span class="sentence"><span data-start="482.0">and tap into them on a user's behalf. </span></span><span class="sentence"><span data-start="485.0">When a user makes a request, </span></span><span class="sentence"><span data-start="486.0">Apple Intelligence orchestrates how it's handled </span></span><span class="sentence"><span data-start="489.0">either through its on-device intelligence stack </span></span><span class="sentence"><span data-start="492.0">or using Private Cloud Compute. </span></span><span class="sentence"><span data-start="494.0">And it draws on its semantic index </span></span><span class="sentence"><span data-start="497.0">to ground each request in the relevant personal context </span></span><span class="sentence"><span data-start="500.0">and uses its App Intents Toolbox to take actions for the user. </span></span><span class="sentence"><span data-start="505.0">It's specialized to be absolutely great at the features it enables. </span></span><span class="sentence"><span data-start="509.0">It's built with the best possible performance and energy efficiency, </span></span><span class="sentence"><span data-start="513.0">and of course, it's designed around privacy and security from the ground up. </span></span><span class="sentence"><span data-start="518.0">And that's Apple Intelligence. </span></span><span class="sentence"><span data-start="521.0">We have new APIs to bring these features into your apps, </span></span><span class="sentence"><span data-start="524.0">and new ways for your apps to expose their capabilities </span></span><span class="sentence"><span data-start="527.0">to Apple Intelligence for deeper integration </span></span><span class="sentence"><span data-start="530.0">into system experiences. </span></span><span class="sentence"><span data-start="532.0">Let's start with our language and image features: </span></span><span class="sentence"><span data-start="535.0">Writing Tools, Genmoji, and Image Playground. </span></span><span class="sentence"><span data-start="539.0">Here's Leslie to tell you more. </span></span><span class="sentence"><span data-start="542.0">Leslie Ikemoto: Our system-wide Writing Tools </span></span><span class="sentence"><span data-start="544.0">use the models Seb just talked about, </span></span><span class="sentence"><span data-start="546.0">to help users rewrite, proofread, and summarize text. </span></span><span class="sentence"><span data-start="550.0">If you're using any of the standard UI frameworks to render text fields, </span></span><span class="sentence"><span data-start="554.0">your app will automatically get Writing Tools! </span></span><span class="sentence"><span data-start="557.0">And using our new TextView delegate API, you can customize how you want </span></span><span class="sentence"><span data-start="561.0">your app to behave while Writing Tools is active, </span></span><span class="sentence"><span data-start="564.0">for example, by pausing syncing </span></span><span class="sentence"><span data-start="566.0">to avoid conflicts while Apple Intelligence is processing text. </span></span><span class="sentence"><span data-start="571.0">So for an app like Weebly, </span></span><span class="sentence"><span data-start="573.0">Writing Tools can help a small business owner </span></span><span class="sentence"><span data-start="575.0">find just the right words for their new website! </span></span><span class="sentence"><span data-start="578.0">And when it comes to images, </span></span><span class="sentence"><span data-start="580.0">Genmoji opens up entirely new ways to communicate, </span></span><span class="sentence"><span data-start="583.0">letting users create a new emoji to match any moment. </span></span><span class="sentence"><span data-start="587.0">If you're already using our standard text systems </span></span><span class="sentence"><span data-start="590.0">with inline images, you're in great shape! </span></span><span class="sentence"><span data-start="593.0">All you need to do is set just one property, </span></span><span class="sentence"><span data-start="595.0">and now your text views accept Genmoji from the keyboard. </span></span><span class="sentence"><span data-start="599.0">Under the hood, Genmoji are handled differently from emoji. </span></span><span class="sentence"><span data-start="602.0">While emoji are just text, </span></span><span class="sentence"><span data-start="604.0">Genmoji are handled using AttributedString, </span></span><span class="sentence"><span data-start="607.0">which is a data type that's been with us for many years, </span></span><span class="sentence"><span data-start="610.0">for representing rich text with graphics. </span></span><span class="sentence"><span data-start="613.0">Apple Intelligence also delivers amazing new systemwide capabilities </span></span><span class="sentence"><span data-start="617.0">for creating fun, original images across apps. </span></span><span class="sentence"><span data-start="621.0">The new Image Playground API </span></span><span class="sentence"><span data-start="623.0">delivers a consistent, playful, and easy-to-use experience. </span></span><span class="sentence"><span data-start="628.0">When you adopt it, you'll get access to the same experience </span></span><span class="sentence"><span data-start="631.0">that users are familiar with from Messages, Keynote, </span></span><span class="sentence"><span data-start="634.0">and the new Image Playground app. </span></span><span class="sentence"><span data-start="637.0">And since the images are created on the user's device, </span></span><span class="sentence"><span data-start="640.0">they have the power to experiment and create as many images as they want. </span></span><span class="sentence"><span data-start="645.0">And you don't have to worry about setting up or paying for your own </span></span><span class="sentence"><span data-start="648.0">text-to-image models or servers </span></span><span class="sentence"><span data-start="650.0">to deliver this experience in your own apps. </span></span><span class="sentence"><span data-start="653.0">Let's take a look at how easy it is to get started.</p><p></span></span><span class="sentence"><span data-start="658.0">Here I am in Xcode, </span></span><span class="sentence"><span data-start="660.0">working on an app called Destination Video. </span></span><span class="sentence"><span data-start="662.0">I want to use the new Image Playground API </span></span><span class="sentence"><span data-start="665.0">to let users add fun avatar pictures to their user profiles. </span></span><span class="sentence"><span data-start="670.0">I'm going to do that by adding a quick bit of SwiftUI code </span></span><span class="sentence"><span data-start="673.0">to my profile button to set up the Image Playground sheet. </span></span><span class="sentence"><span data-start="677.0">Now I'm going to add some code to store the new image. </span></span><span class="sentence"><span data-start="681.0">And finally, I'm going to add a text description </span></span><span class="sentence"><span data-start="683.0">to give users a default avatar to work with. </span></span><span class="sentence"><span data-start="686.0">Now let's tap build and run, and take a look at what we've got </span></span><span class="sentence"><span data-start="690.0">over here on my iPad. </span></span><span class="sentence"><span data-start="691.0">Here's my profile button. </span></span><span class="sentence"><span data-start="694.0">Now when I tap on it, the Image Playground view pops up, </span></span><span class="sentence"><span data-start="697.0">and just like that, I get a whimsical avatar </span></span><span class="sentence"><span data-start="700.0">I can use for my profile. </span></span><span class="sentence"><span data-start="703.0">And users can tap on the bubbles, or edit the prompt we supplied them, </span></span><span class="sentence"><span data-start="706.0">to create anything they want.</p><p></span></span><span class="sentence"><span data-start="710.0">Writing Tools, Genmoji, and Image Playground </span></span><span class="sentence"><span data-start="713.0">are three powerful new Apple Intelligence features, </span></span><span class="sentence"><span data-start="717.0">and you'll delight your users by integrating these into your apps. </span></span><span class="sentence"><span data-start="721.0">There's another way to bring Apple Intelligence into your app: </span></span><span class="sentence"><span data-start="725.0">Siri! </span></span><span class="sentence"><span data-start="726.0">This year, with Apple Intelligence, Siri will be able to take </span></span><span class="sentence"><span data-start="730.0">hundreds of new actions in and across apps, </span></span><span class="sentence"><span data-start="733.0">including some that leverage the new writing and image generation capabilities </span></span><span class="sentence"><span data-start="737.0">we just talked about. </span></span><span class="sentence"><span data-start="739.0">This is made possible through significant enhancements </span></span><span class="sentence"><span data-start="742.0">we're making to App Intents. </span></span><span class="sentence"><span data-start="744.0">App Intents is a framework that lets you define a set of actions for Siri, </span></span><span class="sentence"><span data-start="748.0">Shortcuts, and other system experiences, </span></span><span class="sentence"><span data-start="750.0">and now, App Intents are a powerful way </span></span><span class="sentence"><span data-start="753.0">for your app to tap into Apple Intelligence. </span></span><span class="sentence"><span data-start="756.0">We're starting with support for these domains, </span></span><span class="sentence"><span data-start="759.0">and over time, we'll add even more. </span></span><span class="sentence"><span data-start="762.0">And if you have an app that fits in an existing SiriKit domain, </span></span><span class="sentence"><span data-start="765.0">it can also benefit from Siri's enhanced conversational capabilities, </span></span><span class="sentence"><span data-start="770.0">like responding correctly even if you stumble over your words, </span></span><span class="sentence"><span data-start="773.0">and understanding references to earlier parts of a conversation. </span></span><span class="sentence"><span data-start="777.0">There are also two new Siri capabilities </span></span><span class="sentence"><span data-start="780.0">that apps can benefit from with no additional work. </span></span><span class="sentence"><span data-start="784.0">First, Siri will be able to invoke any item from your app's menus. </span></span><span class="sentence"><span data-start="788.0">So when a user who's reviewing a slide deck says, "Show presenter notes," </span></span><span class="sentence"><span data-start="793.0">or perhaps more conversationally says, "I need to see my speaker notes," </span></span><span class="sentence"><span data-start="797.0">Siri will know just what to do. </span></span><span class="sentence"><span data-start="801.0">Second, Siri will be able to access text </span></span><span class="sentence"><span data-start="803.0">displayed in any app that uses our standard text systems. </span></span><span class="sentence"><span data-start="807.0">This will allow users to directly reference </span></span><span class="sentence"><span data-start="810.0">and act on text visible on screen. </span></span><span class="sentence"><span data-start="812.0">So when a user is looking at a reminder to wish Grandpa a happy birthday, </span></span><span class="sentence"><span data-start="816.0">they can just say, "FaceTime him." </span></span><span class="sentence"><span data-start="821.0">So that's taking action through Siri. </span></span><span class="sentence"><span data-start="823.0">Now let's talk about how Apple Intelligence </span></span><span class="sentence"><span data-start="826.0">equips Siri with personal context understanding. </span></span><span class="sentence"><span data-start="829.0">Apple Intelligence can now access a semantic index of things like photos, </span></span><span class="sentence"><span data-start="834.0">messages, files, calendar events, and much more, </span></span><span class="sentence"><span data-start="837.0">to help it find and understand things it never could before. </span></span><span class="sentence"><span data-start="842.0">Siri will now also be able to search data from your app, </span></span><span class="sentence"><span data-start="845.0">with a new Spotlight API that enables App Entities to be included in its index. </span></span><span class="sentence"><span data-start="850.0">And when App Intents and App Entities come together, </span></span><span class="sentence"><span data-start="854.0">they unlock new ways for your users to connect content </span></span><span class="sentence"><span data-start="857.0">from across the system to the actions supported by your app. </span></span><span class="sentence"><span data-start="861.0">For example, a user can bring a summary from a note </span></span><span class="sentence"><span data-start="865.0">they just took in the Notes app </span></span><span class="sentence"><span data-start="867.0">into an email they've drafted in Superhuman. </span></span><span class="sentence"><span data-start="870.0">With the drafted email defined as an app entity for the index, </span></span><span class="sentence"><span data-start="873.0">the user can refer to it conversationally. </span></span><span class="sentence"><span data-start="877.0">And Siri can bring content from their note </span></span><span class="sentence"><span data-start="879.0">right to where the user wants it in the Superhuman app. </span></span><span class="sentence"><span data-start="883.0">Whether you build new App Intents and App Entities, </span></span><span class="sentence"><span data-start="886.0">or have existing SiriKit integrations, Apple Intelligence will enable Siri </span></span><span class="sentence"><span data-start="891.0">to expose much deeper and more natural access </span></span><span class="sentence"><span data-start="894.0">to your app's data and capabilities than ever before. </span></span><span class="sentence"><span data-start="897.0">Exposing your app's capability using App Intents </span></span><span class="sentence"><span data-start="901.0">is the key to this integration, and you can start working on it today. </span></span><span class="sentence"><span data-start="906.0">Users will be able to use your App Intents with the Shortcuts app immediately, </span></span><span class="sentence"><span data-start="911.0">and over time, Siri will gain the ability </span></span><span class="sentence"><span data-start="913.0">to call the App Intents that fall into supported domains. </span></span><span class="sentence"><span data-start="917.0">App intent schemas for two domains are available now, </span></span><span class="sentence"><span data-start="921.0">with more coming later this year. </span></span><span class="sentence"><span data-start="924.0">And in software updates, we'll be rolling out the in-app actions </span></span><span class="sentence"><span data-start="927.0">and personal context understanding you just heard about. </span></span><span class="sentence"><span data-start="932.0">Back to Seb. </span></span><span class="sentence"><span data-start="933.0">Seb: So that's our language and image features, </span></span><span class="sentence"><span data-start="936.0">as well as the new Siri, all powered by Apple Intelligence. </span></span><span class="sentence"><span data-start="940.0">And if you're running your own models and looking for lower-level access </span></span><span class="sentence"><span data-start="943.0">to the stack to take advantage of AI-accelerated hardware, </span></span><span class="sentence"><span data-start="947.0">there are many more ways to use machine learning </span></span><span class="sentence"><span data-start="949.0">and AI on-device within your app. </span></span><span class="sentence"><span data-start="952.0">Here's Manasi to tell you more. </span></span><span class="sentence"><span data-start="955.0">Manasi Joshi: Our built-in machine learning frameworks </span></span><span class="sentence"><span data-start="957.0">offer intelligence capabilities across a number of categories. </span></span><span class="sentence"><span data-start="961.0">These include APIs for natural language processing, </span></span><span class="sentence"><span data-start="965.0">sound analysis, speech understanding, and vision intelligence. </span></span><span class="sentence"><span data-start="970.0">The Vision framework is getting a whole new Swift API this year. </span></span><span class="sentence"><span data-start="974.0">There are so many capabilities you can tap into across these frameworks. </span></span><span class="sentence"><span data-start="979.0">And you can extend them by using Create ML </span></span><span class="sentence"><span data-start="982.0">to bring in additional data for training. </span></span><span class="sentence"><span data-start="985.0">For example, if you have a unique data set of images, </span></span><span class="sentence"><span data-start="990.0">you can augment our image models with your data </span></span><span class="sentence"><span data-start="993.0">to improve classification and object detection. </span></span><span class="sentence"><span data-start="997.0">And beyond our frameworks, you can also import and run on-device AI models, </span></span><span class="sentence"><span data-start="1003.0">such as large language or diffusion models developed and trained elsewhere. </span></span><span class="sentence"><span data-start="1009.0">You can run a wide array of models across our devices </span></span><span class="sentence"><span data-start="1013.0">including Whisper, Stable Diffusion, and Mistral. </span></span><span class="sentence"><span data-start="1017.0">It just takes a couple steps to get a model ready to run in your app. </span></span><span class="sentence"><span data-start="1023.0">You can start with any PyTorch model. </span></span><span class="sentence"><span data-start="1027.0">You then use Core ML Tools and convert it into the Core ML format. </span></span><span class="sentence"><span data-start="1032.0">Core ML Tools offer you a number of ways to optimize your model, </span></span><span class="sentence"><span data-start="1036.0">leveraging many of the techniques used in Apple Intelligence, </span></span><span class="sentence"><span data-start="1040.0">such as quantization and efficient key value caching in LLMs. </span></span><span class="sentence"><span data-start="1046.0">You then run your model within your app using the Core ML framework. </span></span><span class="sentence"><span data-start="1051.0">Core ML optimizes hardware-accelerated execution </span></span><span class="sentence"><span data-start="1056.0">across the CPU, GPU, and Neural Engine </span></span><span class="sentence"><span data-start="1060.0">and includes a number of new tools </span></span><span class="sentence"><span data-start="1062.0">for you to further optimize performance of your model. </span></span><span class="sentence"><span data-start="1065.0">Core ML is the most commonly used framework for running AI models </span></span><span class="sentence"><span data-start="1070.0">as part of apps on iOS, iPadOS, and macOS. </span></span><span class="sentence"><span data-start="1076.0">When your app has heavy workloads for non-machine learning tasks, </span></span><span class="sentence"><span data-start="1080.0">you may want more control over when machine learning tasks are executed </span></span><span class="sentence"><span data-start="1084.0">to manage overall performance. </span></span><span class="sentence"><span data-start="1087.0">For example, if your app has significant graphics workloads, </span></span><span class="sentence"><span data-start="1091.0">Metal provides you ways to sequence </span></span><span class="sentence"><span data-start="1094.0">your machine learning tasks with those other workloads </span></span><span class="sentence"><span data-start="1097.0">using Metal Performance Shaders </span></span><span class="sentence"><span data-start="1100.0">so you can get the best GPU performance. </span></span><span class="sentence"><span data-start="1104.0">And if you are running real-time signal processing on the CPU, </span></span><span class="sentence"><span data-start="1109.0">the Accelerate framework includes BNNS Graph </span></span><span class="sentence"><span data-start="1113.0">for your machine learning tasks to maintain stricter control </span></span><span class="sentence"><span data-start="1117.0">over latency and memory management. </span></span><span class="sentence"><span data-start="1120.0">Now, let's show you this in action </span></span><span class="sentence"><span data-start="1123.0">and see how new optimizations can boost model execution. </span></span><span class="sentence"><span data-start="1127.0">We are using the Mistral 7B parameter model </span></span><span class="sentence"><span data-start="1131.0">from Mistral's Hugging Face Space. </span></span><span class="sentence"><span data-start="1134.0">It's been converted into the Core ML Format, </span></span><span class="sentence"><span data-start="1137.0">and is running in a test-app built using the Swift Transformers package. </span></span><span class="sentence"><span data-start="1142.0">On macOS Sonoma, this is running as a 16-bit model. </span></span><span class="sentence"><span data-start="1147.0">For macOS Sequoia, we've applied the latest 4-bit quantization </span></span><span class="sentence"><span data-start="1151.0">and stateful KV cache techniques in Core ML. </span></span><span class="sentence"><span data-start="1155.0">We've given the model a simple question: </span></span><span class="sentence"><span data-start="1157.0">what is ML model quantization in three sentences? </span></span><span class="sentence"><span data-start="1161.0">You can see that with these optimizations, the model can produce a response </span></span><span class="sentence"><span data-start="1166.0">over 5 times faster with almost 9 times peak memory savings. </span></span><span class="sentence"><span data-start="1170.0">Quantization is a powerful technique but can affect the output quality, </span></span><span class="sentence"><span data-start="1176.0">so we recommend additional testing and tuning afterwards. </span></span><span class="sentence"><span data-start="1179.0">For those of you experimenting with the latest advancements </span></span><span class="sentence"><span data-start="1183.0">including training models, there is no better place to do this than the Mac! </span></span><span class="sentence"><span data-start="1189.0">Whether you are using PyTorch, TensorFlow, JAX, or MLX, </span></span><span class="sentence"><span data-start="1194.0">you can take full advantage of Apple silicon's hardware acceleration </span></span><span class="sentence"><span data-start="1198.0">and unified memory when you're training models. </span></span><span class="sentence"><span data-start="1202.0">Our work on machine learning and AI is a collaborative effort. </span></span><span class="sentence"><span data-start="1206.0">We are partnering with others in the research community </span></span><span class="sentence"><span data-start="1209.0">to advance the state of the art together, </span></span><span class="sentence"><span data-start="1212.0">and you can find the resulting research online. </span></span><span class="sentence"><span data-start="1215.0">We've published hundreds of papers with novel approaches to AI models </span></span><span class="sentence"><span data-start="1219.0">and on-device optimizations, with many including sample code and data sets. </span></span><span class="sentence"><span data-start="1224.0">And we have shared many of the tools we use for research as open source. </span></span><span class="sentence"><span data-start="1229.0">There are so many ways for you to tap into on-device AI with Apple platforms. </span></span><span class="sentence"><span data-start="1235.0">And with machine learning technology advancing rapidly, </span></span><span class="sentence"><span data-start="1238.0">Apple continues to push on cutting-edge research in this space. </span></span><span class="sentence"><span data-start="1242.0">Now back to Seb. </span></span><span class="sentence"><span data-start="1244.0">Seb: This is the beginning of a journey. </span></span><span class="sentence"><span data-start="1247.0">Apple Intelligence truly is powerful intelligence </span></span><span class="sentence"><span data-start="1251.0">for your most personal devices. </span></span><span class="sentence"><span data-start="1252.0">We'll continue to bring generative intelligence into the core </span></span><span class="sentence"><span data-start="1255.0">of Apple platforms and expose new capabilities </span></span><span class="sentence"><span data-start="1258.0">to integrate into your apps. </span></span><span class="sentence"><span data-start="1260.0">Generative Intelligence is also transforming the way </span></span><span class="sentence"><span data-start="1263.0">that we all write code, and we're adding some amazing </span></span><span class="sentence"><span data-start="1266.0">new intelligence capabilities to our developer tools. </span></span><span class="sentence"><span data-start="1270.0">Here's Ken to tell you more.</p><p></span></span><span class="sentence"><span data-start="1273.0">Ken Orr: Every day, millions of developers around the world use Xcode </span></span><span class="sentence"><span data-start="1277.0">to bring their ideas to life on all Apple platforms. </span></span><span class="sentence"><span data-start="1280.0">Xcode helps you write great Swift code </span></span><span class="sentence"><span data-start="1282.0">and create stunning experiences with SwiftUI, </span></span><span class="sentence"><span data-start="1285.0">rapidly experiment in Simulators for Apple devices and OSes, </span></span><span class="sentence"><span data-start="1289.0">get detailed performance insight using Instruments, </span></span><span class="sentence"><span data-start="1292.0">and test and distribute to all your users with Xcode Cloud. </span></span><span class="sentence"><span data-start="1296.0">All of this works together seamlessly so you can stay focused, </span></span><span class="sentence"><span data-start="1300.0">work fast, and unleash your creativity. </span></span><span class="sentence"><span data-start="1303.0">Xcode 16 begins a whole new chapter for development, </span></span><span class="sentence"><span data-start="1307.0">as we infuse our tools with the power of Generative Models. </span></span><span class="sentence"><span data-start="1310.0">Building on Apple's Foundation model, we've created specialized coding models </span></span><span class="sentence"><span data-start="1314.0">that capture expertise only Apple can provide, </span></span><span class="sentence"><span data-start="1318.0">like the latest APIs, language features, documentation, and sample code, </span></span><span class="sentence"><span data-start="1322.0">and best practices distilled from decades </span></span><span class="sentence"><span data-start="1325.0">of building software for all our platforms. </span></span><span class="sentence"><span data-start="1328.0">It starts with a major leap forward in a core feature that you use every day, </span></span><span class="sentence"><span data-start="1332.0">code completion, with an innovative new engine </span></span><span class="sentence"><span data-start="1336.0">that can predict the code you need. </span></span><span class="sentence"><span data-start="1338.0">The engine is powered by a unique model </span></span><span class="sentence"><span data-start="1340.0">specifically trained for Swift and Apple SDKs. </span></span><span class="sentence"><span data-start="1343.0">It uses your project symbols to customize suggestions. </span></span><span class="sentence"><span data-start="1346.0">And it runs locally on your Mac, keeping your code private, </span></span><span class="sentence"><span data-start="1350.0">giving you super-fast results, and even works when you're offline. </span></span><span class="sentence"><span data-start="1354.0">Let's take a look. </span></span><span class="sentence"><span data-start="1356.0">I'm working on an app that features fun videos from around the world. </span></span><span class="sentence"><span data-start="1360.0">Next on my to-do list is adding code to represent a collection of videos. </span></span><span class="sentence"><span data-start="1363.0">I want a name for the collection. </span></span><span class="sentence"><span data-start="1366.0">As soon as I start typing, I get a great suggestion. </span></span><span class="sentence"><span data-start="1368.0">I'll press tab to accept that. </span></span><span class="sentence"><span data-start="1371.0">I also want a property to hold an array of videos. </span></span><span class="sentence"><span data-start="1373.0">Again, Xcode finishes the line using a type from my own project. </span></span><span class="sentence"><span data-start="1377.0">Next, I want a function that returns a sorted list of videos. </span></span><span class="sentence"><span data-start="1381.0">I'll start typing the name, and I get a suggestion for a function </span></span><span class="sentence"><span data-start="1385.0">that returns an array of videos sorted by release date. </span></span><span class="sentence"><span data-start="1388.0">As soon as I accept it, I get a suggested implementation, too. </span></span><span class="sentence"><span data-start="1392.0">In addition to code in my project, </span></span><span class="sentence"><span data-start="1394.0">Xcode can use the comments I write as context. </span></span><span class="sentence"><span data-start="1397.0">I'll add a comment for a function that will return </span></span><span class="sentence"><span data-start="1400.0">a list of videos for a given director. </span></span><span class="sentence"><span data-start="1402.0">And with just a couple characters, </span></span><span class="sentence"><span data-start="1404.0">I get a suggestion for exactly what I had in mind. </span></span><span class="sentence"><span data-start="1407.0">Next, I'll add the start of a function to get a cached thumbnail for a video. </span></span><span class="sentence"><span data-start="1412.0">As I'm typing and pick one of the suggestions, </span></span><span class="sentence"><span data-start="1415.0">I now get all the parameters filled out for my selection. </span></span><span class="sentence"><span data-start="1418.0">Finally, I'll add the body for my view. </span></span><span class="sentence"><span data-start="1422.0">I can hold Option to see multiple lines of predicted code, </span></span><span class="sentence"><span data-start="1425.0">and then press tab to accept them all. </span></span><span class="sentence"><span data-start="1427.0">Xcode's completion model is powered by Apple silicon </span></span><span class="sentence"><span data-start="1431.0">and machine learning enhancements in macOS Sequoia. </span></span><span class="sentence"><span data-start="1433.0">And Xcode automatically downloads and updates the model </span></span><span class="sentence"><span data-start="1436.0">with the latest SDK and language changes. </span></span><span class="sentence"><span data-start="1439.0">Building an app is more than just typing code. </span></span><span class="sentence"><span data-start="1443.0">It's about transforming entire ideas into code. </span></span><span class="sentence"><span data-start="1446.0">And the easiest way to do that is with natural language. </span></span><span class="sentence"><span data-start="1450.0">So we created a larger and more powerful model </span></span><span class="sentence"><span data-start="1453.0">that runs in the cloud. </span></span><span class="sentence"><span data-start="1455.0">And crafted a unique experience in Xcode that only Apple could deliver. </span></span><span class="sentence"><span data-start="1460.0">Introducing Swift Assist, a companion for all your coding tasks. </span></span><span class="sentence"><span data-start="1465.0">And whether you know exactly what you're after, </span></span><span class="sentence"><span data-start="1468.0">or want help writing the best Swift code, </span></span><span class="sentence"><span data-start="1471.0">Swift Assist can answer your coding questions </span></span><span class="sentence"><span data-start="1474.0">and help with tasks like experimenting with new APIs. </span></span><span class="sentence"><span data-start="1478.0">Swift Assist is a great new way to code. </span></span><span class="sentence"><span data-start="1481.0">Let me show you. </span></span><span class="sentence"><span data-start="1483.0">I've always wanted to build an app to catalog the classic Macs in my garage. </span></span><span class="sentence"><span data-start="1488.0">I'll start with an empty project, and bring up Swift Assist, </span></span><span class="sentence"><span data-start="1490.0">and ask for what I want. </span></span><span class="sentence"><span data-start="1494.0">Swift Assist is great for prototyping. </span></span><span class="sentence"><span data-start="1497.0">It can help me quickly visualize an idea. </span></span><span class="sentence"><span data-start="1501.0">Here, it creates a struct that represents a classic Mac, </span></span><span class="sentence"><span data-start="1504.0">with its name and details. </span></span><span class="sentence"><span data-start="1507.0">And I even got some realistic sample data that I can visualize in the preview. </span></span><span class="sentence"><span data-start="1511.0">This is a great start. Next, how about adding some images? </span></span><span class="sentence"><span data-start="1515.0">I'll ask to "add images next to each Mac." </span></span><span class="sentence"><span data-start="1518.0">I already had some images in my asset catalog. </span></span><span class="sentence"><span data-start="1520.0">And Swift Assist can reference those in the code that it creates. </span></span><span class="sentence"><span data-start="1524.0">My ClassicMac struct is updated to include an imageName property, </span></span><span class="sentence"><span data-start="1528.0">and then the sample data is updated with image names from my asset catalog. </span></span><span class="sentence"><span data-start="1532.0">So far, this is looking great! </span></span><span class="sentence"><span data-start="1535.0">One of my favorite things about classic Macs is their startup sound. </span></span><span class="sentence"><span data-start="1539.0">I recorded some and added them to my project, </span></span><span class="sentence"><span data-start="1542.0">so let's do something fun. </span></span><span class="sentence"><span data-start="1543.0">I'll ask, "Play sound when I tap on a Mac." </span></span><span class="sentence"><span data-start="1547.0">And like code completion, Swift Assist uses details from my project, </span></span><span class="sentence"><span data-start="1551.0">including symbols and the relationships between them, </span></span><span class="sentence"><span data-start="1553.0">to create personalized code. </span></span><span class="sentence"><span data-start="1557.0">Let's see how that sounds.</p><p></span></span><span class="sentence"><span data-start="1560.0"> </span></span><span class="sentence"><span data-start="1562.0">That brings back some great memories! </span></span><span class="sentence"><span data-start="1565.0">Finally, I want to try out a different layout. </span></span><span class="sentence"><span data-start="1567.0">Let's see what this looks like when I use a grid instead of a list.</p><p></span></span><span class="sentence"><span data-start="1572.0">What was just an idea a few minutes ago, is something I can run on my device. </span></span><span class="sentence"><span data-start="1577.0">How cool is that? </span></span><span class="sentence"><span data-start="1580.0">Swift Assist knows Apple's latest SDKs and Swift language features, </span></span><span class="sentence"><span data-start="1584.0">so you'll always get up-to-date and modern code </span></span><span class="sentence"><span data-start="1587.0">that blend perfectly into your project. </span></span><span class="sentence"><span data-start="1590.0">So now, tasks like exploring new frameworks </span></span><span class="sentence"><span data-start="1592.0">and experimenting with new ideas are just one request away. </span></span><span class="sentence"><span data-start="1597.0">Like all Apple developer services, Swift Assist is built </span></span><span class="sentence"><span data-start="1600.0">with your privacy and security in mind. </span></span><span class="sentence"><span data-start="1602.0">Your code is never stored on the server. </span></span><span class="sentence"><span data-start="1604.0">It's only used for processing your request, </span></span><span class="sentence"><span data-start="1607.0">and most importantly, </span></span><span class="sentence"><span data-start="1608.0">Apple doesn't use it for training machine learning models. </span></span><span class="sentence"><span data-start="1611.0">Swift Assist and the new predictive completions </span></span><span class="sentence"><span data-start="1614.0">will turbo charge the way you work in Xcode. </span></span><span class="sentence"><span data-start="1617.0">This marks the beginning of a journey to add </span></span><span class="sentence"><span data-start="1619.0">extraordinary intelligence into our tools. </span></span><span class="sentence"><span data-start="1621.0">What an exciting time to be developing for Apple platforms. </span></span><span class="sentence"><span data-start="1625.0">Xcode 16 also has many other new features to make you more productive </span></span><span class="sentence"><span data-start="1629.0">and improve the quality of your apps, </span></span><span class="sentence"><span data-start="1631.0">things like a single view of your backtraces, </span></span><span class="sentence"><span data-start="1634.0">showing relevant code from all stack frames together, </span></span><span class="sentence"><span data-start="1637.0">a "flame graph" of your profiling data in Instruments, </span></span><span class="sentence"><span data-start="1640.0">giving you deeper insight into your app's performance, </span></span><span class="sentence"><span data-start="1643.0">and enhancements to localization catalogs, </span></span><span class="sentence"><span data-start="1646.0">so you can bring your app to even more people around the world. </span></span><span class="sentence"><span data-start="1650.0">The first beta of Xcode 16 is available now, </span></span><span class="sentence"><span data-start="1653.0">including the new predictive completion for Apple silicon Macs. </span></span><span class="sentence"><span data-start="1656.0">And Swift Assist will be available later this year. </span></span><span class="sentence"><span data-start="1659.0">Next, let's talk about all the exciting changes in Swift. </span></span><span class="sentence"><span data-start="1663.0">And here to tell you all about it is Ted. </span></span><span class="sentence"><span data-start="1665.0">Ted Kremenek: Swift is the revolutionary programming language </span></span><span class="sentence"><span data-start="1669.0">that's approachable for newcomers and powerful for experts. </span></span><span class="sentence"><span data-start="1673.0">It's fast, modern, safe, and a joy to write. </span></span><span class="sentence"><span data-start="1678.0">This year, Swift celebrates its 10th birthday! </span></span><span class="sentence"><span data-start="1681.0"> </span></span><span class="sentence"><span data-start="1683.0">It's a good time to reflect on the journey so far </span></span><span class="sentence"><span data-start="1686.0">and set a course for the next decade of Swift. </span></span><span class="sentence"><span data-start="1690.0">Before Swift, the software on Apple's devices </span></span><span class="sentence"><span data-start="1693.0">was primarily written using C, C++, and Objective-C. </span></span><span class="sentence"><span data-start="1698.0">We created Swift to be an expressive and safer programming language </span></span><span class="sentence"><span data-start="1702.0">that would simplify the process of writing software. </span></span><span class="sentence"><span data-start="1706.0">Swift is an ideal language for app development, </span></span><span class="sentence"><span data-start="1708.0">and is used by almost one million apps. </span></span><span class="sentence"><span data-start="1711.0">But Swift is great for more than just apps. </span></span><span class="sentence"><span data-start="1715.0">Apple uses Swift throughout our software stack, </span></span><span class="sentence"><span data-start="1718.0">from apps and system services, to frameworks, </span></span><span class="sentence"><span data-start="1722.0">all the way down to firmware like the Secure Enclave. </span></span><span class="sentence"><span data-start="1726.0">And it's also used for network services, like Private Cloud Compute. </span></span><span class="sentence"><span data-start="1731.0">As Swift continues to evolve, it's becoming a compelling choice </span></span><span class="sentence"><span data-start="1735.0">for even the most performance-sensitive and secure code. </span></span><span class="sentence"><span data-start="1739.0">Swift's safety, speed, and approachability, </span></span><span class="sentence"><span data-start="1742.0">combined with built-in C and C++ interoperability, </span></span><span class="sentence"><span data-start="1745.0">mean Swift is the best choice to succeed C++. </span></span><span class="sentence"><span data-start="1750.0">Apple is committed to adopting Swift in our C++ codebases, </span></span><span class="sentence"><span data-start="1755.0">and moving to Swift will improve the quality of software, </span></span><span class="sentence"><span data-start="1758.0">both at Apple, and throughout the industry. </span></span><span class="sentence"><span data-start="1762.0">Looking ahead to the next ten years of Swift, </span></span><span class="sentence"><span data-start="1765.0">we're working with the open source community </span></span><span class="sentence"><span data-start="1767.0">to bring Swift to more platforms and domains. </span></span><span class="sentence"><span data-start="1771.0">First, to meet developers where they are, </span></span><span class="sentence"><span data-start="1774.0">we're investing in support for Swift in Visual Studio Code </span></span><span class="sentence"><span data-start="1778.0">and other editors that leverage the Language Server Protocol. </span></span><span class="sentence"><span data-start="1782.0">We're also expanding our Linux support to include Debian and Fedora </span></span><span class="sentence"><span data-start="1786.0">and improving support for Windows. </span></span><span class="sentence"><span data-start="1789.0">And Swift.org hosts a variety of community-authored guides </span></span><span class="sentence"><span data-start="1793.0">on using Swift across different domains, like creating a web service using Vapor. </span></span><span class="sentence"><span data-start="1799.0">Swift's community has been key to its success. </span></span><span class="sentence"><span data-start="1803.0">Open source libraries and tools underpin so many of the things </span></span><span class="sentence"><span data-start="1808.0">you build using Swift throughout the wider software ecosystem. </span></span><span class="sentence"><span data-start="1813.0">To further support the community and foster greater collaboration, </span></span><span class="sentence"><span data-start="1818.0">we're excited to announce a new GitHub organization, </span></span><span class="sentence"><span data-start="1822.0">dedicated to Swift at github.com/swiftlang. </span></span><span class="sentence"><span data-start="1827.0">This new organization will host a number of critical projects </span></span><span class="sentence"><span data-start="1831.0">for the Swift ecosystem, including the Swift compiler, </span></span><span class="sentence"><span data-start="1834.0">Foundation, and other key libraries. </span></span><span class="sentence"><span data-start="1839.0">And this year also brings an exciting new release, </span></span><span class="sentence"><span data-start="1842.0">with the launch of Swift 6. </span></span><span class="sentence"><span data-start="1846.0">Swift 6 makes concurrent programming dramatically easier </span></span><span class="sentence"><span data-start="1849.0">by introducing data-race safety. </span></span><span class="sentence"><span data-start="1852.0">A data race happens when different parts of code try to modify </span></span><span class="sentence"><span data-start="1856.0">and access the same data simultaneously. </span></span><span class="sentence"><span data-start="1859.0">Swift 6 eliminates these kinds of bugs by diagnosing them at compile time. </span></span><span class="sentence"><span data-start="1865.0">Since the introduction of async/await, structured concurrency, and actors, </span></span><span class="sentence"><span data-start="1871.0">Swift has progressively gained the building blocks necessary </span></span><span class="sentence"><span data-start="1875.0">to provide full data-race safety, </span></span><span class="sentence"><span data-start="1877.0">culminating in the new Swift 6 language mode, </span></span><span class="sentence"><span data-start="1880.0">which enables compile-time data-race safety. </span></span><span class="sentence"><span data-start="1883.0">Because data-race safety may involve changes to your code, </span></span><span class="sentence"><span data-start="1887.0">the new Swift 6 language mode is opt-in. </span></span><span class="sentence"><span data-start="1890.0">You can take advantage of it whenever you are ready </span></span><span class="sentence"><span data-start="1894.0">to tackle data races in your code. </span></span><span class="sentence"><span data-start="1896.0">When you turn on the Swift 6 language mode, </span></span><span class="sentence"><span data-start="1899.0">the compiler will diagnose concurrent access to memory </span></span><span class="sentence"><span data-start="1902.0">across your project, </span></span><span class="sentence"><span data-start="1903.0">and you can fix many data-race safety errors </span></span><span class="sentence"><span data-start="1906.0">with narrow changes to your code. </span></span><span class="sentence"><span data-start="1908.0">You can migrate to Swift 6 incrementally, one module at a time. </span></span><span class="sentence"><span data-start="1914.0">You don't need to wait for your dependencies to migrate either, </span></span><span class="sentence"><span data-start="1917.0">and when they do, you don't need to make any changes to your code </span></span><span class="sentence"><span data-start="1920.0">until you decide to use the new language mode. </span></span><span class="sentence"><span data-start="1925.0">Every module that migrates to Swift 6 </span></span><span class="sentence"><span data-start="1928.0">contributes to the community-wide transition </span></span><span class="sentence"><span data-start="1931.0">to bring data-race safety to the Swift software ecosystem. </span></span><span class="sentence"><span data-start="1936.0">You can help by updating your open source packages to Swift 6, </span></span><span class="sentence"><span data-start="1940.0">and everyone can follow along on the adoption of Swift 6 </span></span><span class="sentence"><span data-start="1944.0">in popular packages on SwiftPackageIndex.com. </span></span><span class="sentence"><span data-start="1948.0">Swift.org also has a migration guide with insights and patterns </span></span><span class="sentence"><span data-start="1953.0">on how best to modify your code to eliminate data races. </span></span><span class="sentence"><span data-start="1958.0">Compile-time data-race safety in Swift 6 will further elevate </span></span><span class="sentence"><span data-start="1962.0">your code's safety and help ensure its maintainability in the future. </span></span><span class="sentence"><span data-start="1967.0">And there are many other exciting developments in Swift 6, </span></span><span class="sentence"><span data-start="1971.0">along with improvements to concurrency, generics, </span></span><span class="sentence"><span data-start="1974.0">and a new "Embedded Swift" subset </span></span><span class="sentence"><span data-start="1976.0">for targeting highly-constrained environments </span></span><span class="sentence"><span data-start="1979.0">like operating system kernels and microcontrollers. </span></span><span class="sentence"><span data-start="1984.0">Another important aspect of software development is writing tests. </span></span><span class="sentence"><span data-start="1988.0">We're excited to introduce an all-new testing framework, </span></span><span class="sentence"><span data-start="1992.0">built from the ground up for Swift. </span></span><span class="sentence"><span data-start="1995.0">It's appropriately named Swift Testing. </span></span><span class="sentence"><span data-start="2000.0">Swift Testing has expressive APIs that make it simple to write tests. </span></span><span class="sentence"><span data-start="2005.0">It is easy to learn. </span></span><span class="sentence"><span data-start="2006.0">And it's cross-platform, so you can use it to write tests </span></span><span class="sentence"><span data-start="2010.0">for a variety of platforms and domains. </span></span><span class="sentence"><span data-start="2013.0">Swift Testing is also developed as an open source package. </span></span><span class="sentence"><span data-start="2017.0">It was introduced nine months ago, </span></span><span class="sentence"><span data-start="2019.0">and community feedback has been invaluable. </span></span><span class="sentence"><span data-start="2022.0">Writing a test starts simply by adding a function </span></span><span class="sentence"><span data-start="2025.0">with the Test attribute to your test suite. </span></span><span class="sentence"><span data-start="2028.0">You can provide a friendly title and use macros like #expect </span></span><span class="sentence"><span data-start="2032.0">to evaluate the result of any Swift expression, </span></span><span class="sentence"><span data-start="2035.0">making it easy to write complex checks. </span></span><span class="sentence"><span data-start="2038.0">Swift Testing also includes a flexible tagging system </span></span><span class="sentence"><span data-start="2042.0">to help you organize your tests and test plans. </span></span><span class="sentence"><span data-start="2045.0">With tags, you can selectively run tests across your test suite, </span></span><span class="sentence"><span data-start="2050.0">like tests that use a certain module, or that run on a specific device. </span></span><span class="sentence"><span data-start="2055.0">And with just a little bit of code, you can easily parameterize tests </span></span><span class="sentence"><span data-start="2059.0">so they can be reused multiple times, </span></span><span class="sentence"><span data-start="2061.0">repeating the same logic over a sequence of values. </span></span><span class="sentence"><span data-start="2065.0">Xcode 16 has full support for Swift Testing. </span></span><span class="sentence"><span data-start="2069.0">The test navigator organizes tests by tag, </span></span><span class="sentence"><span data-start="2072.0">and shows parameterized tests, </span></span><span class="sentence"><span data-start="2075.0">and the source editor has a rich inline presentation </span></span><span class="sentence"><span data-start="2079.0">to help diagnose what went wrong when a test fails. </span></span><span class="sentence"><span data-start="2083.0">Swift Testing takes full advantage of the power of concurrency in Swift, </span></span><span class="sentence"><span data-start="2087.0">running all the tests safely in parallel. </span></span><span class="sentence"><span data-start="2091.0">It's designed for all of Swift's use cases, </span></span><span class="sentence"><span data-start="2094.0">with integrated support in both Xcode and Visual Studio Code. </span></span><span class="sentence"><span data-start="2099.0">Swift has helped us all write safer, better code, </span></span><span class="sentence"><span data-start="2103.0">and we're excited to see Swift continuing to transform software around the world. </span></span><span class="sentence"><span data-start="2109.0">By moving Swift and Apple's frameworks together, </span></span><span class="sentence"><span data-start="2113.0">we unlock new levels of productivity and expressivity, </span></span><span class="sentence"><span data-start="2117.0">and nowhere is that more powerful than with SwiftUI. </span></span><span class="sentence"><span data-start="2122.0">Here's Josh to tell you more. </span></span><span class="sentence"><span data-start="2125.0">Josh Shaffer: SwiftUI is the best way to build apps for any Apple device. </span></span><span class="sentence"><span data-start="2130.0">Like the Swift language, SwiftUI is easy to learn </span></span><span class="sentence"><span data-start="2133.0">and yet packed with advanced features. </span></span><span class="sentence"><span data-start="2135.0">Its design is informed by deep experience building apps </span></span><span class="sentence"><span data-start="2138.0">that work across devices and integrate seamlessly with the underlying OS. </span></span><span class="sentence"><span data-start="2142.0">When you write apps with SwiftUI, </span></span><span class="sentence"><span data-start="2145.0">you focus on describing the UI that you want, </span></span><span class="sentence"><span data-start="2147.0">and SwiftUI takes care of details like dark mode, </span></span><span class="sentence"><span data-start="2150.0">dynamic type, and tracking changes in your model. </span></span><span class="sentence"><span data-start="2154.0">By enabling you to express what you want, not how to build it, </span></span><span class="sentence"><span data-start="2158.0">SwiftUI lets you share more of your code across more devices. </span></span><span class="sentence"><span data-start="2162.0">Of course, you can always customize and fine-tune the look and feel </span></span><span class="sentence"><span data-start="2166.0">provided by SwiftUI using a large set of modifiers and protocols, </span></span><span class="sentence"><span data-start="2170.0">so you can achieve exactly the result that you want. </span></span><span class="sentence"><span data-start="2173.0">Whether you're building a brand-new app, or building a new feature </span></span><span class="sentence"><span data-start="2177.0">in an existing app, SwiftUI is the right tool to use. </span></span><span class="sentence"><span data-start="2181.0">This is exactly what we've been doing with SwiftUI adoption at Apple. </span></span><span class="sentence"><span data-start="2185.0">There are brand-new apps built from the ground up with SwiftUI, </span></span><span class="sentence"><span data-start="2189.0">like Image Playground, an all-new app with a stylish, custom interface. </span></span><span class="sentence"><span data-start="2193.0">And the new Passwords app, which has a more standard look and feel </span></span><span class="sentence"><span data-start="2197.0">built around familiar forms and controls. </span></span><span class="sentence"><span data-start="2200.0">And SwiftUI is used for new features in existing apps as well, </span></span><span class="sentence"><span data-start="2203.0">like the all-new design of Photos, where redesigned elements </span></span><span class="sentence"><span data-start="2207.0">built using SwiftUI run side-by-side </span></span><span class="sentence"><span data-start="2209.0">with pre-existing views like the photo grid. </span></span><span class="sentence"><span data-start="2212.0">SwiftUI has also helped us share more code across platforms, </span></span><span class="sentence"><span data-start="2216.0">like with Music, which first adopted SwiftUI </span></span><span class="sentence"><span data-start="2219.0">for visionOS and tvOS, and is now using it to consolidate </span></span><span class="sentence"><span data-start="2222.0">and simplify their codebase across iOS and iPadOS as well. </span></span><span class="sentence"><span data-start="2227.0">Across our platforms, there have been a huge number of apps </span></span><span class="sentence"><span data-start="2230.0">and experiences adopting SwiftUI in recent years. </span></span><span class="sentence"><span data-start="2234.0">SwiftUI is used in apps like Xcode, Pages, and Music </span></span><span class="sentence"><span data-start="2239.0">and core system experiences </span></span><span class="sentence"><span data-start="2241.0">like Control Center, Notification Center, and Finder. </span></span><span class="sentence"><span data-start="2245.0">On watchOS, SwiftUI is used extensively, </span></span><span class="sentence"><span data-start="2248.0">including in key apps like Workout, Activity, and Sleep. </span></span><span class="sentence"><span data-start="2252.0">And on visionOS, SwiftUI is the perfect choice </span></span><span class="sentence"><span data-start="2255.0">for building a spatial app. </span></span><span class="sentence"><span data-start="2256.0">With SwiftUI used in more and more places, we're continuing to make </span></span><span class="sentence"><span data-start="2261.0">multi-year investments to the developer experience. </span></span><span class="sentence"><span data-start="2263.0">This year, we focused on previews, customizations, and interoperability. </span></span><span class="sentence"><span data-start="2269.0">First, Xcode Previews has a new dynamic linking architecture </span></span><span class="sentence"><span data-start="2273.0">that uses the same build artifacts for previews and when you build-and-run. </span></span><span class="sentence"><span data-start="2277.0">This avoids rebuilding your project when switching between the two, </span></span><span class="sentence"><span data-start="2281.0">making for a dramatically smoother and more productive workflow. </span></span><span class="sentence"><span data-start="2285.0">And it's now easier to set up Previews too. </span></span><span class="sentence"><span data-start="2287.0">A new @Previewable macro makes it possible to use dynamic properties like @State </span></span><span class="sentence"><span data-start="2292.0">directly in an Xcode Preview, </span></span><span class="sentence"><span data-start="2294.0">reducing the amount of code that you have to write. </span></span><span class="sentence"><span data-start="2297.0">SwiftUI has also gained a number of customizations </span></span><span class="sentence"><span data-start="2300.0">to fine-tune the look and feel of your apps, </span></span><span class="sentence"><span data-start="2302.0">like custom hover effects for visionOS, </span></span><span class="sentence"><span data-start="2304.0">which give your users additional context when interacting with UI elements, </span></span><span class="sentence"><span data-start="2309.0">new options to customize window behavior and styling in macOS, </span></span><span class="sentence"><span data-start="2312.0">giving control over things like the window's toolbar and background, </span></span><span class="sentence"><span data-start="2316.0">and a new text renderer API </span></span><span class="sentence"><span data-start="2318.0">that enables a whole new level of visual effects and playful animations. </span></span><span class="sentence"><span data-start="2323.0">Many apps adopting SwiftUI also use views written with UIKit and AppKit, </span></span><span class="sentence"><span data-start="2328.0">so great interoperability with these frameworks is critical. </span></span><span class="sentence"><span data-start="2332.0">Achieving this requires deep integration with the frameworks themselves. </span></span><span class="sentence"><span data-start="2336.0">This year, all our UI frameworks share more common foundations. </span></span><span class="sentence"><span data-start="2340.0">Gesture recognition has been factored out of UIKit, </span></span><span class="sentence"><span data-start="2343.0">enabling you to take any built-in or custom UIGestureRecognizer </span></span><span class="sentence"><span data-start="2347.0">and use it in your SwiftUI view hierarchy. </span></span><span class="sentence"><span data-start="2350.0">This works even on SwiftUI views that aren't directly backed by UIKit, </span></span><span class="sentence"><span data-start="2354.0">like those in a Metal-accelerated drawing group. </span></span><span class="sentence"><span data-start="2357.0">And Animations have been factored out of SwiftUI </span></span><span class="sentence"><span data-start="2360.0">so you can now set up animations on UIKit or AppKit views </span></span><span class="sentence"><span data-start="2363.0">and then drive them with SwiftUI, including fully custom animations. </span></span><span class="sentence"><span data-start="2368.0">And of course, there are many more exciting </span></span><span class="sentence"><span data-start="2371.0">and useful features in SwiftUI this year, like custom containers, </span></span><span class="sentence"><span data-start="2374.0">mesh gradients, scrolling customizations, and much more. </span></span><span class="sentence"><span data-start="2378.0">If you aren't already using SwiftUI in your apps, there's no reason to wait. </span></span><span class="sentence"><span data-start="2383.0">SwiftUI is ready to help you build any user interface that you want, </span></span><span class="sentence"><span data-start="2386.0">using less code and better code. </span></span><span class="sentence"><span data-start="2389.0">The Swift programming language started a revolution </span></span><span class="sentence"><span data-start="2392.0">in how productive and expressive APIs could be. </span></span><span class="sentence"><span data-start="2395.0">From the standard library and Foundation to SwiftUI and the new Swift Testing, </span></span><span class="sentence"><span data-start="2399.0">APIs designed for Swift are dramatically easier to use, </span></span><span class="sentence"><span data-start="2403.0">and make you more productive. </span></span><span class="sentence"><span data-start="2405.0">Just last year, we added SwiftData to this list, </span></span><span class="sentence"><span data-start="2408.0">helping you model and persist your app's information </span></span><span class="sentence"><span data-start="2411.0">using a lightweight API that feels totally natural in Swift. </span></span><span class="sentence"><span data-start="2415.0">You can define your schema with just a few additions </span></span><span class="sentence"><span data-start="2418.0">to a normal Swift class starting with applying the @Model macro. </span></span><span class="sentence"><span data-start="2422.0">That's actually all you need, but you can further refine it </span></span><span class="sentence"><span data-start="2425.0">using @Attribute to specify behaviors on properties </span></span><span class="sentence"><span data-start="2428.0">and @Relationship to describe how models relate to one another. </span></span><span class="sentence"><span data-start="2432.0">This year, we continued to build on SwiftData's simple syntax </span></span><span class="sentence"><span data-start="2436.0">and modeling capabilities with the addition of #Index and #Unique. </span></span><span class="sentence"><span data-start="2440.0">#Index makes your queries more efficient by telling the underlying storage </span></span><span class="sentence"><span data-start="2444.0">which properties are commonly queried together, </span></span><span class="sentence"><span data-start="2446.0">so they can be stored and retrieved quickly. </span></span><span class="sentence"><span data-start="2449.0">And #Unique indicates that a set of properties </span></span><span class="sentence"><span data-start="2452.0">can have no duplicate entries. </span></span><span class="sentence"><span data-start="2454.0">And the new @Previewable macro also works great with SwiftData, </span></span><span class="sentence"><span data-start="2458.0">making it easier to work with your queries while iterating on views. </span></span><span class="sentence"><span data-start="2461.0">Beyond these syntax additions, SwiftData also has expanded capabilities </span></span><span class="sentence"><span data-start="2466.0">around how your data is stored and how changes are recorded, </span></span><span class="sentence"><span data-start="2469.0">starting with custom data stores. </span></span><span class="sentence"><span data-start="2471.0">Today's apps are built using a variety of storage backends. </span></span><span class="sentence"><span data-start="2474.0">And by default, SwiftData uses Core Data to store information. </span></span><span class="sentence"><span data-start="2478.0">With a custom data store, you have the ability to store data </span></span><span class="sentence"><span data-start="2482.0">using an alternative backend of your choosing. </span></span><span class="sentence"><span data-start="2484.0">This makes it possible to use SwiftData's API with backends like SQLite, </span></span><span class="sentence"><span data-start="2489.0">a remote web service, </span></span><span class="sentence"><span data-start="2490.0">or even just a mapped collection of JSON files. </span></span><span class="sentence"><span data-start="2493.0">It's really flexible. </span></span><span class="sentence"><span data-start="2495.0">And SwiftData now provides access to the history of changes in a data store. </span></span><span class="sentence"><span data-start="2499.0">A data store's history keeps track of all of the changes </span></span><span class="sentence"><span data-start="2502.0">that have occurred in the underlying data, making it easy to inspect </span></span><span class="sentence"><span data-start="2505.0">all the changes that were recently made. </span></span><span class="sentence"><span data-start="2507.0">This is useful for tracking local changes </span></span><span class="sentence"><span data-start="2509.0">that need to be synced to a remote web service. </span></span><span class="sentence"><span data-start="2512.0">These new features make working with data easier than ever before, </span></span><span class="sentence"><span data-start="2516.0">all using an API that feels incredibly natural in Swift. </span></span><span class="sentence"><span data-start="2520.0">Now, let's talk about a key framework that helps you create </span></span><span class="sentence"><span data-start="2523.0">compelling 3D and spatial experiences, and that's RealityKit. </span></span><span class="sentence"><span data-start="2527.0">RealityKit simplifies the process of rendering 3D models </span></span><span class="sentence"><span data-start="2531.0">with a variety of styles, like realistic, cell-shaded, or cartoon. </span></span><span class="sentence"><span data-start="2536.0">RealityKit first shipped on iPhone, iPad, and Mac. </span></span><span class="sentence"><span data-start="2540.0">With the launch of Vision Pro, it gained significant new capabilities, </span></span><span class="sentence"><span data-start="2543.0">alongside a brand-new tool, Reality Composer Pro, </span></span><span class="sentence"><span data-start="2547.0">which simplified the development of spatial apps </span></span><span class="sentence"><span data-start="2549.0">but only supported visionOS. </span></span><span class="sentence"><span data-start="2552.0">This year, these APIs and tools are now aligned across macOS, </span></span><span class="sentence"><span data-start="2556.0">iOS, and iPadOS as well with RealityKit 4 </span></span><span class="sentence"><span data-start="2559.0">so you can easily build for all of these platforms at once! </span></span><span class="sentence"><span data-start="2563.0">Everything you expect, including MaterialX, </span></span><span class="sentence"><span data-start="2566.0">Portals, and Particles are now available to be used with RealityView </span></span><span class="sentence"><span data-start="2570.0">on all four of these platforms. </span></span><span class="sentence"><span data-start="2572.0">This includes APIs for rich materials and virtual lighting, </span></span><span class="sentence"><span data-start="2576.0">providing creative control over how your 3D objects appear </span></span><span class="sentence"><span data-start="2579.0">and how they interact with the user's environment. </span></span><span class="sentence"><span data-start="2582.0">As well as brand-new APIs and tools like BlendShapes, </span></span><span class="sentence"><span data-start="2586.0">Inverse Kinematics, and animation timelines </span></span><span class="sentence"><span data-start="2588.0">which bring expanded character animation capabilities, </span></span><span class="sentence"><span data-start="2591.0">enabling interactions that are dynamic and responsive </span></span><span class="sentence"><span data-start="2594.0">to the surrounding environment and to user behavior. </span></span><span class="sentence"><span data-start="2597.0">RealityKit 4 also provides more direct access to rendering </span></span><span class="sentence"><span data-start="2601.0">with new APIs for Low Level Mesh and Textures, </span></span><span class="sentence"><span data-start="2604.0">which work with Metal Compute Shaders </span></span><span class="sentence"><span data-start="2606.0">to offer improved control over how your apps look, </span></span><span class="sentence"><span data-start="2609.0">enabling fully dynamic models and textures in every frame. </span></span><span class="sentence"><span data-start="2613.0">On visionOS, these features work in both the Shared Space and an app's Full Space. </span></span><span class="sentence"><span data-start="2619.0">It's also easier to inspect your RealityKit content, </span></span><span class="sentence"><span data-start="2622.0">as Xcode's view debugging now supports introspecting your 3D scene content. </span></span><span class="sentence"><span data-start="2626.0">You can investigate your scene's object hierarchy </span></span><span class="sentence"><span data-start="2628.0">and inspect every element's properties, both those built into RealityKit </span></span><span class="sentence"><span data-start="2633.0">as well as the custom components that you create. </span></span><span class="sentence"><span data-start="2636.0">With Swift and frameworks like SwiftUI, SwiftData, and RealityKit, </span></span><span class="sentence"><span data-start="2640.0">Apple's SDKs make it easy to build beautiful and immersive apps. </span></span><span class="sentence"><span data-start="2645.0">They also include powerful APIs that extend your apps' reach </span></span><span class="sentence"><span data-start="2648.0">into system spaces, enabling deep integration with the underlying platforms. </span></span><span class="sentence"><span data-start="2652.0">Let's take a look at some of the latest capabilities </span></span><span class="sentence"><span data-start="2655.0">in this year's OS releases. </span></span><span class="sentence"><span data-start="2657.0">Here's Jonathan to start with iOS. </span></span><span class="sentence"><span data-start="2661.0">Jonathan Thomassian: In addition to Apple Intelligence, </span></span><span class="sentence"><span data-start="2663.0">there are lots of new APIs across all of our platforms </span></span><span class="sentence"><span data-start="2666.0">to give you even more possibilities. </span></span><span class="sentence"><span data-start="2668.0">Let's begin with iOS. </span></span><span class="sentence"><span data-start="2670.0">This year, iOS is more customizable than ever, </span></span><span class="sentence"><span data-start="2673.0">and it starts with Controls. </span></span><span class="sentence"><span data-start="2675.0">They make getting to frequent tasks from your apps faster and easier </span></span><span class="sentence"><span data-start="2680.0">and are a great way to engage with your app </span></span><span class="sentence"><span data-start="2683.0">from more places across the system. </span></span><span class="sentence"><span data-start="2686.0">Controls can toggle a setting, execute an action, </span></span><span class="sentence"><span data-start="2689.0">or deep link right to a specific experience. </span></span><span class="sentence"><span data-start="2692.0">Using the new Controls API, you can create a control </span></span><span class="sentence"><span data-start="2695.0">by specifying the type, a symbol, and an App Intent. </span></span><span class="sentence"><span data-start="2699.0">Once defined, your control will be available to users </span></span><span class="sentence"><span data-start="2703.0">in the new Controls Gallery, </span></span><span class="sentence"><span data-start="2704.0">where they can add it into their Control Center </span></span><span class="sentence"><span data-start="2707.0">for easy access. </span></span><span class="sentence"><span data-start="2708.0">Users can also assign your control </span></span><span class="sentence"><span data-start="2710.0">to the Action button on their iPhone 15 Pro </span></span><span class="sentence"><span data-start="2713.0">or, for the first time, to appear </span></span><span class="sentence"><span data-start="2716.0">as one of the controls on their Lock Screen. </span></span><span class="sentence"><span data-start="2718.0">And for apps that leverage the camera, the new LockedCameraCapture framework </span></span><span class="sentence"><span data-start="2723.0">enables captures even while the device is locked. </span></span><span class="sentence"><span data-start="2726.0">Now, let's talk about another way iOS is becoming more customizable, </span></span><span class="sentence"><span data-start="2730.0">on the Home Screen. </span></span><span class="sentence"><span data-start="2732.0">App icons and widgets can now appear Light, Dark, or with a Tint. </span></span><span class="sentence"><span data-start="2738.0">To get you started, a tinted version of your app icon </span></span><span class="sentence"><span data-start="2742.0">will automatically be available to your users </span></span><span class="sentence"><span data-start="2744.0">after they upgrade to iOS 18. </span></span><span class="sentence"><span data-start="2747.0">This treatment is applied to all app icons, </span></span><span class="sentence"><span data-start="2749.0">and is crafted intelligently to preserve your design intent </span></span><span class="sentence"><span data-start="2752.0">and maintain legibility. </span></span><span class="sentence"><span data-start="2755.0">This results in a consistent visual experience across the Home Screen. </span></span><span class="sentence"><span data-start="2759.0">And no matter how your icon is rendered, you can make sure </span></span><span class="sentence"><span data-start="2761.0">that it always looks great by customizing each version. </span></span><span class="sentence"><span data-start="2765.0">The Human Interface Guidelines have updated icon templates </span></span><span class="sentence"><span data-start="2768.0">and best practices for adapting your icons to these new appearances. </span></span><span class="sentence"><span data-start="2772.0">And when you're ready, Xcode now supports </span></span><span class="sentence"><span data-start="2775.0">Dark and Tinted app icon variants </span></span><span class="sentence"><span data-start="2778.0">that you can drop right into your asset catalog. </span></span><span class="sentence"><span data-start="2781.0">From extending your controls across the system </span></span><span class="sentence"><span data-start="2784.0">to making sure your app icons and widgets look their very best, </span></span><span class="sentence"><span data-start="2787.0">iOS 18 gives you amazing new ways </span></span><span class="sentence"><span data-start="2790.0">to customize how your users experience your apps. </span></span><span class="sentence"><span data-start="2793.0">Now, let's talk about security. </span></span><span class="sentence"><span data-start="2796.0">Two years ago, iOS added support for passkeys. </span></span><span class="sentence"><span data-start="2800.0">Passkeys are a replacement for passwords that are more secure, </span></span><span class="sentence"><span data-start="2803.0">easier to use, and can't be phished. </span></span><span class="sentence"><span data-start="2806.0">They offer faster sign-in, fewer password resets, </span></span><span class="sentence"><span data-start="2809.0">and reduced support costs. </span></span><span class="sentence"><span data-start="2811.0">This year, we've created a seamless way to transition more of your users </span></span><span class="sentence"><span data-start="2816.0">to passkeys with a new registration API. </span></span><span class="sentence"><span data-start="2819.0">It creates passkeys automatically for eligible users </span></span><span class="sentence"><span data-start="2822.0">the next time they sign in to your app, </span></span><span class="sentence"><span data-start="2825.0">so future sign-ins will be faster and stronger than before. </span></span><span class="sentence"><span data-start="2829.0">After the passkey is created, users are informed </span></span><span class="sentence"><span data-start="2832.0">that a passkey has been saved without interrupting their flow. </span></span><span class="sentence"><span data-start="2835.0">If you've already adopted passkeys, adding automatic passkey registration </span></span><span class="sentence"><span data-start="2839.0">just requires a single new parameter. </span></span><span class="sentence"><span data-start="2842.0">There's never been a better time to transition to passkeys in your apps. </span></span><span class="sentence"><span data-start="2847.0">And of course, all these features are also available on iPadOS. </span></span><span class="sentence"><span data-start="2852.0">This year, iPadOS delivers big updates to the ways that your users </span></span><span class="sentence"><span data-start="2856.0">interact with your apps, starting with the redesigned tab bar. </span></span><span class="sentence"><span data-start="2860.0">It floats at the top of your app </span></span><span class="sentence"><span data-start="2862.0">and makes it easy to jump to your favorite tabs. </span></span><span class="sentence"><span data-start="2865.0">And it turns into a sidebar for those moments </span></span><span class="sentence"><span data-start="2867.0">when you want to dive deeper. </span></span><span class="sentence"><span data-start="2869.0">Like when you want to explore your channels in Apple TV. </span></span><span class="sentence"><span data-start="2872.0">There's a new API that simplifies building important interactions </span></span><span class="sentence"><span data-start="2876.0">like customization, menus, and drag and drop. </span></span><span class="sentence"><span data-start="2879.0">So you can accomplish more, with less code. </span></span><span class="sentence"><span data-start="2883.0">If your app has a simple hierarchy, then you can just adopt the tab bar. </span></span><span class="sentence"><span data-start="2887.0">If your app has a deeper hierarchy, you can implement both the tab bar </span></span><span class="sentence"><span data-start="2890.0">and sidebar with the same API. </span></span><span class="sentence"><span data-start="2893.0">And you can even enable your users to customize what's in their tab bars. </span></span><span class="sentence"><span data-start="2898.0">You may have noticed that the tab bar elegantly morphs into the sidebar. </span></span><span class="sentence"><span data-start="2902.0">These kinds of refined animations are also available for your app. </span></span><span class="sentence"><span data-start="2906.0">For example, users have loved the zoom transition in Photos. </span></span><span class="sentence"><span data-start="2910.0">It's precisely controlled by touch, </span></span><span class="sentence"><span data-start="2912.0">and can even be interrupted as it's happening. </span></span><span class="sentence"><span data-start="2915.0">Interruptible animations keep your app feeling responsive </span></span><span class="sentence"><span data-start="2918.0">as users navigate your UI, because they don't have to wait </span></span><span class="sentence"><span data-start="2921.0">for animations to complete before their next interaction. </span></span><span class="sentence"><span data-start="2924.0">You can take advantage of the same interruptible, </span></span><span class="sentence"><span data-start="2927.0">fluid zoom transition in your apps on iOS and iPadOS. </span></span><span class="sentence"><span data-start="2933.0">This is great in apps like Notes, where notes now beautifully animate open </span></span><span class="sentence"><span data-start="2937.0">from the Gallery view, and can even be pinched closed. </span></span><span class="sentence"><span data-start="2941.0">And you can also use the new zoom transition </span></span><span class="sentence"><span data-start="2944.0">with an updated Document Launch View. </span></span><span class="sentence"><span data-start="2946.0">It allows you to create a bespoke look for your app, </span></span><span class="sentence"><span data-start="2949.0">and connect your launch experience to your brand. </span></span><span class="sentence"><span data-start="2952.0">You can customize actions, change the background, </span></span><span class="sentence"><span data-start="2954.0">and add fun animated assets to bring the header to life. </span></span><span class="sentence"><span data-start="2958.0">These are just a few of the API improvements you can leverage </span></span><span class="sentence"><span data-start="2962.0">to better integrate your apps into the system </span></span><span class="sentence"><span data-start="2964.0">and enhance your customers' experience on iOS and iPadOS. </span></span><span class="sentence"><span data-start="2968.0">Now, moving on to watchOS, here's Lori to tell you more. </span></span><span class="sentence"><span data-start="2973.0">Lori Hylan-Cho: Apple Watch is the easiest way </span></span><span class="sentence"><span data-start="2976.0">for people to access the most important information </span></span><span class="sentence"><span data-start="2978.0">for their day at a glance. </span></span><span class="sentence"><span data-start="2979.0">From any watch face, relevant insights and actions </span></span><span class="sentence"><span data-start="2982.0">are just a scroll of the digital crown away. </span></span><span class="sentence"><span data-start="2985.0">This year, watchOS 11 gives you even more opportunities </span></span><span class="sentence"><span data-start="2988.0">to bring compelling experiences from your app into the Smart Stack </span></span><span class="sentence"><span data-start="2991.0">with some new APIs and by leveraging code you've already written. </span></span><span class="sentence"><span data-start="2995.0">In fact, one of the coolest new features on watchOS this year </span></span><span class="sentence"><span data-start="2999.0">actually starts on iOS: Live Activities. </span></span><span class="sentence"><span data-start="3002.0">If you've adopted Live Activities in your iOS app, </span></span><span class="sentence"><span data-start="3005.0">the system will leverage the work you've already done </span></span><span class="sentence"><span data-start="3007.0">to support the Dynamic Island </span></span><span class="sentence"><span data-start="3009.0">to offer a Live Activity experience on Apple Watch. </span></span><span class="sentence"><span data-start="3012.0">Watch wearers will see your compact leading and trailing views </span></span><span class="sentence"><span data-start="3015.0">automatically in the Smart Stack, </span></span><span class="sentence"><span data-start="3017.0">as well as when significant event notifications occur. </span></span><span class="sentence"><span data-start="3020.0">You can use the All Variants Preview in Xcode 16 </span></span><span class="sentence"><span data-start="3024.0">to see how your Live Activity will appear on watchOS with your current </span></span><span class="sentence"><span data-start="3027.0">Live Activity Widget Configuration, </span></span><span class="sentence"><span data-start="3029.0">and you can even add a custom watchOS presentation </span></span><span class="sentence"><span data-start="3032.0">by indicating that you support the small supplemental activity family. </span></span><span class="sentence"><span data-start="3036.0">Giving your customers a great experience on watchOS </span></span><span class="sentence"><span data-start="3039.0">is as simple as using the @Environment to further customize </span></span><span class="sentence"><span data-start="3041.0">your Live Activity view when it appears on Apple Watch. </span></span><span class="sentence"><span data-start="3044.0">For those of you who already have a watchOS app </span></span><span class="sentence"><span data-start="3047.0">or are planning to build one, you can make your experiences </span></span><span class="sentence"><span data-start="3050.0">even more timely, contextual, and functional by taking advantage </span></span><span class="sentence"><span data-start="3054.0">of the expanded capabilities of widgets in watchOS 11. </span></span><span class="sentence"><span data-start="3058.0">You can now bring your interactive widgets to watchOS, </span></span><span class="sentence"><span data-start="3060.0">using the same APIs you're currently using on iOS and macOS. </span></span><span class="sentence"><span data-start="3065.0">App Intents let you create widgets with multiple interactive areas </span></span><span class="sentence"><span data-start="3068.0">that perform actions and update state directly in the widget. </span></span><span class="sentence"><span data-start="3072.0">The new accessory WidgetGroup layout is one way to provide </span></span><span class="sentence"><span data-start="3075.0">more information and interactivity to your customers. </span></span><span class="sentence"><span data-start="3078.0">It accommodates three separate views, and supports both deep linking </span></span><span class="sentence"><span data-start="3082.0">to different parts of your app and Button and Toggle initializers </span></span><span class="sentence"><span data-start="3085.0">to perform actions without leaving the widget. </span></span><span class="sentence"><span data-start="3087.0">To make sure that your informative and interactive widgets appear </span></span><span class="sentence"><span data-start="3091.0">when they'd be most useful, you can now specify one or more </span></span><span class="sentence"><span data-start="3094.0">RelevantContexts, such as time of day, AirPods connection, </span></span><span class="sentence"><span data-start="3098.0">location, and routine, so that the system can insert them </span></span><span class="sentence"><span data-start="3101.0">into the Smart Stack at just the right time. </span></span><span class="sentence"><span data-start="3104.0">And for those of you eager to integrate Double Tap into your apps, </span></span><span class="sentence"><span data-start="3108.0">handGestureShortcut is the modifier you've been looking for. </span></span><span class="sentence"><span data-start="3111.0">Use this modifier to identify a Button or Toggle </span></span><span class="sentence"><span data-start="3114.0">as the primary action in your app, widget, or Live Activity </span></span><span class="sentence"><span data-start="3117.0">to give your customers quick, one-handed control. </span></span><span class="sentence"><span data-start="3120.0">Live Activities, interactive and contextual widgets, </span></span><span class="sentence"><span data-start="3123.0">and Double Tap support are just a few of the new opportunities </span></span><span class="sentence"><span data-start="3126.0">coming to watchOS 11 this year. </span></span><span class="sentence"><span data-start="3128.0">Next, Eric will dive into some exciting updates for macOS. </span></span><span class="sentence"><span data-start="3133.0">Eric Sunalp: This year, macOS supports Apple Intelligence </span></span><span class="sentence"><span data-start="3137.0">with features like Writing Tools, Genmoji, and Image Playground </span></span><span class="sentence"><span data-start="3141.0">that you can integrate right into your apps </span></span><span class="sentence"><span data-start="3143.0">to create engaging experiences. </span></span><span class="sentence"><span data-start="3145.0">It also introduces productivity features like easier window tiling </span></span><span class="sentence"><span data-start="3149.0">and iPhone mirroring, and delivers new APIs </span></span><span class="sentence"><span data-start="3151.0">including user space file system support and major improvements to MapKit. </span></span><span class="sentence"><span data-start="3156.0">And now, we'd like to focus on one area that's growing incredibly fast. </span></span><span class="sentence"><span data-start="3160.0">And that's gaming. </span></span><span class="sentence"><span data-start="3162.0">With the incredible pace of innovation in Metal and Apple silicon, </span></span><span class="sentence"><span data-start="3165.0">there's a fundamental shift taking place. </span></span><span class="sentence"><span data-start="3168.0">Every Apple silicon Mac, every iPad with an M-series chip, </span></span><span class="sentence"><span data-start="3172.0">and even the latest iPhone 15 Pro can play the type of games that previously required </span></span><span class="sentence"><span data-start="3177.0">dedicated gaming systems with power-hungry discrete GPUs. </span></span><span class="sentence"><span data-start="3181.0">These "console-class" Apple devices create a unified gaming platform </span></span><span class="sentence"><span data-start="3185.0">that's built with a tightly integrated graphics software </span></span><span class="sentence"><span data-start="3188.0">and a scalable hardware architecture. </span></span><span class="sentence"><span data-start="3190.0">And every year, this rapidly growing platform delivers </span></span><span class="sentence"><span data-start="3194.0">new advancements in Apple silicon and Metal </span></span><span class="sentence"><span data-start="3196.0">to further improve the gaming experience. </span></span><span class="sentence"><span data-start="3198.0">To bring your high-end games to this platform </span></span><span class="sentence"><span data-start="3201.0">and reach even more players, </span></span><span class="sentence"><span data-start="3202.0">one of the best places to start is the Game Porting Toolkit. </span></span><span class="sentence"><span data-start="3206.0">And it's been so great seeing the positive reception so far. </span></span><span class="sentence"><span data-start="3209.0">Developers like Ubisoft could bring their games to Apple devices </span></span><span class="sentence"><span data-start="3213.0">faster than ever. </span></span><span class="sentence"><span data-start="3214.0">Gaming enthusiasts were able to evaluate demanding Windows games </span></span><span class="sentence"><span data-start="3218.0">like "Cyberpunk 2077" for the first time on their Mac. </span></span><span class="sentence"><span data-start="3222.0">And we're so excited to see community projects </span></span><span class="sentence"><span data-start="3225.0">like Whisky and Homebrew and products like CrossOver use Game Porting Toolkit </span></span><span class="sentence"><span data-start="3229.0">to provide even more options to get started with the evaluation process. </span></span><span class="sentence"><span data-start="3234.0">This year, we're excited to announce Game Porting Toolkit 2, </span></span><span class="sentence"><span data-start="3238.0">with big updates based on your feedback that help accelerate your timeline </span></span><span class="sentence"><span data-start="3242.0">no matter if you're bringing an existing game </span></span><span class="sentence"><span data-start="3244.0">or one that's currently in development. </span></span><span class="sentence"><span data-start="3247.0">New additions to the toolkit help you bring more advanced games to Mac, </span></span><span class="sentence"><span data-start="3250.0">bring Mac games to iPad and iPhone, and deliver a great user experience. </span></span><span class="sentence"><span data-start="3256.0">First, let's take a look at bringing advanced games to Mac. </span></span><span class="sentence"><span data-start="3259.0">With Game Porting Toolkit 2, you can now evaluate </span></span><span class="sentence"><span data-start="3262.0">more Windows games thanks to improved compatibility </span></span><span class="sentence"><span data-start="3265.0">with technologies like AVX2 </span></span><span class="sentence"><span data-start="3267.0">and advanced gaming features like ray tracing, </span></span><span class="sentence"><span data-start="3269.0">giving you a more complete picture of your game's potential on Mac. </span></span><span class="sentence"><span data-start="3274.0">And Metal adds highly requested API improvements </span></span><span class="sentence"><span data-start="3276.0">that help DirectX developers port their existing graphics code. </span></span><span class="sentence"><span data-start="3280.0">For instance, managing Metal resources should feel much more familiar. </span></span><span class="sentence"><span data-start="3284.0">And Xcode adds another highly requested feature, </span></span><span class="sentence"><span data-start="3287.0">enabling you to debug and profile the source of your original HLSL shaders. </span></span><span class="sentence"><span data-start="3293.0">And you can do this at any stage in the development process, </span></span><span class="sentence"><span data-start="3296.0">whether you're evaluating your original Windows binary </span></span><span class="sentence"><span data-start="3298.0">or debugging the Metal version of your game. </span></span><span class="sentence"><span data-start="3301.0">Once you have an optimized Mac game, it's now much more straightforward </span></span><span class="sentence"><span data-start="3305.0">to bring Mac games to iPad and iPhone, </span></span><span class="sentence"><span data-start="3307.0">setting the stage for a huge opportunity to bring your games to even more players. </span></span><span class="sentence"><span data-start="3313.0">In fact, there's no other gaming platform in the world </span></span><span class="sentence"><span data-start="3316.0">that enables developers to bring games like "Death Stranding: Director's Cut" </span></span><span class="sentence"><span data-start="3319.0">to well over a hundred million console-level devices, </span></span><span class="sentence"><span data-start="3323.0">spanning phones to personal computers. </span></span><span class="sentence"><span data-start="3326.0">To help you do the same, Game Porting Toolkit 2 includes </span></span><span class="sentence"><span data-start="3329.0">helpful code examples to accelerate your development </span></span><span class="sentence"><span data-start="3332.0">by taking you through essential steps, </span></span><span class="sentence"><span data-start="3334.0">like how to convert your various gaming subsystems, </span></span><span class="sentence"><span data-start="3336.0">and how to build your shaders once and deploy everywhere. </span></span><span class="sentence"><span data-start="3339.0">Game Porting Toolkit 2 also helps you deliver a great user experience </span></span><span class="sentence"><span data-start="3343.0">with an expanded set of human interface guidelines </span></span><span class="sentence"><span data-start="3346.0">to take full advantage of Apple hardware. </span></span><span class="sentence"><span data-start="3349.0">It also covers important topics, </span></span><span class="sentence"><span data-start="3351.0">such as how to best streamline downloads and installation, </span></span><span class="sentence"><span data-start="3354.0">adapting your game's UI for various display sizes, </span></span><span class="sentence"><span data-start="3357.0">and creating easy-to-use touch controls that best fit the style of your game. </span></span><span class="sentence"><span data-start="3362.0">With key improvements to Metal and an updated collection of tools </span></span><span class="sentence"><span data-start="3366.0">across the most important phases of game development, </span></span><span class="sentence"><span data-start="3368.0">Game Porting Toolkit 2 makes it easier than ever </span></span><span class="sentence"><span data-start="3372.0">to create amazing games on Apple platforms. </span></span><span class="sentence"><span data-start="3374.0">All of the latest OS releases are packed with so many new features </span></span><span class="sentence"><span data-start="3378.0">to help you create amazing experiences that are only possible with Apple devices. </span></span><span class="sentence"><span data-start="3383.0">And Vision Pro has taken this to a whole new level. </span></span><span class="sentence"><span data-start="3386.0">Here's En to cover what's new in visionOS. </span></span><span class="sentence"><span data-start="3390.0">En Kelly: Since Apple Vision Pro was announced at WWDC last year, </span></span><span class="sentence"><span data-start="3394.0">we have been thrilled with the enthusiasm from the developer community! </span></span><span class="sentence"><span data-start="3397.0">Developers from across the world </span></span><span class="sentence"><span data-start="3399.0">have been building incredible spatial apps for visionOS. </span></span><span class="sentence"><span data-start="3402.0">Within the first few days of availability, </span></span><span class="sentence"><span data-start="3405.0">there were already over 1,000 apps on the App Store! </span></span><span class="sentence"><span data-start="3409.0">Some of these developers started by recompiling their iOS and iPadOS apps </span></span><span class="sentence"><span data-start="3413.0">to quickly get the visionOS spatial UI layout </span></span><span class="sentence"><span data-start="3416.0">and then built upon it. </span></span><span class="sentence"><span data-start="3418.0">For example, djay started with their SwiftUI-based iPad app, </span></span><span class="sentence"><span data-start="3422.0">easily recompiled to run on visionOS, </span></span><span class="sentence"><span data-start="3425.0">and then extended it for spatial computing, </span></span><span class="sentence"><span data-start="3428.0">and it is a great experience! </span></span><span class="sentence"><span data-start="3430.0">Whether you already have a visionOS app or are new to the platform, </span></span><span class="sentence"><span data-start="3434.0">spatial computing provides incredible opportunities for your apps. </span></span><span class="sentence"><span data-start="3438.0">visionOS is built on the foundation of the decades of engineering innovation </span></span><span class="sentence"><span data-start="3442.0">in macOS, iOS, and iPadOS. </span></span><span class="sentence"><span data-start="3446.0">The tools and many of the frameworks you use are common across these platforms, </span></span><span class="sentence"><span data-start="3450.0">which means you can write a line of code just once and use it on all platforms! </span></span><span class="sentence"><span data-start="3455.0">SwiftUI, RealityKit, and ARKit are at the core of developing </span></span><span class="sentence"><span data-start="3459.0">the best spatial apps for visionOS. </span></span><span class="sentence"><span data-start="3462.0">ARKit is a core framework for AR experiences across platforms, </span></span><span class="sentence"><span data-start="3467.0">and powers spatial experiences that have an even deeper interaction </span></span><span class="sentence"><span data-start="3471.0">and understanding of the world around the user. </span></span><span class="sentence"><span data-start="3474.0">And this is powerful, because if your app uses one of these frameworks today, </span></span><span class="sentence"><span data-start="3478.0">you are already well on your way to a great spatial computing app! </span></span><span class="sentence"><span data-start="3482.0">We are excited to share details about how visionOS 2 allows creation of apps </span></span><span class="sentence"><span data-start="3487.0">with richer spatial experiences </span></span><span class="sentence"><span data-start="3489.0">that take full advantage of depth and space. </span></span><span class="sentence"><span data-start="3492.0">With the introduction of Spatial Computing, </span></span><span class="sentence"><span data-start="3494.0">we created a new type of SwiftUI scene, called a volume. </span></span><span class="sentence"><span data-start="3498.0">Volumes are great for adding 3D objects and scenes </span></span><span class="sentence"><span data-start="3501.0">with rich interactions to an app. </span></span><span class="sentence"><span data-start="3502.0">Apps can be run side-by-side, and give you a real sense </span></span><span class="sentence"><span data-start="3506.0">of the size and scale of the virtual objects.</p><p></span></span><span class="sentence"><span data-start="3511.0">This is a core part of spatial computing, </span></span><span class="sentence"><span data-start="3513.0">taking Vision Pro's groundbreaking spatial multitasking to the next level. </span></span><span class="sentence"><span data-start="3519.0">With visionOS 2, it is now easy to resize your volume. </span></span><span class="sentence"><span data-start="3523.0">Just like with a window, you use the SwiftUI scene modifier </span></span><span class="sentence"><span data-start="3526.0">windowResizability to set your volume's size </span></span><span class="sentence"><span data-start="3529.0">to be just right for your content. </span></span><span class="sentence"><span data-start="3532.0">And if it's not just right, users can now resize volumes themselves. </span></span><span class="sentence"><span data-start="3536.0">You'll also have the ability to choose if you want your volume </span></span><span class="sentence"><span data-start="3539.0">to have a fixed or dynamic scale, so that when the 3D object </span></span><span class="sentence"><span data-start="3543.0">moves away from the user, it either appears constant in size </span></span><span class="sentence"><span data-start="3546.0">or gets smaller as it moves away, just as a real world object would appear. </span></span><span class="sentence"><span data-start="3551.0">visionOS allows ornaments to be affixed to volumes. </span></span><span class="sentence"><span data-start="3555.0">This is great for controls, additional information, or really any UI. </span></span><span class="sentence"><span data-start="3559.0">You now have even more flexibility to place ornaments anywhere </span></span><span class="sentence"><span data-start="3563.0">along the edge of your volume, giving you the freedom </span></span><span class="sentence"><span data-start="3565.0">to create your volume's interface in new and clever ways. </span></span><span class="sentence"><span data-start="3569.0">These ornaments, as well as your app's chrome and content </span></span><span class="sentence"><span data-start="3572.0">can also dynamically move, </span></span><span class="sentence"><span data-start="3574.0">adjusting to face the user as they walk around the space. </span></span><span class="sentence"><span data-start="3577.0">You can see the ornaments move, as well as the character, </span></span><span class="sentence"><span data-start="3580.0">in response to the position of the user! </span></span><span class="sentence"><span data-start="3583.0">We've given some developers an early look at these Volumetric APIs </span></span><span class="sentence"><span data-start="3587.0">like "1640" that leverages volume resizing APIs, </span></span><span class="sentence"><span data-start="3591.0">"Dear Reality" that takes advantage of how ornaments change position </span></span><span class="sentence"><span data-start="3595.0">based on the user's location, </span></span><span class="sentence"><span data-start="3600.0">and "Rezzil" which shows how these new volumetric features can come together </span></span><span class="sentence"><span data-start="3604.0">to provide an incredible experience for real-time game analysis, </span></span><span class="sentence"><span data-start="3607.0">complete with other apps running side by side. </span></span><span class="sentence"><span data-start="3612.0">Apple Vision Pro helps users connect with their friends and family </span></span><span class="sentence"><span data-start="3615.0">through shared experiences together with SharePlay apps. </span></span><span class="sentence"><span data-start="3619.0">To facilitate even more shared apps, we made TabletopKit, </span></span><span class="sentence"><span data-start="3623.0">a framework for easy development of collaborative experiences </span></span><span class="sentence"><span data-start="3626.0">centered around a table. </span></span><span class="sentence"><span data-start="3628.0">TabletopKit does the heavy lifting </span></span><span class="sentence"><span data-start="3630.0">that handles manipulating cards and pieces, </span></span><span class="sentence"><span data-start="3632.0">placement and layout, and defining game boards. </span></span><span class="sentence"><span data-start="3635.0">And it also works seamlessly with spatial Personas and SharePlay, </span></span><span class="sentence"><span data-start="3639.0">enabling social games for users to play together! </span></span><span class="sentence"><span data-start="3642.0">TabletopKit integrates with familiar frameworks like GroupActivities, </span></span><span class="sentence"><span data-start="3646.0">RealityKit, and SwiftUI, allowing you to quickly get an experience </span></span><span class="sentence"><span data-start="3649.0">up and running. </span></span><span class="sentence"><span data-start="3651.0">The developer behind "Checkmate Chronicles" did just that, </span></span><span class="sentence"><span data-start="3654.0">creating a compelling game board experience using this new framework! </span></span><span class="sentence"><span data-start="3658.0">visionOS 2 doesn't stop there. </span></span><span class="sentence"><span data-start="3661.0">There are brand-new Enterprise APIs that provide access </span></span><span class="sentence"><span data-start="3664.0">to spatial barcode scanning, low latency external camera streaming, and more. </span></span><span class="sentence"><span data-start="3668.0">These will enable specific workflow use cases </span></span><span class="sentence"><span data-start="3672.0">to take advantage of spatial computing. </span></span><span class="sentence"><span data-start="3674.0">We have made updates to input on Vision Pro. </span></span><span class="sentence"><span data-start="3677.0">You can now decide if you want the user's hands to appear </span></span><span class="sentence"><span data-start="3680.0">in front of or behind the content, </span></span><span class="sentence"><span data-start="3682.0">giving you even more creativity in your app experience. </span></span><span class="sentence"><span data-start="3685.0">We have significantly extended the fidelity </span></span><span class="sentence"><span data-start="3688.0">of our Scene Understanding capabilities. </span></span><span class="sentence"><span data-start="3690.0">Planes can now be detected in all orientations, </span></span><span class="sentence"><span data-start="3693.0">and allow anchoring objects on surfaces in your surroundings. </span></span><span class="sentence"><span data-start="3697.0">We have added the concept of Room Anchors that consider </span></span><span class="sentence"><span data-start="3700.0">the user's surroundings on a per room basis. </span></span><span class="sentence"><span data-start="3702.0">You can even detect a user's movement across rooms. </span></span><span class="sentence"><span data-start="3706.0">And we have a new Object Tracking API for visionOS </span></span><span class="sentence"><span data-start="3709.0">that allows you to attach content </span></span><span class="sentence"><span data-start="3711.0">to individual objects found around the user. </span></span><span class="sentence"><span data-start="3714.0">This new functionality allows you to attach virtual content </span></span><span class="sentence"><span data-start="3717.0">like instructions to a physical object for new dimensions of interactivity. </span></span><span class="sentence"><span data-start="3722.0">We have made it even easier to get started with spatial computing </span></span><span class="sentence"><span data-start="3725.0">by providing more samples and documentation </span></span><span class="sentence"><span data-start="3728.0">for the visionOS platform. </span></span><span class="sentence"><span data-start="3729.0">The future of spatial computing is exciting, </span></span><span class="sentence"><span data-start="3733.0">and we encourage you to be a part of the story with your own visionOS app. </span></span><span class="sentence"><span data-start="3737.0">Now, over to Josh. </span></span><span class="sentence"><span data-start="3741.0">Josh: Apple builds products that bring together hardware, software, </span></span><span class="sentence"><span data-start="3744.0">and services to create truly delightful experiences for our users. </span></span><span class="sentence"><span data-start="3749.0">Our consistent motivation is a simple one: we want to build the most advanced </span></span><span class="sentence"><span data-start="3753.0">and innovative platforms so that you can create the best apps in the world. </span></span><span class="sentence"><span data-start="3757.0">We want to help you build highly integrated apps </span></span><span class="sentence"><span data-start="3760.0">that feel like natural extensions of the user's device, </span></span><span class="sentence"><span data-start="3762.0">harnessing its hardware and software to the fullest. </span></span><span class="sentence"><span data-start="3766.0">And with every release, we enhance our platforms </span></span><span class="sentence"><span data-start="3768.0">with this motivation in mind. </span></span><span class="sentence"><span data-start="3770.0">When you build your apps with Apple's SDKs, </span></span><span class="sentence"><span data-start="3772.0">you get the fastest possible performance. </span></span><span class="sentence"><span data-start="3775.0">You're using the same tools and frameworks that we use, </span></span><span class="sentence"><span data-start="3778.0">with APIs that have been fine-tuned </span></span><span class="sentence"><span data-start="3780.0">and optimized for our platforms and products. </span></span><span class="sentence"><span data-start="3784.0">Those same APIs give you direct access to integrate </span></span><span class="sentence"><span data-start="3787.0">with all the platform features that users love, </span></span><span class="sentence"><span data-start="3790.0">like interactive widgets and controls, </span></span><span class="sentence"><span data-start="3792.0">accessibility and dynamic type, and of course Apple Intelligence. </span></span><span class="sentence"><span data-start="3797.0">Integrating deeply with the platform means making your app available in more places, </span></span><span class="sentence"><span data-start="3802.0">so users can interact with it in the way that work best for them. </span></span><span class="sentence"><span data-start="3805.0">Apple's SDKs also make it easy to build apps </span></span><span class="sentence"><span data-start="3808.0">with a familiar look and feel that is shared across the platforms. </span></span><span class="sentence"><span data-start="3812.0">This benefits your users, since they can reuse </span></span><span class="sentence"><span data-start="3815.0">the interactions they already know from other apps. </span></span><span class="sentence"><span data-start="3818.0">The SDKs also share many common frameworks, </span></span><span class="sentence"><span data-start="3821.0">so most code can express common behaviors across devices, </span></span><span class="sentence"><span data-start="3825.0">while still enabling you to tailor the results when needed. </span></span><span class="sentence"><span data-start="3828.0">And Apple's SDKs give you all-in-one tooling, </span></span><span class="sentence"><span data-start="3831.0">providing everything you need to build your apps. </span></span><span class="sentence"><span data-start="3834.0">You can use Swift, SwiftUI, and Xcode </span></span><span class="sentence"><span data-start="3837.0">to build any experience you want, no matter which devices you're targeting. </span></span><span class="sentence"><span data-start="3842.0">All of these benefits are available when you use Apple's native SDKs directly. </span></span><span class="sentence"><span data-start="3847.0">Or, put more simply, the best apps are built with native SDKs. </span></span><span class="sentence"><span data-start="3851.0">We're so excited to have our SDKs in your hands, </span></span><span class="sentence"><span data-start="3855.0">and in the hands of millions of other developers, </span></span><span class="sentence"><span data-start="3858.0">so that you can build on top of the most advanced </span></span><span class="sentence"><span data-start="3860.0">and innovative platforms in the world, and build the best possible apps. </span></span><span class="sentence"><span data-start="3865.0">Now back to Susan. </span></span><span class="sentence"><span data-start="3868.0">Susan: So that's a closer look at some of our biggest developer announcements. </span></span><span class="sentence"><span data-start="3872.0">Apple Intelligence is the personal intelligence system </span></span><span class="sentence"><span data-start="3876.0">that puts powerful generative models right at the core of your iPhone, </span></span><span class="sentence"><span data-start="3881.0">iPad, and Mac, with new features for creating </span></span><span class="sentence"><span data-start="3884.0">language and images in apps along with major updates to Siri. </span></span><span class="sentence"><span data-start="3888.0">It draws on personal context to deliver intelligence </span></span><span class="sentence"><span data-start="3892.0">that's helpful and relevant, </span></span><span class="sentence"><span data-start="3894.0">and it's built with privacy from the ground up. </span></span><span class="sentence"><span data-start="3897.0">Swift is expanding to Windows and Linux, </span></span><span class="sentence"><span data-start="3901.0">and Swift Assist can transform your ideas into code </span></span><span class="sentence"><span data-start="3905.0">so you can focus on higher-level problems. </span></span><span class="sentence"><span data-start="3908.0">visionOS 2 elevates spatial computing even further </span></span><span class="sentence"><span data-start="3912.0">with enhanced support for volumetric apps, powerful new enterprise APIs, </span></span><span class="sentence"><span data-start="3917.0">and new technologies that make it easier to build shared apps and games. </span></span><span class="sentence"><span data-start="3923.0">And Game Porting Toolkit 2 makes it possible to bring </span></span><span class="sentence"><span data-start="3926.0">your most intensive games to Mac, iPad, and iPhone. </span></span><span class="sentence"><span data-start="3931.0">Explore these topics and more with over 100 in-depth sessions </span></span><span class="sentence"><span data-start="3936.0">releasing throughout the week of WWDC. </span></span><span class="sentence"><span data-start="3939.0">You can get your questions answered by Apple engineers </span></span><span class="sentence"><span data-start="3942.0">and other Apple experts all week in online labs and consultations </span></span><span class="sentence"><span data-start="3946.0">and in the Apple Developer Forums, </span></span><span class="sentence"><span data-start="3948.0">where you can also connect with the developer community! </span></span><span class="sentence"><span data-start="3952.0">You can access all this via the Developer app and Developer website. </span></span><span class="sentence"><span data-start="3957.0">We are grateful that you are part of the Apple developer community, </span></span><span class="sentence"><span data-start="3961.0">and we're excited to see you bring these technologies to life </span></span><span class="sentence"><span data-start="3965.0">in your amazing apps and games. </span></span><span class="sentence"><span data-start="3968.0">Have a great week!</span></span></p> </section> </li> <!-- sample code --> <li class="supplement sample-code" data-supplement-id="sample-code"> <section> <ul class="no-bullet padding-top-small margin-bottom"> </ul> </section> </li> <!-- search --> <li class="supplement search active" data-supplement-id="search"> <section class="transcript-results-summary"> <p class="message smaller lighter"><!-- to be populated --></p> <p class="instructions smaller lighter text-center">Looking for something specific? Enter a topic above and jump straight to the good stuff.</p> <p class="error smaller lighter italic text-center" style="display:none;">An error occurred when submitting your query. Please check your Internet connection and try again.</p> </section> <!-- search results --> <ul class="transcript-results row"> </ul> </li> </ul> </section> </section> </section> <input id="analytics-meta" type="hidden" data-event-name="WWDC24" data-event-id="wwdc2024-102" data-session-id="102" data-video-name="Platforms State of the Union" data-session-response-id=""> </main> <link rel="stylesheet" href="/assets/styles/footer.dist.css?17182448067"> <footer id="footer" class="footer" role="contentinfo" aria-labelledby="footer-label"> <div class="footer-content"> <h2 class="footer-label" id="footer-label">Developer Footer</h2> <developer-breadcrumbs> <li class="footer-breadcrumbs-item"><a href="/videos/">Videos</a></li> <li class="footer-breadcrumbs-item"><a href="/videos/wwdc2024/">WWDC24</a></li> <li class="footer-breadcrumbs-item">Platforms State of the Union</li> </developer-breadcrumbs> <nav class="footer-directory" aria-label="Apple Developer Directory" role="navigation"> <!--googleoff: all--> <div class="footer-directory-column"> <input class="footer-directory-column-section-state" type="checkbox" id="footer-directory-column-section-state-platform" /> <div class="footer-directory-column-section"> <label class="footer-directory-column-section-label" for="footer-directory-column-section-state-platform"> <h3 class="footer-directory-column-section-title">Platforms</h3> </label> <a href="#footer-directory-column-section-state-platform" class="footer-directory-column-section-anchor footer-directory-column-section-anchor-open"> <span class="footer-directory-column-section-anchor-label">Open Menu</span> </a> <a href="#" class="footer-directory-column-section-anchor footer-directory-column-section-anchor-close"> <span class="footer-directory-column-section-anchor-label">Close Menu</span> </a> <ul class="footer-directory-column-section-list"> <li class="footer-directory-column-section-item"><a class="footer-directory-column-section-link" href="/ios/">iOS</a></li> <li class="footer-directory-column-section-item"><a class="footer-directory-column-section-link" href="/ipados/">iPadOS</a></li> <li class="footer-directory-column-section-item"><a class="footer-directory-column-section-link" href="/macos/">macOS</a></li> <li class="footer-directory-column-section-item"><a class="footer-directory-column-section-link" href="/tvos/">tvOS</a></li> <li class="footer-directory-column-section-item"><a class="footer-directory-column-section-link" href="/visionos/">visionOS</a></li> <li class="footer-directory-column-section-item"><a class="footer-directory-column-section-link" href="/watchos/">watchOS</a></li> </ul> </div> <input class="footer-directory-column-section-state" type="checkbox" id="footer-directory-column-section-state-tools" /> <div class="footer-directory-column-section"> <label class="footer-directory-column-section-label" for="footer-directory-column-section-state-tools"> <h3 class="footer-directory-column-section-title">Tools</h3> </label> <a href="#footer-directory-column-section-state-tools" class="footer-directory-column-section-anchor footer-directory-column-section-anchor-open"> <span class="footer-directory-column-section-anchor-label">Open Menu</span> </a> <a href="#" class="footer-directory-column-section-anchor footer-directory-column-section-anchor-close"> <span class="footer-directory-column-section-anchor-label">Close Menu</span> </a> <ul class="footer-directory-column-section-list"> <li class="footer-directory-column-section-item"><a class="footer-directory-column-section-link" href="/swift/">Swift</a></li> <li class="footer-directory-column-section-item"><a class="footer-directory-column-section-link" href="/swiftui/">SwiftUI</a></li> <li class="footer-directory-column-section-item"><a class="footer-directory-column-section-link" href="/swift-playground/">Swift Playground</a></li> <li class="footer-directory-column-section-item"><a class="footer-directory-column-section-link" href="/testflight/">TestFlight</a></li> <li class="footer-directory-column-section-item"><a class="footer-directory-column-section-link" href="/xcode/">Xcode</a></li> <li class="footer-directory-column-section-item"><a class="footer-directory-column-section-link" href="/xcode-cloud/">Xcode Cloud</a></li> <li class="footer-directory-column-section-item"><a class="footer-directory-column-section-link" href="/sf-symbols/">SF Symbols</a></li> </ul> </div> </div> <div class="footer-directory-column"> <input class="footer-directory-column-section-state" type="checkbox" id="footer-directory-column-section-state-topics" /> <div class="footer-directory-column-section"> <label class="footer-directory-column-section-label" for="footer-directory-column-section-state-topics"> <h3 class="footer-directory-column-section-title">Topics &amp; Technologies</h3> </label> <a href="#footer-directory-column-section-state-topics" class="footer-directory-column-section-anchor footer-directory-column-section-anchor-open"> <span class="footer-directory-column-section-anchor-label">Open Menu</span> </a> <a href="#" class="footer-directory-column-section-anchor footer-directory-column-section-anchor-close"> <span class="footer-directory-column-section-anchor-label">Close Menu</span> </a> <ul class="footer-directory-column-section-list"> <li class="footer-directory-column-section-item"><a class="footer-directory-column-section-link" href="/accessibility/">Accessibility</a></li> <li class="footer-directory-column-section-item"><a class="footer-directory-column-section-link" href="/accessories/">Accessories</a></li> <li class="footer-directory-column-section-item"><a class="footer-directory-column-section-link" href="/app-extensions/">App Extensions</a></li> <li class="footer-directory-column-section-item"><a class="footer-directory-column-section-link" href="/app-store/">App Store</a></li> <li class="footer-directory-column-section-item"><a class="footer-directory-column-section-link" href="/audio/">Audio &amp; Video</a></li> <li class="footer-directory-column-section-item"><a class="footer-directory-column-section-link" href="/augmented-reality/">Augmented Reality</a></li> <li class="footer-directory-column-section-item"><a class="footer-directory-column-section-link" href="/design/">Design</a></li> <li class="footer-directory-column-section-item"><a class="footer-directory-column-section-link" href="/distribute/">Distribution</a></li> <li class="footer-directory-column-section-item"><a class="footer-directory-column-section-link" href="/education/">Education</a></li> <li class="footer-directory-column-section-item"><a class="footer-directory-column-section-link" href="/fonts/">Fonts</a></li> <li class="footer-directory-column-section-item"><a class="footer-directory-column-section-link" href="/games/">Games</a></li> <li class="footer-directory-column-section-item"><a class="footer-directory-column-section-link" href="/health-fitness/">Health &amp; Fitness</a></li> <li class="footer-directory-column-section-item"><a class="footer-directory-column-section-link" href="/in-app-purchase/">In-App Purchase</a></li> <li class="footer-directory-column-section-item"><a class="footer-directory-column-section-link" href="/localization/">Localization</a></li> <li class="footer-directory-column-section-item"><a class="footer-directory-column-section-link" href="/maps/">Maps &amp; Location</a></li> <li class="footer-directory-column-section-item"><a class="footer-directory-column-section-link" href="/machine-learning/">Machine Learning</a></li> <li class="footer-directory-column-section-item"><a class="footer-directory-column-section-link" href="https://opensource.apple.com">Open Source</a></li> <li class="footer-directory-column-section-item"><a class="footer-directory-column-section-link" href="/security/">Security</a></li> <li class="footer-directory-column-section-item"><a class="footer-directory-column-section-link" href="/safari/">Safari &amp; Web</a></li> </ul> </div> </div> <div class="footer-directory-column"> <input class="footer-directory-column-section-state" type="checkbox" id="footer-directory-column-section-state-resources" /> <div class="footer-directory-column-section"> <label class="footer-directory-column-section-label" for="footer-directory-column-section-state-resources"> <h3 class="footer-directory-column-section-title">Resources</h3> </label> <a href="#footer-directory-column-section-state-resources" class="footer-directory-column-section-anchor footer-directory-column-section-anchor-open"> <span class="footer-directory-column-section-anchor-label">Open Menu</span> </a> <a href="#" class="footer-directory-column-section-anchor footer-directory-column-section-anchor-close"> <span class="footer-directory-column-section-anchor-label">Close Menu</span> </a> <ul class="footer-directory-column-section-list"> <li class="footer-directory-column-section-item"><a class="footer-directory-column-section-link" href="/documentation/">Documentation</a></li> <li class="footer-directory-column-section-item"><a class="footer-directory-column-section-link" href="/learn/">Tutorials</a></li> <li class="footer-directory-column-section-item"><a class="footer-directory-column-section-link" href="/download/">Downloads</a></li> <li class="footer-directory-column-section-item"><a class="footer-directory-column-section-link" href="/forums/">Forums</a></li> <li class="footer-directory-column-section-item"><a class="footer-directory-column-section-link" href="/videos/">Videos</a></li> </ul> </div> <input class="footer-directory-column-section-state" type="checkbox" id="footer-directory-column-section-state-support" /> <div class="footer-directory-column-section"> <label class="footer-directory-column-section-label" for="footer-directory-column-section-state-support"> <h3 class="footer-directory-column-section-title">Support</h3> </label> <a href="#footer-directory-column-section-state-support" class="footer-directory-column-section-anchor footer-directory-column-section-anchor-open"> <span class="footer-directory-column-section-anchor-label">Open Menu</span> </a> <a href="#" class="footer-directory-column-section-anchor footer-directory-column-section-anchor-close"> <span class="footer-directory-column-section-anchor-label">Close Menu</span> </a> <ul class="footer-directory-column-section-list"> <li class="footer-directory-column-section-item"><a class="footer-directory-column-section-link" href="/support/articles/">Support Articles</a></li> <li class="footer-directory-column-section-item"><a class="footer-directory-column-section-link" href="/contact/">Contact Us</a></li> <li class="footer-directory-column-section-item"><a class="footer-directory-column-section-link" href="/bug-reporting/">Bug Reporting</a></li> <li class="footer-directory-column-section-item"><a class="footer-directory-column-section-link" href="/system-status/">System Status</a></li> </ul> </div> <input class="footer-directory-column-section-state" type="checkbox" id="footer-directory-column-section-state-account" /> <div class="footer-directory-column-section"> <label class="footer-directory-column-section-label" for="footer-directory-column-section-state-account"> <h3 class="footer-directory-column-section-title">Account</h3> </label> <a href="#footer-directory-column-section-state-account" class="footer-directory-column-section-anchor footer-directory-column-section-anchor-open"> <span class="footer-directory-column-section-anchor-label">Open Menu</span> </a> <a href="#" class="footer-directory-column-section-anchor footer-directory-column-section-anchor-close"> <span class="footer-directory-column-section-anchor-label">Close Menu</span> </a> <ul class="footer-directory-column-section-list"> <li class="footer-directory-column-section-item"><a class="footer-directory-column-section-link" href="/account/">Apple Developer</a></li> <li class="footer-directory-column-section-item"><a class="footer-directory-column-section-link" href="https://appstoreconnect.apple.com/">App Store Connect</a></li> <li class="footer-directory-column-section-item"><a class="footer-directory-column-section-link" href="/account/ios/certificate/">Certificates, IDs, &amp; Profiles</a></li> <li class="footer-directory-column-section-item"><a class="footer-directory-column-section-link" href="https://feedbackassistant.apple.com/">Feedback Assistant</a></li> </ul> </div> </div> <div class="footer-directory-column"> <input class="footer-directory-column-section-state" type="checkbox" id="footer-directory-column-section-state-programs" /> <div class="footer-directory-column-section"> <label class="footer-directory-column-section-label" for="footer-directory-column-section-state-programs"> <h3 class="footer-directory-column-section-title">Programs</h3> </label> <a href="#footer-directory-column-section-state-programs" class="footer-directory-column-section-anchor footer-directory-column-section-anchor-open"> <span class="footer-directory-column-section-anchor-label">Open Menu</span> </a> <a href="#" class="footer-directory-column-section-anchor footer-directory-column-section-anchor-close"> <span class="footer-directory-column-section-anchor-label">Close Menu</span> </a> <ul class="footer-directory-column-section-list"> <li class="footer-directory-column-section-item"><a class="footer-directory-column-section-link" href="/programs/">Apple Developer Program</a></li> <li class="footer-directory-column-section-item"><a class="footer-directory-column-section-link" href="/programs/enterprise/">Apple Developer Enterprise Program</a></li> <li class="footer-directory-column-section-item"><a class="footer-directory-column-section-link" href="/app-store/small-business-program/">App Store Small Business Program</a></li> <li class="footer-directory-column-section-item"><a class="footer-directory-column-section-link" href="https://mfi.apple.com/">MFi Program</a></li> <li class="footer-directory-column-section-item"><a class="footer-directory-column-section-link" href="/programs/news-partner/">News Partner Program</a></li> <li class="footer-directory-column-section-item"><a class="footer-directory-column-section-link" href="/programs/video-partner/">Video Partner Program</a></li> <li class="footer-directory-column-section-item"><a class="footer-directory-column-section-link" href="/security-bounty/">Security Bounty Program</a></li> <li class="footer-directory-column-section-item"><a class="footer-directory-column-section-link" href="/programs/security-research-device/">Security Research Device Program</a></li> </ul> </div> <input class="footer-directory-column-section-state" type="checkbox" id="footer-directory-column-section-state-events" /> <div class="footer-directory-column-section"> <label class="footer-directory-column-section-label" for="footer-directory-column-section-state-events"> <h3 class="footer-directory-column-section-title">Events</h3> </label> <a href="#footer-directory-column-section-state-events" class="footer-directory-column-section-anchor footer-directory-column-section-anchor-open"> <span class="footer-directory-column-section-anchor-label">Open Menu</span> </a> <a href="#" class="footer-directory-column-section-anchor footer-directory-column-section-anchor-close"> <span class="footer-directory-column-section-anchor-label">Close Menu</span> </a> <ul class="footer-directory-column-section-list"> <li class="footer-directory-column-section-item"><a class="footer-directory-column-section-link" href="/events/">Meet with Apple</a></li> <li class="footer-directory-column-section-item"><a class="footer-directory-column-section-link" href="/events/developer-centers/">Apple Developer Centers</a></li> <li class="footer-directory-column-section-item"><a class="footer-directory-column-section-link" href="/app-store/app-store-awards/">App Store Awards</a></li> <li class="footer-directory-column-section-item"><a class="footer-directory-column-section-link" href="/design/awards/">Apple Design Awards</a></li> <li class="footer-directory-column-section-item"><a class="footer-directory-column-section-link" href="/academies/">Apple Developer Academies</a></li> <li class="footer-directory-column-section-item"><a class="footer-directory-column-section-link" href="/wwdc/">WWDC</a></li> </ul> </div> </div> <!--googleon: all--> </nav> <section class="footer-mini" vocab="http://schema.org/" typeof="Organization"> <div class="footer-mini-news"> <div class="copy"> Get the <a href="https://apps.apple.com/us/app/apple-developer/id640199958">Apple Developer app</a>. </div> <div class="content"> <div class="color-scheme-toggle" role="radiogroup" tabindex="0" aria-label="Select a color scheme preference"> <label data-color-scheme-option="light"> <input type="radio" value="light" autocomplete="off" onchange="window.setPreferredColorScheme(event.target.value)" /> <div class="text">Light</div> </label> <label data-color-scheme-option="dark"> <input type="radio" value="dark" autocomplete="off" onchange="window.setPreferredColorScheme(event.target.value)" /> <div class="text">Dark</div> </label> <label data-color-scheme-option="auto"> <input type="radio" value="auto" autocomplete="off" onchange="window.setPreferredColorScheme(event.target.value)" /> <div class="text">Auto</div> </label> </div> <script async src="/assets/scripts/color-scheme-toggle.js"></script> </div> </div> <link rel="stylesheet" href="/assets/styles/language-dropdown.css?17182448067"> <div class="language-dropdown dropdown-container legacy-form hidden"> <select class="dropdown" aria-label="Language Dropdown"></select> <span class="dropdown-icon icon icon-chevrondown" aria-hidden="true"></span> </div> <script src="/assets/scripts/language-dropdown.js?17182448067"></script> <div class="footer-mini-legal"> <div class="footer-mini-legal-copyright">Copyright © 2025 <a href="https://www.apple.com">Apple Inc.</a> All rights reserved.</div> <div class="footer-mini-legal-links"> <a class="footer-mini-legal-link" href="https://www.apple.com/legal/internet-services/terms/site.html" class="first">Terms of Use</a> <a class="footer-mini-legal-link" href="https://www.apple.com/legal/privacy/">Privacy Policy</a> <a class="footer-mini-legal-link" href="/support/terms/">Agreements and Guidelines</a> </div> </div> </section> </div> </footer> <script src="/assets/scripts/params.js"></script> <script src="/assets/scripts/watchable.js"></script> <script src="/assets/scripts/timeout.js"></script> <script src="/videos/scripts/play/play.js?38162550021"></script> <script src="/videos/scripts/hls/rtc.min.js?59182451067"></script> <script src="/videos/scripts/hls/hls.min.js?25152512021"></script> </body> </html>

Pages: 1 2 3 4 5 6 7 8 9 10